diff options
author | Parker Berberian <pberberian@iol.unh.edu> | 2018-11-09 11:10:03 -0500 |
---|---|---|
committer | Parker Berberian <pberberian@iol.unh.edu> | 2019-01-02 09:35:41 -0500 |
commit | 21919476d791c24be54a447f9b7e32f74d3bd4b4 (patch) | |
tree | fa16ce05e0bbf31f9f1cff1039c5a7dbde5f4267 | |
parent | b361d6df77ab59bb0f227aec00c19b080f31bc50 (diff) |
Renders Pod Destriptor File earlier
Currently, the PDF is rendered 'on-demand' every time you
visit the booking detail page. This change renders the pdf once
and saves it in the booking model. Advantages:
- saves computation of re-rendering pdf constantly
- fixes issue where pdf fails to render after booking expires
Change-Id: I58d20fadce088d78ebd22f1d6f67cab371823542
Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
-rw-r--r-- | src/booking/migrations/0002_booking_pdf.py | 18 | ||||
-rw-r--r-- | src/booking/models.py | 1 | ||||
-rw-r--r-- | src/booking/views.py | 2 | ||||
-rw-r--r-- | src/workflow/models.py | 6 |
4 files changed, 26 insertions, 1 deletions
diff --git a/src/booking/migrations/0002_booking_pdf.py b/src/booking/migrations/0002_booking_pdf.py new file mode 100644 index 0000000..53232c9 --- /dev/null +++ b/src/booking/migrations/0002_booking_pdf.py @@ -0,0 +1,18 @@ +# Generated by Django 2.1 on 2018-11-09 16:09 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('booking', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='booking', + name='pdf', + field=models.TextField(blank=True, default=''), + ), + ] diff --git a/src/booking/models.py b/src/booking/models.py index d0c77b4..74b766d 100644 --- a/src/booking/models.py +++ b/src/booking/models.py @@ -57,6 +57,7 @@ class Booking(models.Model): config_bundle = models.ForeignKey(ConfigBundle, on_delete=models.SET_NULL, null=True) project = models.CharField(max_length=100, default="", blank=True, null=True) lab = models.ForeignKey(Lab, null=True, on_delete=models.SET_NULL) + pdf = models.TextField(blank=True, default="") class Meta: db_table = 'booking' diff --git a/src/booking/views.py b/src/booking/views.py index ab43519..29b53e2 100644 --- a/src/booking/views.py +++ b/src/booking/views.py @@ -112,7 +112,7 @@ def booking_detail_view(request, booking_id): { 'title': 'Booking Details', 'booking': booking, - 'pdf': ResourceManager().makePDF(booking.resource), + 'pdf': booking.pdf, 'user_id': user.id }) diff --git a/src/workflow/models.py b/src/workflow/models.py index 966582c..6a8eca1 100644 --- a/src/workflow/models.py +++ b/src/workflow/models.py @@ -459,6 +459,12 @@ class Repository(): booking.collaborators.add(collaborator) try: + booking.pdf = ResourceManager().makePDF(booking.resource) + booking.save() + except Exception as e: + return "BOOK, failed to create Pod Desriptor File: " + str(e) + + try: JobFactory.makeCompleteJob(booking) except Exception as e: return "BOOK, serializing for api generated exception: " + str(e) + " CODE:0xFFFF" |