diff --git a/certificate/migrations/0002_auto_20230221_1613.py b/certificate/migrations/0002_auto_20230221_1613.py new file mode 100644 index 0000000..b7d829c --- /dev/null +++ b/certificate/migrations/0002_auto_20230221_1613.py @@ -0,0 +1,23 @@ +# Generated by Django 3.0.3 on 2023-02-21 10:43 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('certificate', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='log', + name='full_key', + field=models.CharField(max_length=40, null=True, unique=True), + ), + migrations.AlterField( + model_name='log', + name='key', + field=models.CharField(max_length=25, unique=True), + ), + ] diff --git a/certificate/models.py b/certificate/models.py index d64562e..001f50c 100644 --- a/certificate/models.py +++ b/certificate/models.py @@ -16,4 +16,5 @@ class Certificate(models.Model): class Log(models.Model): key = models.CharField(max_length=25) + full_key = models.CharField(max_length=40, unique=True, null=True) test_attendance = models.ForeignKey(CSCTestAtttendance, on_delete=models.CASCADE) diff --git a/csc/vle_views.py b/csc/vle_views.py index f205a38..acbee7e 100644 --- a/csc/vle_views.py +++ b/csc/vle_views.py @@ -911,7 +911,7 @@ def download_certificate(request, test_attendance_id): filename = 'certficate.pdf' certificate = generate(**details) if not certificate[1]: - add_log(details['certificate_pass'], test_attendance_id) + add_log(details['certificate_pass'], details['certificate_full_key'], test_attendance_id) return certificate[0] else: messages.error(request,"Problem in downloading!") @@ -928,7 +928,7 @@ def get_details(test_attendance): except: invig = v - + verifiable_cert_key = get_pass(test_attendance.id, t.id) # invig = t.invigilator.invigilator if t.invigilator.exists() else t.vle print(invig.user.get_full_name(),'%%%%%%%%%%%%%%%%%%%%%%%%%%') @@ -940,7 +940,8 @@ def get_details(test_attendance): 'organiser':v.user.get_full_name(), 'invigilator':invig.user.get_full_name(), 'score': '{0}'.format(round(test_attendance.mdlgrade, 2)), - 'certificate_pass': get_pass(test_attendance.id, t.id), + 'certificate_pass': verifiable_cert_key[0:10], + 'certificate_full_key': verifiable_cert_key, } return details @@ -948,10 +949,11 @@ def get_details(test_attendance): def has_log_entry(key): return Log.objects.filter(key=key).exists() -def add_log(key, ta): +def add_log(key, full_key, ta): if not has_log_entry(key): log = Log() log.key = key + log.full_key = full_key log.test_attendance_id = ta log.save() @@ -975,7 +977,7 @@ def get_verification_details(key): def get_pass(ta_id, t_id): serial_key = (hashlib.sha1(bytes('{0}{1}'.format(ta_id, t_id), 'utf-8'))).hexdigest() - return serial_key[0:10] + return serial_key def training_enroll(request):