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

Reply via email to