diff --git a/.gitignore b/.gitignore
index 362d1995..a6a5f0e1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -116,3 +116,6 @@ org.eclipse.core.resources.prefs
# Various junk and temp files
.DS_Store
+
+#GitHub token
+github_utils.py
diff --git a/src/app/templates/app/submit_new_license.html b/src/app/templates/app/submit_new_license.html
index 14998449..50e35546 100644
--- a/src/app/templates/app/submit_new_license.html
+++ b/src/app/templates/app/submit_new_license.html
@@ -112,7 +112,7 @@
@@ -162,9 +162,37 @@
timeout: 600000,
data: form,
success: function (data) {
- console.log("SUCCESS : ", data);
- $("#submitbutton").text("Submit");
- $("#submitbutton").prop('disabled', false);
+ var githubCode = data.statusCode;
+ if(githubCode == '201'){
+ var successMessage = "The license request has been successfully submitted.";
+ $("#messages").html('
×Success! '+ successMessage +'
');
+ setTimeout(function() {
+ $("#messages").html("");
+ }, 7000);
+ }
+ else{
+ var warningMessage = "Please note that there was a problem opening the issue for the SPDX legal team. Please email spdx-legal@lists.spdx.org with SPDX ID for the license you are submitting";
+ $("#messages").html('×Warning! '+ warningMessage +'
');
+ setTimeout(function() {
+ $("#messages").html("");
+ }, 7000);
+ }
+ $("#fullname").val("");
+ $("#shortIdentifier").val("");
+ $("#sourceUrl").val("");
+ $("#osiApproved").val(0);
+ $("#notes").val("");
+ $("#licenseHeader").val("");
+ $("#text").val("");
+ $("#userEmail").val("");
+ var sources = $('[id="sourceUrl"]');
+ if(sources.length > 1){
+ for (var i = 3; i < sources.length + 2; i++) {
+ $("#addSourceUrl").parent().parent().children(i.toString()).remove();
+ }
+ }
+ $("#submitbutton").text("Submit");
+ $("#submitbutton").prop('disabled', false);
},
error: function (e) {
console.log("ERROR : ", e);
diff --git a/src/app/utils/__init__.py b/src/app/utils/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/src/app/views.py b/src/app/views.py
index 2b7c6c27..f724673f 100644
--- a/src/app/views.py
+++ b/src/app/views.py
@@ -24,6 +24,7 @@
from django.contrib.auth.models import User
from django.utils.datastructures import MultiValueDictKeyError
from django.contrib.auth.decorators import login_required
+from django.http import JsonResponse
import jpype
from traceback import format_exc
@@ -34,6 +35,7 @@
import datetime
from wsgiref.util import FileWrapper
import os
+from requests import post
from app.models import UserID
from app.forms import UserRegisterForm,UserProfileForm,InfoForm,OrgInfoForm
@@ -41,6 +43,8 @@
from .forms import LicenseRequestForm
from .models import LicenseRequest
+from utils.github_utils import getGithubToken
+
def index(request):
""" View for index
returns index.html template
@@ -63,6 +67,7 @@ def submitNewLicense(request):
""" View for submit new licenses
returns submit_new_license.html template
"""
+ context_dict={}
if request.method == 'POST':
form = LicenseRequestForm(request.POST, auto_id='%s')
if form.is_valid() and request.is_ajax():
@@ -80,10 +85,13 @@ def submitNewLicense(request):
licenseRequest = LicenseRequest(fullname=licenseName,shortIdentifier=licenseIdentifier,
submissionDatetime=now, userEmail=userEmail, xml=xml)
licenseRequest.save()
- form = LicenseRequestForm()
+ statusCode = createIssue(licenseName, licenseIdentifier, licenseSourceUrls, licenseOsi)
+ data = {'statusCode' : str(statusCode)}
+ return JsonResponse(data)
+
else:
form = LicenseRequestForm(auto_id='%s')
- context_dict={'form': form}
+ context_dict['form'] = form
return render(request,
'app/submit_new_license.html', context_dict
)
@@ -103,6 +111,24 @@ def generateLicenseXml(licenseOsi, licenseIdentifier, licenseName, licenseSource
xmlString = ET.tostring(root, encoding='utf8', method='xml')
return xmlString
+def createIssue(licenseName, licenseIdentifier, licenseSourceUrls, licenseOsi):
+ """ View for creating an GitbHub issue
+ when submitting a new license request
+ """
+ myToken = getGithubToken()
+ body = '**1.** License Name: ' + licenseName + '\n**2.** Short identifier: ' + licenseIdentifier + '\n**3.** URL: '
+ for url in licenseSourceUrls:
+ body += url
+ body += '\n'
+ body += '**4.** OSI Approval: ' + licenseOsi
+ title = 'New license request: ' + licenseIdentifier + ' [SPDX-Online-Tools]'
+ payload = {'title' : title, 'body': body, 'labels': ['new license/exception request']}
+ headers = {'Authorization': 'token ' + myToken}
+ url = 'https://api.github.com/repos/spdx/license-list-XML/issues'
+ r = post(url, data=dumps(payload), headers=headers)
+ return r.status_code
+
+
def licenseRequests(request):
""" View for license requests
returns license_requests.html template