From 81783ad0258bb1b14cc93c59ee65d44931541c00 Mon Sep 17 00:00:00 2001 From: TheOrangeOne Date: Tue, 6 Sep 2016 08:48:48 +0100 Subject: [PATCH] add token model --- project/files/migrations/0001_initial.py | 40 ++++++++++++++++++++++++ project/files/models.py | 27 ++++++++-------- 2 files changed, 53 insertions(+), 14 deletions(-) create mode 100644 project/files/migrations/0001_initial.py diff --git a/project/files/migrations/0001_initial.py b/project/files/migrations/0001_initial.py new file mode 100644 index 0000000..44163f6 --- /dev/null +++ b/project/files/migrations/0001_initial.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models +import admin_resumable.fields +import uuid +import shortuuidfield.fields + + +class Migration(migrations.Migration): + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='FileToken', + fields=[ + ('id', models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, serialize=False)), + ('token', shortuuidfield.fields.ShortUUIDField(max_length=22, blank=True, editable=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='SharedFile', + fields=[ + ('id', models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, serialize=False)), + ('short_id', shortuuidfield.fields.ShortUUIDField(max_length=22, blank=True, editable=False)), + ('created', models.DateTimeField(auto_now_add=True)), + ('file', admin_resumable.fields.ModelAdminResumableFileField(upload_to='unused')), + ('hotlink', models.BooleanField(default=False)), + ('published', models.BooleanField(default=True)), + ], + ), + migrations.AddField( + model_name='filetoken', + name='file', + field=models.ForeignKey(to='files.SharedFile', related_name='tokens'), + ), + ] diff --git a/project/files/models.py b/project/files/models.py index 805f32a..de3d3a7 100644 --- a/project/files/models.py +++ b/project/files/models.py @@ -3,28 +3,27 @@ import os import uuid from admin_resumable.fields import ModelAdminResumableFileField from shortuuidfield import ShortUUIDField - - -def build_save_path(obj, filename): - return obj.get_save_path(filename) +from datetime import timedelta class SharedFile(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) short_id = ShortUUIDField() created = models.DateTimeField(auto_now_add=True) - file = ModelAdminResumableFileField(upload_to=build_save_path) + file = ModelAdminResumableFileField() hotlink = models.BooleanField(default=False) published = models.BooleanField(default=True) - filename = "" - - def get_save_path(self, filename): - self.filename = filename - return os.path.join(str(self.id), str(self.short_id), filename) - - def get_private_path(self): - return self.get_save_path(self.filename) - def get_original_filename(self): return "_".join(self.file.name.split('_')[1:]) + + +class FileToken(models.Model): + valid_time = timedelta(minutes=5) + id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) + token = ShortUUIDField() + file = models.ForeignKey(SharedFile, null=False, blank=False, related_name="tokens") + created = models.DateTimeField(auto_now_add=True) + + def __str__(self): + return "Token for {0} created at {1}".format(self.file.file.name, self.created)