Metadata editing: auto-add record and more suggestions.
[redakcja.git] / src / catalogue / wikidata.py
index c688570..4fc8bbd 100644 (file)
@@ -1,3 +1,6 @@
+# This file is part of FNP-Redakcja, licensed under GNU Affero GPLv3 or later.
+# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
+#
 from datetime import date
 from django.db import models
 from django.db.models.signals import m2m_changed
 from datetime import date
 from django.db import models
 from django.db.models.signals import m2m_changed
@@ -11,9 +14,7 @@ from wikidata.datavalue import DatavalueError
 class WikidataMixin(models.Model):
     wikidata = models.CharField(
         max_length=255,
 class WikidataMixin(models.Model):
     wikidata = models.CharField(
         max_length=255,
-        null=True,
         blank=True,
         blank=True,
-        unique=True,
         help_text=_('If you have a Wikidata ID, like "Q1337", enter it and save.'),
     )
 
         help_text=_('If you have a Wikidata ID, like "Q1337", enter it and save.'),
     )
 
@@ -81,15 +82,19 @@ class WikidataMixin(models.Model):
                 wdvalue = wdvalue.label.get("pl", str(wdvalue.label))
             setattr(self, attname, wdvalue)
 
                 wdvalue = wdvalue.label.get("pl", str(wdvalue.label))
             setattr(self, attname, wdvalue)
 
+    def wikidata_link(self):
+        if self.wikidata:
+            return format_html(
+                '<a href="https://www.wikidata.org/wiki/{wd}" target="_blank">{wd}</a>',
+                wd=self.wikidata,
+            )
+        else:
+            return ""
+
+    wikidata_link.admin_order_field = "wikidata"
+
 
 class WikidataAdminMixin:
     def save_related(self, request, form, formsets, change):
         super().save_related(request, form, formsets, change)
         form.instance.save()
 
 class WikidataAdminMixin:
     def save_related(self, request, form, formsets, change):
         super().save_related(request, form, formsets, change)
         form.instance.save()
-
-    def wikidata_link(self, obj):
-        if obj.wikidata:
-            return format_html('<a href="https://www.wikidata.org/wiki/{wd}" target="_blank">{wd}</a>', wd=obj.wikidata)
-        else:
-            return ''
-    wikidata_link.admin_order_field = 'wikidata'