]> git.parisson.com Git - teleforma.git/commitdiff
bugfix, add migration
authorGuillaume Pellerin <guillaume.pellerin@free.fr>
Mon, 15 Apr 2024 02:21:12 +0000 (04:21 +0200)
committerGuillaume Pellerin <guillaume.pellerin@free.fr>
Wed, 17 Apr 2024 08:25:55 +0000 (10:25 +0200)
teleforma/migrations/0027_documentprivate.py [new file with mode: 0644]
teleforma/models/core.py

diff --git a/teleforma/migrations/0027_documentprivate.py b/teleforma/migrations/0027_documentprivate.py
new file mode 100644 (file)
index 0000000..36e154d
--- /dev/null
@@ -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'],
+            },
+        ),
+    ]
index 6fab21fecccbac313e10a62285724286596532f3..d0850364297c270b1e508687b396f6b5007772a8 100644 (file)
@@ -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