Esempio n. 1
0
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))
Esempio n. 2
0
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)