From 98fe7b77cef31011ff5ce3cc8aaf0fff3ec0ccb9 Mon Sep 17 00:00:00 2001 From: Tris Date: Wed, 3 Mar 2021 21:07:36 +1100 Subject: [PATCH] Added slug fields to Ensemble and Project --- interface/admin.py | 4 ++-- interface/models.py | 14 +++++++++++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/interface/admin.py b/interface/admin.py index 49e3754..5fbe821 100644 --- a/interface/admin.py +++ b/interface/admin.py @@ -5,11 +5,11 @@ from django.contrib import admin from . import models class EnsembleAdmin(admin.ModelAdmin): - list_display = ['name', 'ensemble_code'] + list_display = ['name', 'ensemble_code', 'slug'] class ProjectAdmin(admin.ModelAdmin): - list_display = ['name', 'ensemble', 'deadline', 'active'] + list_display = ['name', 'ensemble', 'deadline', 'active', 'slug'] list_filter = ['ensemble', 'active'] class SubmissionAdmin(admin.ModelAdmin): diff --git a/interface/models.py b/interface/models.py index ff72a86..de74a1b 100644 --- a/interface/models.py +++ b/interface/models.py @@ -31,6 +31,7 @@ class Ensemble(models.Model): code = models.CharField(max_length=9, default=generate_code) passphrase = models.CharField(max_length=100) admins = models.ManyToManyField('auth.User', related_name='ensembles') + slug = models.SlugField(max_length=100, editable=False) def active_projects(self): return self.projects.filter(active=True) @@ -39,6 +40,11 @@ class Ensemble(models.Model): code = str(self.code) return "{}-{}-{}".format(code[:3], code[3:6], code[6:]) + def save(self): + if not self.slug: + self.slug = slugify(self.name) + super(Ensemble, self).save() + def __str__(self): return self.name @@ -49,15 +55,21 @@ class Project(models.Model): active = models.BooleanField(default=True) deadline =models.DateField(null=True, blank=True) owner = models.CharField(max_length=255, blank=True) + slug = models.SlugField(max_length=100, editable=False) @property def submissions(self): return self.all_submissions.filter(complete=True).order_by('-pk') def presigned_post(self, object_name, fields=None, conditions=None, expires=3600): - key = os.path.join(slugify(self.name), object_name) + key = os.path.join(self.slug, object_name) return s3client.generate_presigned_post(BUCKET, key, Fields=fields or {}, Conditions=conditions or [], ExpiresIn=expires) + def save(self): + if not self.slug: + self.slug = slugify(self.name) + super(Project, self).save() + def __str__(self): return self.name