summaryrefslogtreecommitdiff
path: root/certificate/views.py
diff options
context:
space:
mode:
authorprashant2016-03-16 18:48:09 +0530
committerprashant2016-03-16 18:48:09 +0530
commit9d3336d75df7534baee27f2140a8e4dbf0637f7c (patch)
tree0e33083a07f16387c135a8d734784f898b1efd9e /certificate/views.py
parent642b5cd19801ae2385b86b8d5f5004f05bb42da8 (diff)
downloadcertificate-generator-9d3336d75df7534baee27f2140a8e4dbf0637f7c.tar.gz
certificate-generator-9d3336d75df7534baee27f2140a8e4dbf0637f7c.tar.bz2
certificate-generator-9d3336d75df7534baee27f2140a8e4dbf0637f7c.zip
added internship certificate
Diffstat (limited to 'certificate/views.py')
-rwxr-xr-x[-rw-r--r--]certificate/views.py330
1 files changed, 329 insertions, 1 deletions
diff --git a/certificate/views.py b/certificate/views.py
index 987e6cf..0814a5d 100644..100755
--- a/certificate/views.py
+++ b/certificate/views.py
@@ -2,7 +2,7 @@ from django.shortcuts import render
from django.http import HttpResponse
from django.shortcuts import render_to_response, redirect
from django.template import RequestContext
-from certificate.models import Scilab_participant, Certificate, Event, Scilab_speaker, Scilab_workshop, Question, Answer, FeedBack, Scipy_participant, Scipy_speaker, Drupal_camp, Tbc_freeeda, Dwsim_participant, Scilab_arduino, Esim_faculty, Scipy_participant_2015, Scipy_speaker_2015
+from certificate.models import Internship_participant, Scilab_participant, Certificate, Event, Scilab_speaker, Scilab_workshop, Question, Answer, FeedBack, Scipy_participant, Scipy_speaker, Drupal_camp, Tbc_freeeda, Dwsim_participant, Scilab_arduino, Esim_faculty, Scipy_participant_2015, Scipy_speaker_2015, OpenFOAM_Symposium_participant_2016, OpenFOAM_Symposium_speaker_2016
import subprocess
import os
from string import Template
@@ -14,6 +14,9 @@ from collections import OrderedDict
def index(request):
return render_to_response('index.html')
+#def internship_certificate_download(request):
+# return render_to_response('internship-certificate-download.html')
+
def download(request):
context = {}
err = ""
@@ -109,6 +112,7 @@ def verification(serial, _type):
certificate.verified += 1
certificate.save()
purpose, year, type = _get_detail(serial_no)
+ print purpose, year, type
if type == 'P':
if purpose == 'DWSIM Workshop':
dwsim_user = Dwsim_participant.objects.get(email=certificate.email)
@@ -125,6 +129,9 @@ def verification(serial, _type):
elif purpose == 'SciPy India':
detail = OrderedDict([('Name', name), ('Event', purpose),
('Days', '14 - 16 December'), ('Year', year)])
+ elif purpose == 'OpenFOAM Symposium':
+ detail = OrderedDict([('Name', name), ('Event', purpose),
+ ('Days', '27 February'), ('Year', year)])
elif purpose == 'DrupalCamp Mumbai':
drupal_user = Drupal_camp.objects.get(email=certificate.email)
DAY = drupal_user.attendance
@@ -148,10 +155,21 @@ def verification(serial, _type):
(name, purpose, year, paper)
if purpose == 'SciPy India':
detail = OrderedDict([('Name', name), ('Event', purpose), ('paper', paper), ('Days', '14 - 16 December'), ('Year', year)])
+ elif purpose == 'OpenFOAM Symposium':
+ detail = OrderedDict([('Name', name), ('Event', purpose), ('paper', paper), ('Days', '27 February'), ('Year', year)])
+ elif purpose == 'FOSSEE Internship':
+ intership_detail = Internship_participant.objects.get(email=certificate.email)
+ user_project_title = Internship_participant.objects.filter(email=certificate.email)
+ context['intern_ship'] = True
+ detail = OrderedDict([('Name', name), ('Internship Completed', 'Yes'),
+ ('Project', intership_detail.project_title), ('Internship Duration', intership_detail.internship_project_duration), ('Superviser Name', intership_detail.superviser_name_detail)])
+ else:
+ detail = '{0} had attended {1} {2}'.format(name, purpose, year)
elif type == 'W':
detail = '{0} had attended workshop on {3} in the {1} {2}'.format\
(name, purpose, year, workshop)
context['serial_key'] = True
+
except Certificate.DoesNotExist:
detail = 'User does not exist'
context["invalidserial"] = 1
@@ -209,6 +227,7 @@ def verify(request, serial_key=None):
return render_to_response('verify.html',{}, ci)
def _get_detail(serial_no):
+ print serial_no
purpose = None
if serial_no[0:3] == 'SLC':
purpose = 'Scilab Conference'
@@ -224,11 +243,17 @@ def _get_detail(serial_no):
purpose = 'Scilab Arduino Workshop'
elif serial_no[0:3] == 'ESM':
purpose = 'eSim Faculty Meet'
+ elif serial_no[0:3] == 'OFC':
+ purpose = 'OpenFOAM Symposium'
+ elif serial_no[0:3] == 'FIC':
+ purpose = 'FOSSEE Internship'
if serial_no[3:5] == '14':
year = '2014'
elif serial_no[3:5] == '15':
year = '2015'
+ elif serial_no[3:5] == '16':
+ year = '2016'
#if serial_no[-1] == 'P':
# type = 'Participant'
@@ -1299,3 +1324,306 @@ def create_scipy_certificate_2015(certificate_path, name, qrcode, type, paper, w
except Exception, e:
error = True
return [None, error]
+
+
+###############################################################################
+# OpenFOAM Symposium 2016
+###############################################################################
+
+def openfoam_symposium_feedback_2016(request):
+ context = {}
+ ci = RequestContext(request)
+ form = FeedBackForm()
+ questions = Question.objects.filter(purpose='OFSC2016')
+ if request.method == 'POST':
+ form = FeedBackForm(request.POST)
+ if form.is_valid():
+ data = form.cleaned_data
+ try:
+ FeedBack.objects.get(email=data['email'].strip(), purpose='OFSC2016')
+ context['message'] = 'You have already submitted the feedback. You can download your certificate.'
+ return render_to_response('openfoam_symposium_download_2016.html', context, ci)
+ except FeedBack.DoesNotExist:
+ feedback = FeedBack()
+ feedback.name = data['name'].strip()
+ feedback.email = data['email'].strip()
+ feedback.purpose = 'OFSC2016'
+ feedback.submitted = True
+ feedback.save()
+ for question in questions:
+ answered = request.POST.get('{0}'.format(question.id), None)
+ answer = Answer()
+ answer.question = question
+ answer.answer = answered.strip()
+ answer.save()
+ feedback.answer.add(answer)
+ feedback.save()
+ context['message'] = ''
+ return render_to_response('openfoam_symposium_download_2016.html', context, ci)
+
+ context['form'] = form
+ context['questions'] = questions
+
+ return render_to_response('openfoam_symposium_feedback_2016.html', context, ci)
+
+
+def openfoam_symposium_download_2016(request):
+ context = {}
+ err = ""
+ ci = RequestContext(request)
+ cur_path = os.path.dirname(os.path.realpath(__file__))
+ certificate_path = '{0}/openfoam_symposium_template_2016/'.format(cur_path)
+
+ if request.method == 'POST':
+ paper = request.POST.get('paper', None)
+ workshop = None
+ email = request.POST.get('email').strip()
+ type = request.POST.get('type')
+ if type == 'P':
+ user = OpenFOAM_Symposium_participant_2016.objects.filter(email=email)
+ if not user:
+ context["notregistered"] = 1
+ return render_to_response('openfoam_symposium_download_2016.html', context, context_instance=ci)
+ else:
+ user = user[0]
+ elif type == 'A':
+ if paper:
+ user = OpenFOAM_Symposium_speaker_2016.objects.filter(email=email, paper=paper)
+ if user:
+ user = [user[0]]
+ else:
+ user = OpenFOAM_Symposium_speaker_2016.objects.filter(email=email)
+ if not user:
+ context["notregistered"] = 1
+ return render_to_response('openfoam_symposium_download_2016.html', context, context_instance=ci)
+ if len(user) > 1:
+ context['user_papers'] = user
+ context['v'] = 'paper'
+ return render_to_response('openfoam_symposium_download_2016.html', context, context_instance=ci)
+ else:
+ user = user[0]
+ paper = user.paper
+ name = user.name
+ purpose = user.purpose
+ year = '16'
+ id = int(user.id)
+ hexa = hex(id).replace('0x','').zfill(6).upper()
+ serial_no = '{0}{1}{2}{3}'.format(purpose, year, hexa, type)
+ serial_key = (hashlib.sha1(serial_no)).hexdigest()
+ file_name = '{0}{1}'.format(email,id)
+ file_name = file_name.replace('.', '')
+ try:
+ old_user = Certificate.objects.get(email=email, serial_no=serial_no)
+ qrcode = 'Verify at: http://fossee.in/certificates/verify/{0} '.format(old_user.short_key)
+ details = {'name': name, 'serial_key': old_user.short_key}
+ certificate = create_openfoam_symposium_certificate_2016(certificate_path, details, qrcode, type, paper, workshop, file_name)
+ if not certificate[1]:
+ old_user.counter = old_user.counter + 1
+ old_user.save()
+ return certificate[0]
+ except Certificate.DoesNotExist:
+ uniqueness = False
+ num = 5
+ while not uniqueness:
+ present = Certificate.objects.filter(short_key__startswith=serial_key[0:num])
+ if not present:
+ short_key = serial_key[0:num]
+ uniqueness = True
+ else:
+ num += 1
+ qrcode = 'Verify at: http://fossee.in/certificates/verify/{0} '.format(short_key)
+ details = {'name': name, 'serial_key': short_key}
+ certificate = create_openfoam_symposium_certificate_2016(certificate_path, details,
+ qrcode, type, paper, workshop, file_name)
+ if not certificate[1]:
+ certi_obj = Certificate(name=name, email=email, serial_no=serial_no,
+ counter=1, workshop=workshop, paper=paper, serial_key=serial_key, short_key=short_key)
+ certi_obj.save()
+ return certificate[0]
+
+ if certificate[1]:
+ _clean_certificate_certificate(certificate_path, file_name)
+ context['error'] = True
+ return render_to_response('openfoam_symposium_download_2016.html', context, ci)
+ context['message'] = ''
+ return render_to_response('openfoam_symposium_download_2016.html', context, ci)
+
+
+def create_openfoam_symposium_certificate_2016(certificate_path, name, qrcode, type, paper, workshop, file_name):
+ error = False
+ try:
+ download_file_name = None
+ if type == 'P':
+ template = 'template_OFSC2016Pcertificate'
+ download_file_name = 'OFSC2016Pcertificate.pdf'
+ elif type == 'A':
+ template = 'template_OFSC2016Acertificate'
+ download_file_name = 'OFSC2016Acertificate.pdf'
+
+ template_file = open('{0}{1}'.format\
+ (certificate_path, template), 'r')
+ content = Template(template_file.read())
+ template_file.close()
+ if type == 'P':
+ content_tex = content.safe_substitute(name=name['name'].title(),
+ serial_key=name['serial_key'], qr_code=qrcode)
+ elif type == 'A':
+ content_tex = content.safe_substitute(name=name['name'].title(),
+ serial_key=name['serial_key'], qr_code=qrcode, paper=paper)
+ create_tex = open('{0}{1}.tex'.format\
+ (certificate_path, file_name), 'w')
+ create_tex.write(content_tex)
+ create_tex.close()
+ return_value, err = _make_certificate_certificate(certificate_path, type, file_name)
+ print err
+ if return_value == 0:
+ pdf = open('{0}{1}.pdf'.format(certificate_path, file_name) , 'r')
+ response = HttpResponse(content_type='application/pdf')
+ response['Content-Disposition'] = 'attachment; \
+ filename=%s' % (download_file_name)
+ response.write(pdf.read())
+ _clean_certificate_certificate(certificate_path, file_name)
+ return [response, False]
+ else:
+ error = True
+ except Exception, e:
+ error = True
+ return [None, error]
+
+
+###############################################################################
+# Scilab Internship Certificate
+###############################################################################
+
+
+def fossee_internship_cerificate_download(request):
+ context = {}
+ err = ""
+ ci = RequestContext(request)
+ cur_path = os.path.dirname(os.path.realpath(__file__))
+ certificate_path = '{0}/fossee_internship_cerificate_template/'.format(cur_path)
+
+ if request.method == 'POST':
+ paper = request.POST.get('project_title', None)
+ workshop = None
+ email = request.POST.get('email').strip()
+ type = request.POST.get('type')
+ if type == 'P':
+ user = Internship_participant.objects.filter(email=email)
+ if not user:
+ context["notregistered"] = 1
+ return render_to_response('fossee_internship_cerificate_download.html', context, context_instance=ci)
+ else:
+ user = user[0]
+ elif type == 'A':
+ if paper:
+ user = Internship_participant.objects.filter(email=email, paper=project_title, internship_project_duration=internship_project_duration, student_edu_detail=student_edu_detail, student_institute_detail=student_institute_detail, superviser_name_detail=superviser_name_detail)
+ if user:
+ user = [user[0]]
+ else:
+ user = Internship_participant.objects.filter(email=email)
+ if not user:
+ context["notregistered"] = 1
+ return render_to_response('fossee_internship_cerificate_download.html', context, context_instance=ci)
+ if len(user) > 1:
+ context['user_papers'] = user
+ context['v'] = 'paper'
+ return render_to_response('fossee_internship_cerificate_download.html', context, context_instance=ci)
+ else:
+ user = user[0]
+ paper = user.project_title
+ name = user.name
+ purpose = user.purpose
+ internship_project_duration = user.internship_project_duration
+ student_edu_detail = user.student_edu_detail
+ student_institute_detail=user.student_institute_detail
+ superviser_name_detail=user.superviser_name_detail
+ year = '16'
+ id = int(user.id)
+ hexa = hex(id).replace('0x','').zfill(6).upper()
+ serial_no = '{0}{1}{2}{3}'.format(purpose, year, hexa, type)
+ serial_key = (hashlib.sha1(serial_no)).hexdigest()
+ file_name = '{0}{1}'.format(email,id)
+ file_name = file_name.replace('.', '')
+ try:
+ old_user = Certificate.objects.get(email=email, serial_no=serial_no)
+ qrcode = 'Verify at: http://fossee.in/certificates/verify/{0} '.format(old_user.short_key)
+ details = {'name': name, 'serial_key': old_user.short_key}
+ certificate = create_fossee_internship_cerificate(certificate_path, details, qrcode, type, paper, internship_project_duration,
+ student_edu_detail, student_institute_detail, superviser_name_detail, workshop, file_name)
+ if not certificate[1]:
+ old_user.counter = old_user.counter + 1
+ old_user.save()
+ return certificate[0]
+ except Certificate.DoesNotExist:
+ uniqueness = False
+ num = 5
+ while not uniqueness:
+ present = Certificate.objects.filter(short_key__startswith=serial_key[0:num])
+ if not present:
+ short_key = serial_key[0:num]
+ uniqueness = True
+ else:
+ num += 1
+ qrcode = 'Verify at: http://fossee.in/certificates/verify/{0} '.format(short_key)
+ details = {'name': name, 'serial_key': short_key}
+ certificate = create_fossee_internship_cerificate(certificate_path, details, qrcode, type, paper,
+ internship_project_duration, student_edu_detail, student_institute_detail, superviser_name_detail, workshop, file_name)
+ if not certificate[1]:
+ certi_obj = Certificate(name=name, email=email, serial_no=serial_no, counter=1, workshop=workshop, paper=paper, serial_key=serial_key, short_key=short_key)
+ certi_obj.save()
+ return certificate[0]
+
+ if certificate[1]:
+ _clean_certificate_certificate(certificate_path, file_name)
+ context['error'] = True
+ return render_to_response('fossee_internship_cerificate_download.html', context, ci)
+ context['message'] = ''
+ return render_to_response('fossee_internship_cerificate_download.html', context, ci)
+
+
+def create_fossee_internship_cerificate(certificate_path, name, qrcode, type, paper, internship_project_duration, student_edu_detail, student_institute_detail, superviser_name_detail, workshop, file_name):
+ error = False
+ try:
+ download_file_name = None
+ if type == 'P':
+ template = 'template_FIC2016Pcertificate'
+ download_file_name = 'FIC2016Pcertificate.pdf'
+ elif type == 'A':
+ template = 'template_FIC2016Acertificate'
+ download_file_name = 'FIC2016Acertificate.pdf'
+
+ template_file = open('{0}{1}'.format\
+ (certificate_path, template), 'r')
+ content = Template(template_file.read())
+ template_file.close()
+ if type == 'P':
+ content_tex = content.safe_substitute(name=name['name'].title(),
+ serial_key=name['serial_key'], qr_code=qrcode)
+ elif type == 'A':
+ content_tex = content.safe_substitute(name=name['name'].title(),
+ serial_key=name['serial_key'], qr_code=qrcode, paper=paper,
+ internship_project_duration=internship_project_duration,
+ student_edu_detail=student_edu_detail,
+ student_institute_detail=student_institute_detail,
+ superviser_name_detail=superviser_name_detail)
+ create_tex = open('{0}{1}.tex'.format\
+ (certificate_path, file_name), 'w')
+ create_tex.write(content_tex)
+ create_tex.close()
+ return_value, err = _make_certificate_certificate(certificate_path, type, file_name)
+ print err
+ if return_value == 0:
+ pdf = open('{0}{1}.pdf'.format(certificate_path, file_name) , 'r')
+ response = HttpResponse(content_type='application/pdf')
+ response['Content-Disposition'] = 'attachment; \
+ filename=%s' % (download_file_name)
+ response.write(pdf.read())
+ _clean_certificate_certificate(certificate_path, file_name)
+ return [response, False]
+ else:
+ error = True
+ except Exception, e:
+ error = True
+ return [None, error]
+