Added slug fields to Ensemble and Project
This commit is contained in:
parent
7a58d8b32d
commit
98fe7b77ce
@ -5,11 +5,11 @@ from django.contrib import admin
|
|||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
class EnsembleAdmin(admin.ModelAdmin):
|
class EnsembleAdmin(admin.ModelAdmin):
|
||||||
list_display = ['name', 'ensemble_code']
|
list_display = ['name', 'ensemble_code', 'slug']
|
||||||
|
|
||||||
class ProjectAdmin(admin.ModelAdmin):
|
class ProjectAdmin(admin.ModelAdmin):
|
||||||
|
|
||||||
list_display = ['name', 'ensemble', 'deadline', 'active']
|
list_display = ['name', 'ensemble', 'deadline', 'active', 'slug']
|
||||||
list_filter = ['ensemble', 'active']
|
list_filter = ['ensemble', 'active']
|
||||||
|
|
||||||
class SubmissionAdmin(admin.ModelAdmin):
|
class SubmissionAdmin(admin.ModelAdmin):
|
||||||
|
|||||||
@ -31,6 +31,7 @@ class Ensemble(models.Model):
|
|||||||
code = models.CharField(max_length=9, default=generate_code)
|
code = models.CharField(max_length=9, default=generate_code)
|
||||||
passphrase = models.CharField(max_length=100)
|
passphrase = models.CharField(max_length=100)
|
||||||
admins = models.ManyToManyField('auth.User', related_name='ensembles')
|
admins = models.ManyToManyField('auth.User', related_name='ensembles')
|
||||||
|
slug = models.SlugField(max_length=100, editable=False)
|
||||||
|
|
||||||
def active_projects(self):
|
def active_projects(self):
|
||||||
return self.projects.filter(active=True)
|
return self.projects.filter(active=True)
|
||||||
@ -39,6 +40,11 @@ class Ensemble(models.Model):
|
|||||||
code = str(self.code)
|
code = str(self.code)
|
||||||
return "{}-{}-{}".format(code[:3], code[3:6], code[6:])
|
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):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
@ -49,15 +55,21 @@ class Project(models.Model):
|
|||||||
active = models.BooleanField(default=True)
|
active = models.BooleanField(default=True)
|
||||||
deadline =models.DateField(null=True, blank=True)
|
deadline =models.DateField(null=True, blank=True)
|
||||||
owner = models.CharField(max_length=255, blank=True)
|
owner = models.CharField(max_length=255, blank=True)
|
||||||
|
slug = models.SlugField(max_length=100, editable=False)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def submissions(self):
|
def submissions(self):
|
||||||
return self.all_submissions.filter(complete=True).order_by('-pk')
|
return self.all_submissions.filter(complete=True).order_by('-pk')
|
||||||
|
|
||||||
def presigned_post(self, object_name, fields=None, conditions=None, expires=3600):
|
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)
|
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):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user