X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/e24e657ebf536f55c1bde66bd41563fae30a98b0..b09ddc60e118508d96906f26ecb0e1709ca89f1b:/src/funding/models.py diff --git a/src/funding/models.py b/src/funding/models.py index f44e37795..36221f156 100644 --- a/src/funding/models.py +++ b/src/funding/models.py @@ -1,7 +1,7 @@ -# 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 datetime import date from urllib.parse import urlencode from django.conf import settings from django.contrib.sites.models import Site @@ -11,8 +11,8 @@ from django.dispatch import receiver 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.utils.translation import override +from django.utils.timezone import now +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 @@ -161,7 +161,7 @@ class Offer(models.Model): 'remaining': self.remaining(), 'current': self.current(), }) - self.notified_end = datetime.utcnow().replace(tzinfo=utc) + self.notified_end = now() self.save() def notify_near(self, force=False): @@ -179,7 +179,7 @@ class Offer(models.Model): 'sum': sum_, 'need': need, }) - self.notified_near = datetime.utcnow().replace(tzinfo=utc) + self.notified_near = now() self.save() def notify_published(self): @@ -262,7 +262,7 @@ class Funding(club.payu.models.Order): """ 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) @@ -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) - notify_key = models.CharField(max_length=32) + notify_key = models.CharField(max_length=32, blank=True) 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. """ - 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') + 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ę' @@ -382,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)