123456789101112131415161718192021222324252627282930313233 |
- import os
- from django.db import models
- from django.conf import settings
- from tickets.models.ticket import Ticket
- def get_attachment_upload_dir(instance, filename):
- """Determine upload dir for ticket attachment files."""
- return "/".join(["attachments", str(instance.ticket.id), filename])
- class Attachment(models.Model):
- """
- Defines a generic file attachment for use in M2M relation with ticket.
- """
- ticket = models.ForeignKey(Ticket, on_delete=models.CASCADE)
- added_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
- timestamp = models.DateTimeField(auto_now_add=True)
- file = models.FileField(upload_to=get_attachment_upload_dir, max_length=255)
- def filename(self):
- return os.path.basename(self.file.name)
- def extension(self):
- name, extension = os.path.splitext(self.file.name)
- return extension
- def __str__(self):
- return f"{self.ticket.id} - {self.file.name}"
|