aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorParker Berberian <pberberian@iol.unh.edu>2018-11-09 11:10:03 -0500
committerParker Berberian <pberberian@iol.unh.edu>2019-01-02 09:35:41 -0500
commit21919476d791c24be54a447f9b7e32f74d3bd4b4 (patch)
treefa16ce05e0bbf31f9f1cff1039c5a7dbde5f4267
parentb361d6df77ab59bb0f227aec00c19b080f31bc50 (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.py18
-rw-r--r--src/booking/models.py1
-rw-r--r--src/booking/views.py2
-rw-r--r--src/workflow/models.py6
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"