Matěj Suchánek has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/364163 )

Change subject: [WIP] Merge items in interwikidata.py
......................................................................

[WIP] Merge items in interwikidata.py

Bug: T146255
Change-Id: Ibd7434bc36bc8e8724a09ff174ae421f12a31942
---
M scripts/interwikidata.py
1 file changed, 25 insertions(+), 5 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/63/364163/1

diff --git a/scripts/interwikidata.py b/scripts/interwikidata.py
index b549518..8a88d41 100644
--- a/scripts/interwikidata.py
+++ b/scripts/interwikidata.py
@@ -16,7 +16,9 @@
 
 -clean            Clean pages.
 
--create           Create items only.
+-create           Create items.
+
+-merge            Merge items.
 
 -summary:         Use your own edit summary for cleaning the page.
 """
@@ -57,6 +59,7 @@
         self.availableOptions.update({
             'clean': False,
             'create': False,
+            'merge': False,
             'summary': None,
             'ignore_ns': False,  # used by interwikidata_tests only
         })
@@ -93,9 +96,12 @@
             item = self.try_to_add()
             if self.getOption('create') and item is None:
                 item = self.create_item()
+        else:
+            if self.getOption('merge'):
+                item = self.try_to_merge(item)
 
-        self.current_item = item
         if item and self.getOption('clean'):
+            self.current_item = item
             self.clean_page()
 
     def create_item(self):
@@ -142,7 +148,7 @@
         if not self.iwlangs:
             return
         dbnames = [iw_site.dbName() for iw_site in self.iwlangs]
-        if set(dbnames) < set(self.current_item.sitelinks.keys()):
+        if set(dbnames) - set(self.current_item.sitelinks.keys()):
             if not self.handle_complicated():
                 warning('Interwiki conflict in %s, skipping...' %
                         self.current_page.title(asLink=True))
@@ -152,8 +158,8 @@
             self.current_page.text, site=self.current_page.site)
         self.put_current(new_text, summary=self.getOption('summary'))
 
-    def try_to_add(self):
-        """Add current page in repo."""
+    def get_items(self):
+        """Return all items of pages linked through the interwiki."""
         wd_data = set()
         for iw_page in self.iwlangs.values():
             try:
@@ -163,6 +169,11 @@
                     warning('Interwiki %s does not exist, skipping...' %
                             iw_page.title(asLink=True))
                 continue
+        return wd_data
+
+    def try_to_add(self):
+        """Add current page in repo."""
+        wd_data = self.get_items()
         if not wd_data:
             # will create a new item with interwiki
             return None
@@ -179,6 +190,15 @@
         item.setSitelink(self.current_page)
         return item
 
+    def try_to_merge(self, item):
+        """Merge two items."""
+        wd_data = self.get_items()
+        if len(wd_data) > 1:
+            warning('Interwiki conflict in %s, skipping...' %
+                    self.current_page.title(asLink=True))
+            return False
+        target_item = list(wd_data).pop()
+
 
 def main(*args):
     """

-- 
To view, visit https://gerrit.wikimedia.org/r/364163
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibd7434bc36bc8e8724a09ff174ae421f12a31942
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Matěj Suchánek <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to