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