Add can_sell
authorRadek Czajka <rczajka@rczajka.pl>
Fri, 6 Mar 2026 13:11:37 +0000 (14:11 +0100)
committerRadek Czajka <rczajka@rczajka.pl>
Fri, 6 Mar 2026 13:11:37 +0000 (14:11 +0100)
src/catalogue/api/views.py
src/catalogue/forms.py
src/catalogue/migrations/0055_book_can_sell.py [new file with mode: 0644]
src/catalogue/models/book.py
src/wolnelektury/settings/contrib.py

index a4c0173..3449339 100644 (file)
@@ -190,7 +190,7 @@ class BookFilter(dfilters.FilterSet):
     sort = dfilters.OrderingFilter(
         fields=(
             ('sort_key_author', 'alpha'),
-            ('popularity', 'popularity'),
+            ('popularity__count', 'popularity'),
         )
     )
     tag = dfilters.ModelMultipleChoiceFilter(
index 919ff3a..7e543df 100644 (file)
@@ -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 (file)
index 0000000..3f3df55
--- /dev/null
@@ -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'),
+        ),
+    ]
index 375c79a..8597eac 100644 (file)
@@ -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()
index 465286b..1e74dbf 100644 (file)
@@ -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': (