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