def upload_pic(request): m = [] if request.method == 'POST': form = ImageUploadForm(request.POST, request.FILES) if form.is_valid(): try: m = Certificate.objects.get(student_id=request.user.id) m.picture = form.cleaned_data['image'] image_field = form.cleaned_data.get('image') image_file = StringIO.StringIO(image_field.read()) image = Image.open(image_file) image = image.resize((800, 600), Image.ANTIALIAS) image_file = StringIO.StringIO() image.save(image_file, 'JPEG', quality=90) image_field.file = image_file m.save() except ObjectDoesNotExist: m = Certificate(picture=form.cleaned_data['image'], student_id=request.user.id) m.save() classroom_id = Enroll.objects.filter( student_id=request.user.id).order_by('-id')[0].classroom.id # 記錄系統事件 if is_event_open(request): log = Log(user_id=request.user.id, event='上傳Hour of Code證書成功') log.save() return redirect('/certificate/classroom/0/' + str(classroom_id)) else: try: m = Certificate.objects.get(student_id=request.user.id) except ObjectDoesNotExist: pass form = ImageUploadForm() return render_to_response('certificate/certificate.html', { 'form': form, 'certificate': m }, context_instance=RequestContext(request))
def fa_workshop_download(request): context = {} err = "" ci = RequestContext(request) cur_path = os.path.dirname(os.path.realpath(__file__)) certificate_path = '{0}/fa_workshop_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 = FA_WS.objects.filter(email=email) if not user: context["notregistered"] = 1 return render_to_response('fa_workshop_download.html', context, context_instance=ci) else: user = user[0] name = user.name purpose = user.purpose year = '17' 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://spoken-tutorial.org/certificate/verify/{0} '.format( old_user.short_key) details = {'name': name, 'serial_key': old_user.short_key} certificate = create_fa_workshop_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://spoken-tutorial.org/certificate/verify/{0} '.format( short_key) details = {'name': name, 'serial_key': short_key} certificate = create_fa_workshop_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 context['err'] = err return render_to_response('fa_workshop_download.html', context, ci) context['message'] = '' return render_to_response('fa_workshop_download.html', context, ci)