Ladsgroup has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/156732

Change subject: Add wrapper for new output of Wikidata
......................................................................

Add wrapper for new output of Wikidata

Bug 70069

Change-Id: Ief6649e7e92b627de484aeebde6c152d0afed7e6
---
M wikipedia.py
1 file changed, 32 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/compat 
refs/changes/32/156732/1

diff --git a/wikipedia.py b/wikipedia.py
index 2823641..5f281a6 100644
--- a/wikipedia.py
+++ b/wikipedia.py
@@ -4442,6 +4442,26 @@
         items = self.get()
         return int(self.title()[1:])
 
+    def wrapper(self):
+        if isinstance(self._contents.get('claims', {}), list):
+            return
+        old_dict = self._contents
+        new_dict = {'links': {}, 'claims': [], 'descriptions': [], 'label': []}
+        for site_name in old_dict.get('sitelinks', []):
+            new_dict['links'][site_name] = {}
+            new_dict['links'][site_name]['name'] = 
old_dict['sitelinks'][site_name].get('title')
+            new_dict['links'][site_name]['badges'] = 
old_dict['sitelinks'][site_name].get('badges')
+        for claim_name in old_dict.get('claims'):
+            for claim in old_dict['claims'][claim_name]:
+                new_claim = {'m': ['value', int(claim_name[1:])]}
+                new_claim['refs'] = claim.get('references', [])
+                new_claim['g'] = claim['id']
+                new_claim['m'].append(claim.get('mainsnak', 
{}).get('datavalue', {}).get('value'))
+            new_dict['claims'].append(new_claim)
+        new_dict['descriptions'] = old_dict['descriptions']
+        new_dict['label'] = old_dict['labels']
+        self._contents = new_dict
+
     def setSitelink(self, page, summary=""):
         """Set a Sitelink for a Datapage.
         @param page: the site to link to
@@ -5046,14 +5066,18 @@
             except AttributeError:
                 raise SectionError  # Page has no section by this name
         self._contents = json.loads(pagetext)
-        if self._contents['entity'][0] == 'item':
-            self._title = "Q"
-        elif self._contents['entity'][0] == 'property':
-            self._title = "P"
+        if not self._contents.get('id'):
+            if self._contents['entity'][0] == 'item':
+                self._title = "Q"
+            elif self._contents['entity'][0] == 'property':
+                self._title = "P"
+            else:
+                raise RuntimeError("unknown type: %s call User:Ladsgroup to 
fix "
+                                   "this" % self._contents['entity'][0])
+            self._title += str(self._contents['entity'][1])
         else:
-            raise RuntimeError("unknown type: %s call User:Ladsgroup to fix "
-                               "this" % self._contents['entity'][0])
-        self._title += str(self._contents['entity'][1])
+            self._title = self._contents['id']
+            self.wrapper()
         return self._contents
 
     @deprecate_arg("get", None)
@@ -5118,6 +5142,7 @@
             else:
                 pagetext = super(DataPage, self).get(*args, **kwargs)
                 self._contents = json.loads(pagetext)
+        self.wrapper()
         return self._contents
 
     def isEmpty(self):

-- 
To view, visit https://gerrit.wikimedia.org/r/156732
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ief6649e7e92b627de484aeebde6c152d0afed7e6
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/compat
Gerrit-Branch: master
Gerrit-Owner: Ladsgroup <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to