From 43700aa66b37f7b9bfe5f41c43f83412e569057f Mon Sep 17 00:00:00 2001 From: Tris Forster Date: Tue, 8 Sep 2020 09:11:29 +1000 Subject: [PATCH] Moved bucket to settings --- .../migrations/0012_remove_ensemble_bucket.py | 17 +++++++++++++++++ .../migrations/0013_auto_20200907_1455.py | 18 ++++++++++++++++++ interface/models.py | 15 +++++++++++---- interface/templates/interface/project.html | 3 ++- polyphonic/settings.py | 2 ++ 5 files changed, 50 insertions(+), 5 deletions(-) create mode 100644 interface/migrations/0012_remove_ensemble_bucket.py create mode 100644 interface/migrations/0013_auto_20200907_1455.py diff --git a/interface/migrations/0012_remove_ensemble_bucket.py b/interface/migrations/0012_remove_ensemble_bucket.py new file mode 100644 index 0000000..6073ea5 --- /dev/null +++ b/interface/migrations/0012_remove_ensemble_bucket.py @@ -0,0 +1,17 @@ +# Generated by Django 3.1.1 on 2020-09-07 04:53 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('interface', '0011_auto_20200907_0234'), + ] + + operations = [ + migrations.RemoveField( + model_name='ensemble', + name='bucket', + ), + ] diff --git a/interface/migrations/0013_auto_20200907_1455.py b/interface/migrations/0013_auto_20200907_1455.py new file mode 100644 index 0000000..2afe8a8 --- /dev/null +++ b/interface/migrations/0013_auto_20200907_1455.py @@ -0,0 +1,18 @@ +# Generated by Django 3.1.1 on 2020-09-07 04:55 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('interface', '0012_remove_ensemble_bucket'), + ] + + operations = [ + migrations.RenameField( + model_name='resource', + old_name='uri', + new_name='key', + ), + ] diff --git a/interface/models.py b/interface/models.py index 92832ef..b6f9044 100644 --- a/interface/models.py +++ b/interface/models.py @@ -1,6 +1,7 @@ from django.db import models from django.utils.text import slugify from django.utils import timezone +from django.conf import settings import random @@ -12,6 +13,9 @@ import os.path s3client = boto3.client('s3') +BUCKET = settings.AWS_BUCKET + + def generate_code(length=9): return "".join([ random.choice('0123456789') for _ in range(length) ]) @@ -19,7 +23,6 @@ class Ensemble(models.Model): name = models.CharField(max_length=100) code = models.CharField(max_length=9, default=generate_code) passphrase = models.CharField(max_length=100) - bucket = models.CharField(max_length=255) def active_projects(self): return self.projects.filter(active=True) @@ -42,7 +45,7 @@ class Project(models.Model): def presigned_post(self, object_name, fields=None, conditions=None, expires=3600): key = os.path.join(slugify(self.name), object_name) - return s3client.generate_presigned_post(self.ensemble.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 __str__(self): return self.name @@ -50,7 +53,11 @@ class Project(models.Model): class Resource(models.Model): project = models.ForeignKey(Project, related_name='resources', on_delete=models.CASCADE) name = models.CharField(max_length=100) - uri = models.CharField(max_length=255) + key = models.CharField(max_length=255) + + def presigned_url(self): + params = {'Bucket': BUCKET, 'Key': self.key} + return s3client.generate_presigned_url('get_object', Params=params, ExpiresIn=3600) class WikiPage(models.Model): project = models.ForeignKey(Project, related_name='wiki_pages', on_delete=models.CASCADE) @@ -70,7 +77,7 @@ class Submission(models.Model): key = models.CharField(max_length=512, blank=True) def presigned_url(self): - params = {'Bucket': self.project.ensemble.bucket, 'Key': self.key} + params = {'Bucket': BUCKET, 'Key': self.key} return s3client.generate_presigned_url('get_object', Params=params, ExpiresIn=3600) def key_template(self): diff --git a/interface/templates/interface/project.html b/interface/templates/interface/project.html index 4f493d5..f22140c 100644 --- a/interface/templates/interface/project.html +++ b/interface/templates/interface/project.html @@ -28,7 +28,8 @@ {% endblock %}