add a filter
[wolnelektury.git] / src / funding / models.py
index f44e377..81d439d 100644 (file)
@@ -1,5 +1,5 @@
-# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
-# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+# This file is part of Wolne Lektury, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Wolne Lektury. See NOTICE for more information.
 #
 from datetime import date, datetime
 from urllib.parse import urlencode
 #
 from datetime import date, datetime
 from urllib.parse import urlencode
@@ -12,7 +12,7 @@ from django.template.loader import render_to_string
 from django.urls import reverse
 from django.utils.html import mark_safe
 from django.utils.timezone import utc
 from django.urls import reverse
 from django.utils.html import mark_safe
 from django.utils.timezone import utc
-from django.utils.translation import override
+from django.utils.translation import gettext_lazy as _, override
 from catalogue.models import Book
 from catalogue.utils import get_random_hash
 from polls.models import Poll
 from catalogue.models import Book
 from catalogue.utils import get_random_hash
 from polls.models import Poll
@@ -262,7 +262,7 @@ class Funding(club.payu.models.Order):
 
     """
     offer = models.ForeignKey(Offer, models.PROTECT, verbose_name='zbiórka')
 
     """
     offer = models.ForeignKey(Offer, models.PROTECT, verbose_name='zbiórka')
-    customer_ip = models.GenericIPAddressField('adres IP', null=True)
+    customer_ip = models.GenericIPAddressField('adres IP', null=True, blank=True)
     
     name = models.CharField('nazwa', max_length=127, blank=True)
     email = models.EmailField('e-mail', blank=True, db_index=True)
     
     name = models.CharField('nazwa', max_length=127, blank=True)
     email = models.EmailField('e-mail', blank=True, db_index=True)
@@ -271,7 +271,7 @@ class Funding(club.payu.models.Order):
     perks = models.ManyToManyField(Perk, verbose_name='prezenty', blank=True)
     language_code = models.CharField(max_length=2, null=True, blank=True)
     notifications = models.BooleanField('powiadomienia', default=True, db_index=True)
     perks = models.ManyToManyField(Perk, verbose_name='prezenty', blank=True)
     language_code = models.CharField(max_length=2, null=True, blank=True)
     notifications = models.BooleanField('powiadomienia', default=True, db_index=True)
-    notify_key = models.CharField(max_length=32)
+    notify_key = models.CharField(max_length=32, blank=True)
 
     class Meta:
         verbose_name = 'wpłata'
 
     class Meta:
         verbose_name = 'wpłata'
@@ -372,9 +372,25 @@ class PayUNotification(club.payu.models.Notification):
 
 class Spent(models.Model):
     """ Some of the remaining money spent on a book. """
 
 class Spent(models.Model):
     """ Some of the remaining money spent on a book. """
-    book = models.ForeignKey(Book, models.PROTECT)
+    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')
     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="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ę'
 
     class Meta:
         verbose_name = 'pieniądze wydane na książkę'
@@ -382,5 +398,5 @@ class Spent(models.Model):
         ordering = ['-timestamp']
 
     def __str__(self):
         ordering = ['-timestamp']
 
     def __str__(self):
-        return "Spent: %s" % str(self.book)
+        return "Wydane na: %s" % str(self.book or self.link)