dataexport.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. from django.conf import settings
  2. from django.db import models
  3. from django.utils import timezone
  4. from django.utils.translation import ugettext_lazy as _
  5. def get_export_upload_to(instance, filename):
  6. raise NotImplementedError() # todo: generate secure upload to path
  7. class DataExport(models.Model):
  8. STATUS_PENDING = 0
  9. STATUS_PROCESSING = 1
  10. STATUS_READY = 2
  11. STATUS_EXPIRED = 3
  12. STATUS_CHOICES = (
  13. (STATUS_PENDING, _("Pending")),
  14. (STATUS_PROCESSING, _("Processing")),
  15. (STATUS_READY, _("Ready")),
  16. (STATUS_EXPIRED, _("Expired")),
  17. )
  18. user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT)
  19. status = models.PositiveIntegerField(
  20. default=STATUS_PENDING,
  21. choices=STATUS_CHOICES,
  22. db_index=True,
  23. )
  24. requester = models.ForeignKey(
  25. settings.AUTH_USER_MODEL,
  26. related_name='+',
  27. null=True,
  28. blank=True,
  29. on_delete=models.SET_NULL,
  30. )
  31. requester_name = models.CharField(max_length=255)
  32. requested_on = models.DateTimeField(default=timezone.now)
  33. expires_on = models.DateTimeField(default=timezone.now)
  34. export_file = models.FileField(upload_to=get_export_upload_to, null=True, blank=True)