diff options
author | prashant | 2016-03-16 18:48:09 +0530 |
---|---|---|
committer | prashant | 2016-03-16 18:48:09 +0530 |
commit | 9d3336d75df7534baee27f2140a8e4dbf0637f7c (patch) | |
tree | 0e33083a07f16387c135a8d734784f898b1efd9e /certificate/views.py | |
parent | 642b5cd19801ae2385b86b8d5f5004f05bb42da8 (diff) | |
download | certificate-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.py | 330 |
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] + |