Moved bucket to settings

This commit is contained in:
Tris Forster 2020-09-08 09:11:29 +10:00
parent 6ed5b793e8
commit 43700aa66b
5 changed files with 50 additions and 5 deletions

View File

@ -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',
),
]

View File

@ -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',
),
]

View File

@ -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):

View File

@ -28,7 +28,8 @@
{% endblock %}
<div class="project-links">
<div class="pills" role="tablist">
<a role=tab" href="{% url 'project' project_id=project.id %}">Project info</a>
<a role="tab" href="{% url 'project' project_id=project.id %}">Project info</a>
<a role="tab" href="{% url 'resources' project_id=project.pk %}">Resources</a>
{% for page in project.wiki_pages.all %}
<a class="nav-link {% if page.id == wiki_id %}active{% endif %}"
href="{% url 'wiki' project_id=project.id wiki_id=page.id %}">{{ page.title }}</a>

View File

@ -119,3 +119,5 @@ USE_TZ = True
# https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/'
AWS_BUCKET = 'virtual-orchestra'