Fixes for woblink.
authorRadek Czajka <rczajka@rczajka.pl>
Tue, 29 Aug 2023 09:38:54 +0000 (11:38 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Tue, 29 Aug 2023 09:38:54 +0000 (11:38 +0200)
src/catalogue/admin.py
src/catalogue/models.py
src/depot/publishers/woblink.py

index 43ae866..af08369 100644 (file)
@@ -73,6 +73,20 @@ class WoblinkCatalogueWidget(forms.Select):
         )
         return attrs
 
+    def optgroups(self, name, value, attrs=None):
+        """ Add synthetic option for keeping the current value. """
+        return [(None, [
+            self.create_option(
+                name,
+                v,
+                '(bez zmian)',
+                selected=True,
+                index=index,
+                attrs=attrs,
+            )
+            for index, v in enumerate(value)
+        ], 0)]
+
 class WoblinkAuthorWidget(WoblinkCatalogueWidget):
     category = 'author'
 
index fb42ba8..9074fa8 100644 (file)
@@ -128,8 +128,10 @@ class Author(WikidataModel):
         if len(names) == 2:
             return cls.objects.filter(last_name=names[0], first_name=names[1]).first()
         else:
-            return cls.objects.filter(last_name=names[0], first_name='').first() or \
-                cls.objects.filter(first_name=names[0], last_name='').first()
+            return cls.objects.filter(last_name_pl=names[0], first_name_pl='').first() or \
+                cls.objects.filter(first_name_pl=names[0], last_name_pl='').first() or \
+                cls.objects.filter(first_name_pl=literal, last_name_pl='').first() or \
+                cls.objects.filter(first_name_pl=literal, last_name_pl=None).first()
 
     @property
     def name(self):
index e98ec58..90ee91a 100644 (file)
@@ -223,7 +223,7 @@ class Woblink(BasePublisher):
 
         thema_codes.extend(
             Audience.objects.filter(code__in=meta.audiences).exclude(
-                thema=None).values_list('thema', flat=True)
+                thema='').values_list('thema', flat=True)
         )
 
         if not thema_codes: