def test_registered_user(self):
     """Test registered user."""
     user = User(self.site, 'Xqt')
     with suppress_warnings('pywikibot.page.User.name', DeprecationWarning):
         self.assertEqual(user.name(), user.username)
     self.assertEqual(user.title(with_ns=False), user.username)
     self.assertTrue(user.isRegistered())
     self.assertFalse(user.isAnonymous())
     self.assertIsInstance(user.registration(), pywikibot.Timestamp)
     self.assertGreater(user.editCount(), 0)
     self.assertFalse(user.isBlocked())
     self.assertTrue(user.isEmailable())
     self.assertEqual(user.gender(), 'unknown')
     self.assertIn('userid', user.getprops())
     self.assertEqual(user.getprops()['userid'], 287832)
     self.assertEqual(user.pageid, 6927779)
     self.assertEqual(user.getUserPage(),
                      pywikibot.Page(self.site, 'Benutzer:Xqt'))
     self.assertEqual(user.getUserPage(subpage='pwb'),
                      pywikibot.Page(self.site, 'Benutzer:Xqt/pwb'))
     self.assertEqual(user.getUserTalkPage(),
                      pywikibot.Page(self.site, 'Benutzer Diskussion:Xqt'))
     self.assertEqual(
         user.getUserTalkPage(subpage='pwb'),
         pywikibot.Page(self.site, 'Benutzer Diskussion:Xqt/pwb'))
     self.assertTrue(user.is_thankable)
     contribs = user.contributions(total=10)
     self.assertLength(list(contribs), 10)
     self.assertTrue(all(
         isinstance(contrib, tuple) for contrib in contribs))
     self.assertTrue(
         all('user' in contrib and contrib['user'] == user.username
             for contrib in contribs))
     self.assertIn('user', user.groups())
     self.assertIn('edit', user.rights())
Example #2
0
 def task(self):
     the_bot_it_user = User(self.wiki, "Benutzer:THEbotIT")
     page: Optional[Page] = None
     for idx, (page, revision_id, ts, _) in enumerate(
             the_bot_it_user.contributions(total=10000,
                                           start=Timestamp(year=2022,
                                                           month=3,
                                                           day=26),
                                           end=Timestamp(year=2022,
                                                         month=3,
                                                         day=22))):
         if idx % 100 == 0:
             self.logger.info(f"index is {idx}")
         if idx < 700:
             continue
         last_two_reivisions: List[Revision] = list(page.revisions())[:2]
         # make sure the last edit is the potential dangerous one
         if last_two_reivisions[0]["revid"] == revision_id:
             if last_two_reivisions[0]["size"] - last_two_reivisions[1][
                     "size"] < 0:
                 if "RE:" in page.title():
                     self.logger.info(f"bad edit on {page.title()}")
                     page.text = page.getOldVersion(
                         oldid=last_two_reivisions[1]["revid"])
                     page.save(
                         f"Änderung {last_two_reivisions[0]['revid']} von [[Benutzer:THEbotIT|THEbotIT]] ([[Benutzer Diskussion:THEbotIT|Diskussion]]) rückgängig gemacht."
                     )
     self.logger.info("THE END")
Example #3
0
 def test_registered_user(self):
     """Test registered user."""
     user = User(self.site, 'Xqt')
     with suppress_warnings('pywikibot.page.User.name', DeprecationWarning):
         self.assertEqual(user.name(), user.username)
     self.assertEqual(user.title(withNamespace=False), user.username)
     self.assertTrue(user.isRegistered())
     self.assertFalse(user.isAnonymous())
     self.assertIsInstance(user.registration(), pywikibot.Timestamp)
     self.assertGreater(user.editCount(), 0)
     self.assertFalse(user.isBlocked())
     self.assertTrue(user.isEmailable())
     self.assertEqual(user.gender(), 'unknown')
     self.assertIn('userid', user.getprops())
     self.assertEqual(user.getprops()['userid'], 287832)
     self.assertEqual(user.pageid, 6927779)
     self.assertEqual(user.getUserPage(),
                      pywikibot.Page(self.site, 'Benutzer:Xqt'))
     self.assertEqual(user.getUserPage(subpage='pwb'),
                      pywikibot.Page(self.site, 'Benutzer:Xqt/pwb'))
     self.assertEqual(user.getUserTalkPage(),
                      pywikibot.Page(self.site, 'Benutzer Diskussion:Xqt'))
     self.assertEqual(user.getUserTalkPage(subpage='pwb'),
                      pywikibot.Page(self.site,
                                     'Benutzer Diskussion:Xqt/pwb'))
     self.assertTrue(user.is_thankable)
     contribs = user.contributions(total=10)
     self.assertEqual(len(list(contribs)), 10)
     self.assertTrue(all(isinstance(contrib, tuple)
                         for contrib in contribs))
     self.assertTrue(all('user' in contrib
                         and contrib['user'] == user.username
                         for contrib in contribs))
     self.assertIn('user', user.groups())
     self.assertIn('edit', user.rights())
Example #4
0
 def getUserData(self, user: pywikibot.User, endTime: datetime,
                 exactResults: bool) -> UserData:
     contribs = list(user.contributions(total=5000, start=endTime))
     articleContribs = list(
         user.contributions(total=5000, start=endTime, namespace=""))
     flaggedEditCount = self.getFlaggedEditCount(user, exactResults)
     return UserData(
         user,
         user.editCount,
         contribs,
         articleContribs,
         flaggedEditCount,
         self.site.logevents(page=f"User:{user.username}"),
         self.getUserRegistrationTimeSafe(user),
         self.getFlaggedRevsUserParams(user),
     )
 def test_contribution(self):
     """Test the User.usercontribs() method."""
     mysite = self.get_site()
     user = User(mysite, mysite.user())
     uc = list(user.contributions(total=10))
     if not uc:
         self.skipTest('User {0} has no contributions on site {1}.'.format(
             mysite.user(), mysite))
     self.assertLessEqual(len(uc), 10)
     last = uc[0]
     for contrib in uc:
         self.assertIsInstance(contrib, tuple)
         self.assertLength(contrib, 4)
         p, i, t, c = contrib
         self.assertIsInstance(p, Page)
         self.assertIsInstance(i, int)
         self.assertIsInstance(t, Timestamp)
         self.assertIsInstance(c, StringTypes)
     self.assertEqual(last, user.last_edit)
Example #6
0
    def getUserRegistrationTimeSafe(
            self, user: pywikibot.User) -> pywikibot.Timestamp:
        registrationTime = user.registration()
        if registrationTime:
            return registrationTime

        events = self.site.logevents(user=user.username, logtype="newusers")
        for ev in events:
            if ev.type() == "newusers":
                if ev.action() == "newusers" or ev.action(
                ) == "autocreate" or ev.action() == "create2":
                    return ev.timestamp()
                else:
                    raise NotImplementedError

        # Happens for old accounts
        oldestContribList = list(user.contributions(reverse=True, total=1))
        if len(oldestContribList) == 1:
            return oldestContribList[0][2]
        else:
            raise NotImplementedError