Funding: help texts for Spent objects.
authorRadek Czajka <rczajka@rczajka.pl>
Wed, 10 Apr 2024 10:56:20 +0000 (12:56 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Wed, 10 Apr 2024 10:56:20 +0000 (12:56 +0200)
src/funding/admin.py
src/funding/migrations/0014_alter_spent_annotation_alter_spent_book_and_more.py [new file with mode: 0644]
src/funding/models.py

index bb44cd4..7402c2a 100644 (file)
@@ -73,6 +73,7 @@ class SpentAdmin(admin.ModelAdmin):
     model = Spent
     list_display = ['book', 'amount', 'timestamp']
     search_fields = ['book__title']
+    autocomplete_fields = ['book']
 
 
 admin.site.register(Offer, OfferAdmin)
diff --git a/src/funding/migrations/0014_alter_spent_annotation_alter_spent_book_and_more.py b/src/funding/migrations/0014_alter_spent_annotation_alter_spent_book_and_more.py
new file mode 100644 (file)
index 0000000..0e6ea3b
--- /dev/null
@@ -0,0 +1,30 @@
+# Generated by Django 4.0.8 on 2024-04-10 10:54
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('catalogue', '0046_alter_book_options_alter_bookmedia_options_and_more'),
+        ('funding', '0013_missing_spent'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='spent',
+            name='annotation',
+            field=models.CharField(blank=True, help_text='Adnotacja pojawi się w nawiasie w rozliczeniu, by wyjaśnić sytuację w której do tej samej książki może być przypisany więcej niż jeden wydatek. Np. osobny wydatek na audiobook może mieć adnotację „audiobook”.', max_length=255, verbose_name='adnotacja'),
+        ),
+        migrations.AlterField(
+            model_name='spent',
+            name='book',
+            field=models.ForeignKey(blank=True, help_text='Książka, na którą zostały wydatkowane środki. Powinny tu być uwzględnione zarówno książki na które zbierano środki, jak i dodatkowe książki sfinansowane z nadwyżek ze zbiórek.', null=True, on_delete=django.db.models.deletion.PROTECT, to='catalogue.book', verbose_name='książka'),
+        ),
+        migrations.AlterField(
+            model_name='spent',
+            name='link',
+            field=models.URLField(blank=True, help_text='Jeśli wydatek nie dotyczy pojedynczej książki, to zamiast pola „Książka” powinien zostać uzupełniony link do sfinansowanego obiektu (np. kolekcji).'),
+        ),
+    ]
index 12fa0ca..5afdc22 100644 (file)
@@ -372,11 +372,25 @@ class PayUNotification(club.payu.models.Notification):
 
 class Spent(models.Model):
     """ Some of the remaining money spent on a book. """
-    book = models.ForeignKey(Book, models.PROTECT, null=True, blank=True)
-    link = models.URLField(blank=True, help_text='zamiast książki, np. kolekcja')
+    book = models.ForeignKey(
+        Book, models.PROTECT, null=True, blank=True,
+        verbose_name='książka',
+        help_text='Książka, na którą zostały wydatkowane środki. '
+        'Powinny tu być uwzględnione zarówno książki na które zbierano środki, jak i dodatkowe książki '
+        'sfinansowane z nadwyżek ze zbiórek.'
+    )
+    link = models.URLField(
+        blank=True,
+        help_text="Jeśli wydatek nie dotyczy pojedynczej książki, to zamiast pola „Książka” "
+        "powinien zostać uzupełniony link do sfinansowanego obiektu (np. kolekcji)."
+    )
     amount = models.DecimalField('kwota', decimal_places=2, max_digits=10)
     timestamp = models.DateField('kiedy')
-    annotation = models.CharField('adnotacja', max_length=255, blank=True, help_text="np. 'audiobook'")
+    annotation = models.CharField(
+        'adnotacja', max_length=255, blank=True,
+        help_text="Adnotacja pojawi się w nawiasie w rozliczeniu, by wyjaśnić sytuację w której "
+        "do tej samej książki może być przypisany więcej niż jeden wydatek. "
+        "Np. osobny wydatek na audiobook może mieć adnotację „audiobook”.")
 
     class Meta:
         verbose_name = 'pieniądze wydane na książkę'
@@ -384,5 +398,5 @@ class Spent(models.Model):
         ordering = ['-timestamp']
 
     def __str__(self):
-        return "Spent: %s" % str(self.book)
+        return "Wydane na: %s" % str(self.book or self.link)