summaryrefslogtreecommitdiff
path: root/certificate/views.py
diff options
context:
space:
mode:
Diffstat (limited to 'certificate/views.py')
-rw-r--r--certificate/views.py119
1 files changed, 115 insertions, 4 deletions
diff --git a/certificate/views.py b/certificate/views.py
index 22119c3..4f35bcf 100644
--- 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
+from certificate.models import Scilab_participant, Certificate, Event, Scilab_speaker, Scilab_workshop, Question, Answer, FeedBack, Scipy_participant, Scipy_speaker, Drupal_camp, Tbc_freeeda
import subprocess
import os
from string import Template
@@ -121,6 +121,11 @@ def verification(serial, _type):
day = 'Day 1 and Day 2'
detail = OrderedDict([('Name', name), ('Attended', day),
('Event', purpose), ('Year', year)])
+ if purpose == 'FreeEDA Textbook Companion':
+ user_books = Tbc_freeeda.objects.filter(email=certificate.email).values_list('book')
+ books = [ book[0] for book in user_books ]
+ detail = OrderedDict([('Name', name), ('Participant', 'Yes'),
+ ('Project', 'FreeEDA Textbook Companion'), ('Books completed', ','.join(books))])
else:
detail = '{0} had attended {1} {2}'.format(name, purpose, year)
elif type == 'A':
@@ -194,6 +199,8 @@ def _get_detail(serial_no):
purpose = 'SciPy India'
elif serial_no[0:3] == 'DCM':
purpose = 'DrupalCamp Mumbai'
+ elif serial_no[0:3] == 'FET':
+ purpose = 'FreeEDA Textbook Companion'
if serial_no[3:5] == '14':
year = '2014'
@@ -252,7 +259,6 @@ def create_certificate(certificate_path, name, qrcode, type, paper, workshop, fi
else:
error = True
except Exception, e:
- print e
error = True
return [None, error]
@@ -456,7 +462,6 @@ def create_scipy_certificate(certificate_path, name, qrcode, type, paper, worksh
else:
error = True
except Exception, e:
- print e
error = True
return [None, error]
@@ -609,6 +614,112 @@ def create_drupal_certificate(certificate_path, name, qrcode, type, paper, works
else:
error = True
except Exception, e:
- print e
+ error = True
+ return [None, error]
+
+
+def tbc_freeeda_download(request):
+ context = {}
+ err = ""
+ ci = RequestContext(request)
+ cur_path = os.path.dirname(os.path.realpath(__file__))
+ certificate_path = '{0}/tbc_freeeda_template/'.format(cur_path)
+
+ if request.method == 'POST':
+ email = request.POST.get('email').strip()
+ type = request.POST.get('type', 'P')
+ paper = None
+ workshop = None
+ if type == 'P':
+ user = Tbc_freeeda.objects.filter(email=email)
+ if not user:
+ context["notregistered"] = 1
+ return render_to_response('tbc_freeeda_download.html',
+ context, context_instance=ci)
+ else:
+ user = user[0]
+ name = user.name
+ college = user.college
+ book = user.book
+ author =user.author
+ purpose = user.purpose
+ year = '15'
+ 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, 'book': book, 'college': college, 'author': author, 'serial_key': old_user.short_key}
+ certificate = create_freeeda_certificate(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, 'book': book, 'college': college, 'author': author, 'serial_key': short_key}
+ certificate = create_freeeda_certificate(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('tbc_freeeda_download.html', context, ci)
+ context['message'] = ''
+ return render_to_response('tbc_freeeda_download.html', context, ci)
+
+
+def create_freeeda_certificate(certificate_path, name, qrcode, type, paper, workshop, file_name):
+ error = False
+ try:
+ download_file_name = None
+ template = 'template_FET2015Pcertificate'
+ download_file_name = 'FET2015Pcertificate.pdf'
+
+ template_file = open('{0}{1}'.format\
+ (certificate_path, template), 'r')
+ content = Template(template_file.read())
+ template_file.close()
+
+ content_tex = content.safe_substitute(name=name['name'].title(),
+ book=name['book'], author=name['author'], college=name['college'],
+ serial_key=name['serial_key'], qr_code=qrcode)
+ 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)
+ 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]