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.db import models
from django.utils.text import slugify from django.utils.text import slugify
from django.utils import timezone from django.utils import timezone
from django.conf import settings
import random import random
@ -12,6 +13,9 @@ import os.path
s3client = boto3.client('s3') s3client = boto3.client('s3')
BUCKET = settings.AWS_BUCKET
def generate_code(length=9): def generate_code(length=9):
return "".join([ random.choice('0123456789') for _ in range(length) ]) return "".join([ random.choice('0123456789') for _ in range(length) ])
@ -19,7 +23,6 @@ class Ensemble(models.Model):
name = models.CharField(max_length=100) name = models.CharField(max_length=100)
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)
bucket = models.CharField(max_length=255)
def active_projects(self): def active_projects(self):
return self.projects.filter(active=True) 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): 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(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): def __str__(self):
return self.name return self.name
@ -50,7 +53,11 @@ class Project(models.Model):
class Resource(models.Model): class Resource(models.Model):
project = models.ForeignKey(Project, related_name='resources', on_delete=models.CASCADE) project = models.ForeignKey(Project, related_name='resources', on_delete=models.CASCADE)
name = models.CharField(max_length=100) 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): class WikiPage(models.Model):
project = models.ForeignKey(Project, related_name='wiki_pages', on_delete=models.CASCADE) 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) key = models.CharField(max_length=512, blank=True)
def presigned_url(self): 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) return s3client.generate_presigned_url('get_object', Params=params, ExpiresIn=3600)
def key_template(self): def key_template(self):

View File

@ -28,7 +28,8 @@
{% endblock %} {% endblock %}
<div class="project-links"> <div class="project-links">
<div class="pills" role="tablist"> <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 %} {% for page in project.wiki_pages.all %}
<a class="nav-link {% if page.id == wiki_id %}active{% endif %}" <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> 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/ # https://docs.djangoproject.com/en/3.1/howto/static-files/
STATIC_URL = '/static/' STATIC_URL = '/static/'
AWS_BUCKET = 'virtual-orchestra'