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())
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")
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())
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)
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