From 1b9cdd6220596c93a73c180249a10e6d6f9bd3e4 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Fri, 6 Mar 2026 14:11:37 +0100 Subject: [PATCH] Add can_sell --- src/catalogue/api/views.py | 2 +- src/catalogue/forms.py | 2 ++ src/catalogue/migrations/0055_book_can_sell.py | 18 ++++++++++++++++++ src/catalogue/models/book.py | 5 ++++- src/wolnelektury/settings/contrib.py | 2 +- 5 files changed, 26 insertions(+), 3 deletions(-) create mode 100644 src/catalogue/migrations/0055_book_can_sell.py diff --git a/src/catalogue/api/views.py b/src/catalogue/api/views.py index a4c0173e7..3449339e5 100644 --- a/src/catalogue/api/views.py +++ b/src/catalogue/api/views.py @@ -190,7 +190,7 @@ class BookFilter(dfilters.FilterSet): sort = dfilters.OrderingFilter( fields=( ('sort_key_author', 'alpha'), - ('popularity', 'popularity'), + ('popularity__count', 'popularity'), ) ) tag = dfilters.ModelMultipleChoiceFilter( diff --git a/src/catalogue/forms.py b/src/catalogue/forms.py index 919ff3a62..7e543df29 100644 --- a/src/catalogue/forms.py +++ b/src/catalogue/forms.py @@ -20,6 +20,7 @@ class BookImportForm(forms.Form): logo = forms.CharField(required=False) logo_mono = forms.CharField(required=False) logo_alt = forms.CharField(required=False) + can_sell = forms.BooleanField(required=False) def clean(self): from django.core.files.base import ContentFile @@ -40,6 +41,7 @@ class BookImportForm(forms.Form): logo=self.cleaned_data['logo'], logo_mono=self.cleaned_data['logo_mono'], logo_alt=self.cleaned_data['logo_alt'], + can_sell=self.cleaned_data['can_sell'], **kwargs) diff --git a/src/catalogue/migrations/0055_book_can_sell.py b/src/catalogue/migrations/0055_book_can_sell.py new file mode 100644 index 000000000..3f3df552e --- /dev/null +++ b/src/catalogue/migrations/0055_book_can_sell.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.8 on 2026-03-06 13:08 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('catalogue', '0054_alter_book_sort_key_alter_book_sort_key_author_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='book', + name='can_sell', + field=models.BooleanField(default=True, verbose_name='do sprzedaży'), + ), + ] diff --git a/src/catalogue/models/book.py b/src/catalogue/models/book.py index 375c79a8e..8597eac75 100644 --- a/src/catalogue/models/book.py +++ b/src/catalogue/models/book.py @@ -61,6 +61,7 @@ class Book(models.Model): preview_until = models.DateField('prapremiera do', blank=True, null=True) preview_key = models.CharField(max_length=32, blank=True, null=True) findable = models.BooleanField('wyszukiwalna', default=True, db_index=True) + can_sell = models.BooleanField('do sprzedaży', default=True) # files generated during publication xml_file = fields.XmlField(storage=bofh_storage, with_etag=False) @@ -683,7 +684,7 @@ class Book(models.Model): @classmethod def from_text_and_meta(cls, raw_file, book_info, overwrite=False, dont_build=None, search_index=True, - remote_gallery_url=None, days=0, findable=True, logo=None, logo_mono=None, logo_alt=None): + remote_gallery_url=None, days=0, findable=True, logo=None, logo_mono=None, logo_alt=None, can_sell=None): from catalogue import tasks if dont_build is None: @@ -738,6 +739,8 @@ class Book(models.Model): extra['logo_mono'] = logo_mono if logo_alt: extra['logo_alt'] = logo_alt + if can_sell is not None: + book.can_sell = can_sell book.extra_info = json.dumps(extra) book.load_abstract() book.load_toc() diff --git a/src/wolnelektury/settings/contrib.py b/src/wolnelektury/settings/contrib.py index 465286bbb..1e74dbf43 100644 --- a/src/wolnelektury/settings/contrib.py +++ b/src/wolnelektury/settings/contrib.py @@ -24,7 +24,7 @@ PAYPAL_ENABLED = True REST_FRAMEWORK = { "DEFAULT_RENDERER_CLASSES": ( 'rest_framework.renderers.JSONRenderer', - 'rest_framework.renderers.BrowsableAPIRenderer', + #'rest_framework.renderers.BrowsableAPIRenderer', 'api.renderers.LegacyXMLRenderer', ), 'DEFAULT_AUTHENTICATION_CLASSES': ( -- 2.20.1