--- /dev/null
+# Generated by Django 3.2.13 on 2024-04-15 04:01
+
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ('teleforma', '0026_period_nb_script_per_session'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='DocumentPrivate',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('title', models.CharField(blank=True, max_length=255, verbose_name='title')),
+ ('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
+ ('credits', models.CharField(blank=True, max_length=255, verbose_name='credits')),
+ ('date_added', models.DateTimeField(auto_now_add=True, null=True, verbose_name='date added')),
+ ('date_modified', models.DateTimeField(auto_now=True, null=True, verbose_name='date modified')),
+ ('code', models.CharField(blank=True, max_length=255, verbose_name='code')),
+ ('is_published', models.BooleanField(verbose_name='published')),
+ ('mime_type', models.CharField(blank=True, max_length=255, verbose_name='mime type')),
+ ('weight', models.IntegerField(blank=True, choices=[(1, 1), (2, 2), (3, 3), (4, 4)], default=1, verbose_name='weight')),
+ ('file', models.FileField(blank=True, db_column='filename', max_length=1024, upload_to='private_documents/%Y/%m/%d', verbose_name='file')),
+ ('document', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='private_documents', to='teleforma.document', verbose_name='document')),
+ ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='private_documents', to=settings.AUTH_USER_MODEL, verbose_name='user')),
+ ],
+ options={
+ 'db_table': 'teleforma_document_private',
+ 'ordering': ['-date_added'],
+ },
+ ),
+ ]
date_modified = models.DateTimeField(
_('date modified'), auto_now=True, null=True)
code = models.CharField(_('code'), max_length=255, blank=True)
- is_published = models.BooleanField(_('published'))
+ is_published = models.BooleanField(_('published'), default=False)
mime_type = models.CharField(_('mime type'), max_length=255, blank=True)
weight = models.IntegerField(
_('weight'), choices=WEIGHT_CHOICES, default=1, blank=True)
super(Document, self).save(**kwargs)
def private_file(self, user):
- private_document = DocumentPrivate.objects.get_or_create(document=self, user=user)
+ private_document, c = DocumentPrivate.objects.get_or_create(document=self, user=user)
return private_document.file
ordering = ['-date_added']
def save(self, **kwargs):
- if "pdf" in self.document.mimetype:
+ if "pdf" in self.document.mime_type:
from pypdf import PdfReader, PdfWriter
writer = PdfWriter(clone_from=self.document.file.path)
writer.add_metadata({"/Downloader": self.user.username})
- name = self.document.file.name
+ name = self.document.file.name.split(os.sep)[-1]
today = datetime.date.today()
root = settings.MEDIA_ROOT + "private_documents/%s/%s/%s/" % (today.year, today.month, today.day)
- os.path.makedirs(root)
- path = root + user.username + " - " + name
+ if not os.path.exists(root):
+ os.makedirs(root)
+ path = root + self.user.username + " - " + name
with open(path, "wb") as f:
writer.write(f)
self.file = path