datenaustausch / upload / models.py

from django.db import models
from django.contrib.auth.models import User

from hashlib import md5
from os import path

import time

class File(models.Model):
    owner = models.ForeignKey(User)
    name = models.CharField(max_length=128, blank=False, null=False)
    description = models.TextField(max_length=512)
    created_at = models.DateTimeField("Created at", auto_now=True)
    file_on_fs = models.FileField(upload_to="uploads")
    download_password = models.CharField(max_length=64, blank=True)

    def is_password_protected(self):
        return any(self.download_password )
    
    def filename(self):
        return path.basename(self.file_on_fs.name)

class UploadTicket(models.Model):
    referenced_file = models.ForeignKey(File, null=True, blank=True)
    identifier = models.CharField(max_length=48, blank=True, unique=True)
    created_by = models.ForeignKey(User)
    created_at = models.DateTimeField("Created at", auto_now=True)
    valid_until = models.DateTimeField("Valid until", blank=True)
    
    def is_occupied(self):
        pass

    @classmethod
    def generate_new_id(cls):
        return md5(str(time.time())).hexdigest()
        
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.