From 2e1ed8f32a7dccfe80b92674afa7d5f1e15a84ca Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 15 Apr 2024 04:21:12 +0200 Subject: [PATCH] bugfix, add migration --- teleforma/migrations/0027_documentprivate.py | 38 ++++++++++++++++++++ teleforma/models/core.py | 13 +++---- 2 files changed, 45 insertions(+), 6 deletions(-) create mode 100644 teleforma/migrations/0027_documentprivate.py diff --git a/teleforma/migrations/0027_documentprivate.py b/teleforma/migrations/0027_documentprivate.py new file mode 100644 index 00000000..36e154d3 --- /dev/null +++ b/teleforma/migrations/0027_documentprivate.py @@ -0,0 +1,38 @@ +# 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'], + }, + ), + ] diff --git a/teleforma/models/core.py b/teleforma/models/core.py index 6fab21fe..d0850364 100644 --- a/teleforma/models/core.py +++ b/teleforma/models/core.py @@ -747,7 +747,7 @@ class MediaBase(models.Model): 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) @@ -831,7 +831,7 @@ class Document(MediaBase): 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 @@ -848,15 +848,16 @@ class DocumentPrivate(MediaBase): 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 -- 2.39.5