quickfix: set User-Agent for wikidata
[redakcja.git] / src / catalogue / wikidata.py
index 90f1a5c..e5aecaf 100644 (file)
@@ -71,6 +71,9 @@ class WikidataModel(models.Model):
     def wikidata_populate(self, save=True, force=False):
         Wikidata = type(self).Wikidata
         client = Client()
     def wikidata_populate(self, save=True, force=False):
         Wikidata = type(self).Wikidata
         client = Client()
+        client.opener.addheaders = [(
+            'User-Agent', 'Wolne Lektury Redakcja / Python-wikidata'
+        )]
         # Probably should getlist
         entity = client.get(self.wikidata)
         for attname in dir(Wikidata):
         # Probably should getlist
         entity = client.get(self.wikidata)
         for attname in dir(Wikidata):
@@ -159,7 +162,16 @@ class WikidataModel(models.Model):
                 wdvalue = wdvalue.label.get(language, str(wdvalue.label))
 
             if not skip_set:
                 wdvalue = wdvalue.label.get(language, str(wdvalue.label))
 
             if not skip_set:
-                setattr(self, attname, wdvalue)
+                try:
+                    wdvalue = model_field.to_python(wdvalue)
+                except:
+                    pass
+                else:
+                    if isinstance(wdvalue, str):
+                        max_length = getattr(model_field, 'max_length', None)
+                        if max_length:
+                            wdvalue = wdvalue[:max_length]
+                    setattr(self, attname, wdvalue)
 
     def wikidata_link(self):
         if self.wikidata:
 
     def wikidata_link(self):
         if self.wikidata: