Link catalogue to documents.
[redakcja.git] / src / catalogue / wikidata.py
index 4e63c09..d97d3af 100644 (file)
@@ -1,6 +1,10 @@
+# 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 django.utils.html import format_html
 from django.utils.translation import gettext_lazy as _
 from django.dispatch import receiver
 from wikidata.client import Client
@@ -10,9 +14,7 @@ from wikidata.datavalue import DatavalueError
 class WikidataMixin(models.Model):
     wikidata = models.CharField(
         max_length=255,
-        null=True,
         blank=True,
-        unique=True,
         help_text=_('If you have a Wikidata ID, like "Q1337", enter it and save.'),
     )
 
@@ -85,3 +87,14 @@ 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"