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@lists.wikimedia.org