Magul has uploaded a new change for review.
https://gerrit.wikimedia.org/r/76723
Change subject: Create ItemPage without providing id or sitelink
......................................................................
Create ItemPage without providing id or sitelink
Change-Id: I8616b498d5b00512a5448de5909d8494e5252f4b
---
M pywikibot/page.py
M pywikibot/site.py
2 files changed, 26 insertions(+), 14 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/23/76723/1
diff --git a/pywikibot/page.py b/pywikibot/page.py
index 705fc77..e73ba70 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -2444,16 +2444,18 @@
class ItemPage(WikibasePage):
- def __init__(self, site, title=''):
+ def __init__(self, site, title=None):
"""
defined by qid XOR site AND title
options:
site=pywikibot.DataSite & title=Q42
site=pywikibot.Site & title=Main Page
"""
- super(ItemPage, self).__init__(site, title, ns=0)
- if title != '':
+ if title is not None:
+ super(ItemPage, self).__init__(site, title, ns=0)
self.id = title.lower()
+ else:
+ super(ItemPage, self).__init__(site, u"", ns=0)
@classmethod
def fromPage(cls, page):
@@ -2467,18 +2469,26 @@
return i
@classmethod
- def createNew(cls, site):
+ def createNew(cls, site, labels = {}, descriptions = {}, aliases = {}):
"""
Create new ItemPage
"""
- i = cls(site, '')
- req = pywikibot.data.api.Request(action='wbeditentity',
- new='item',
- data='{}',
- site=site,
- token=site.token(pywikibot.Page(site,
u'Main Page'), 'edit')) # dummy page provided
- i.id = req.submit()['entity']['id']
- print i.id
+ i = cls(site)
+ i.labels = labels
+ i.descriptions = descriptions
+ i.aliases = aliases
+ labels = i._WikibasePage__normalizeLanguages(labels)
+ for key in labels:
+ labels[key] = {'language': key, 'value': labels[key]}
+ descriptions = i._WikibasePage__normalizeLanguages(descriptions)
+ for key in descriptions:
+ descriptions[key] = {'language': key, 'value': descriptions[key]}
+ aliases = i._WikibasePage__normalizeLanguages(aliases)
+ for key in aliases:
+ aliases[key] = {'language': key, 'value': aliases[key]}
+ data = {'labels': labels, 'descriptions': descriptions, 'aliases':
aliases}
+ i._content = site.editEntity(None, data)['entity']
+ i.id = i._content['id']
return i
def __make_site(self, dbname):
diff --git a/pywikibot/site.py b/pywikibot/site.py
index b4357d6..abaaec5 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -3396,8 +3396,10 @@
@must_be(group='user')
def editEntity(self, identification, data, bot=True, **kwargs):
- params = dict(**identification)
- if not params: # If no identification was provided
+ if identification is not None:
+ params = dict(**identification)
+ else:
+ params = dict()
params['new'] = 'item' # TODO create properties+queries
params['action'] = 'wbeditentity'
if bot:
--
To view, visit https://gerrit.wikimedia.org/r/76723
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I8616b498d5b00512a5448de5909d8494e5252f4b
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Magul <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits