From 28a35133ff325aab59204df7372d7cc78ca5e64c Mon Sep 17 00:00:00 2001 From: Parker Berberian Date: Fri, 9 Nov 2018 11:10:03 -0500 Subject: 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 --- dashboard/src/booking/migrations/0002_booking_pdf.py | 18 ++++++++++++++++++ dashboard/src/booking/models.py | 1 + dashboard/src/booking/views.py | 2 +- dashboard/src/workflow/models.py | 6 ++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 dashboard/src/booking/migrations/0002_booking_pdf.py (limited to 'dashboard') diff --git a/dashboard/src/booking/migrations/0002_booking_pdf.py b/dashboard/src/booking/migrations/0002_booking_pdf.py new file mode 100644 index 0000000..53232c9 --- /dev/null +++ b/dashboard/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/dashboard/src/booking/models.py b/dashboard/src/booking/models.py index d0c77b4..74b766d 100644 --- a/dashboard/src/booking/models.py +++ b/dashboard/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/dashboard/src/booking/views.py b/dashboard/src/booking/views.py index ab43519..29b53e2 100644 --- a/dashboard/src/booking/views.py +++ b/dashboard/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/dashboard/src/workflow/models.py b/dashboard/src/workflow/models.py index 966582c..6a8eca1 100644 --- a/dashboard/src/workflow/models.py +++ b/dashboard/src/workflow/models.py @@ -458,6 +458,12 @@ class Repository(): for collaborator in collaborators: 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: -- cgit 1.2.3-korg