http://www.mediawiki.org/wiki/Special:Code/pywikipedia/11206

Revision: 11206
Author:   legoktm
Date:     2013-03-15 07:23:20 +0000 (Fri, 15 Mar 2013)
Log Message:
-----------
Modify how references are handled, so the hash value is stored.

Modified Paths:
--------------
    branches/rewrite/pywikibot/page.py

Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py  2013-03-14 16:20:15 UTC (rev 11205)
+++ branches/rewrite/pywikibot/page.py  2013-03-15 07:23:20 UTC (rev 11206)
@@ -2382,12 +2382,13 @@
     """
     Claims are standard claims as well as references.
     """
-    def __init__(self, site, pid, snak=None, isReference=False):
+    def __init__(self, site, pid, snak=None, hash=None, isReference=False):
         """
         Defined by the "snak" value, supplemented by site + pid
         """
-        PropertyPage.__init__(self, site, 'Property:'+pid)
+        PropertyPage.__init__(self, site, 'Property:' + pid)
         self.snak = snak
+        self.hash = hash
         self.isReference = isReference
         self.sources = []
         self.target = None
@@ -2410,17 +2411,21 @@
             claim.target = data['mainsnak']['datavalue']['value']
         if 'references' in data:
             for source in data['references']:
-                claim.sources.append(Claim.referenceFromJSON(site, 
source['snaks'].values()[0][0]))
+                claim.sources.append(Claim.referenceFromJSON(site, source))
         return claim
 
     @staticmethod
     def referenceFromJSON(site, data):
         """
-        This is a simple hack since reference objects
-        aren't wrapped in a mainsnak object.
+        Reference objects are represented a
+        bit differently, and require some
+        more handling.
         """
-        wrap = {'mainsnak': data}
-        return Claim.fromJSON(site, wrap)
+        mainsnak = data['snaks'].values()[0][0]
+        wrap = {'mainsnak': mainsnak}
+        c = Claim.fromJSON(site, wrap)
+        c.hash = data['hash']
+        return c
 
     def set_target(self, value):
         """


_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to