From 0bb0b2d95756a0ea8c334054a9cf10514583adfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GOLDERWEB=20=E2=80=93=20Jonathan=20Golder?= Date: Wed, 24 Aug 2016 16:51:23 +0200 Subject: [PATCH 1/3] Make sure var beginning is always defined To prevent unbound Errors caused by using undeclared variable beginning if the redfam-section does not contain any timestamp Related Task: [https://fs.golderweb.de/index.php?do=details&task_id=76 FS#76] --- redfam.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/redfam.py b/redfam.py index 3dec12f..7b03131 100644 --- a/redfam.py +++ b/redfam.py @@ -401,6 +401,10 @@ class RedFamParser( RedFam ): else: ending = None + # Missing dates (Task: FS#76) + else: + beginning = None + ending = None return (beginning, ending) From 95be31385982180a3fd352d54f908b385eec30aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GOLDERWEB=20=E2=80=93=20Jonathan=20Golder?= Date: Wed, 24 Aug 2016 16:53:45 +0200 Subject: [PATCH 2/3] Pass reddisc pywikibot.page object to redfam To access page information like page title (eg. to get dates from it) of the reddisc page Related Task: [https://fs.golderweb.de/index.php?do=details&task_id=76 FS#76] --- reddiscparser.py | 2 +- redfam.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/reddiscparser.py b/reddiscparser.py index 3a6f43b..43417f3 100644 --- a/reddiscparser.py +++ b/reddiscparser.py @@ -109,7 +109,7 @@ class DiscussionParserBot( for fam in red_page.parse(): # Run RedFamParser on section text - redfam.RedFamParser.parser( fam, red_page.page._pageid, + redfam.RedFamParser.parser( fam, red_page.page, red_page.is_archive() ) fam_counter += 1 diff --git a/redfam.py b/redfam.py index 7b03131..26b3c76 100644 --- a/redfam.py +++ b/redfam.py @@ -137,14 +137,14 @@ class RedFamParser( RedFam ): wurde gewünscht von:" __done_notice2 = "{{Erledigt|" - def __init__( self, heading, red_page_id, red_page_archive, + def __init__( self, heading, red_page, red_page_archive, beginning, ending=None ): """ Creates a RedFam object based on data collected while parsing red_pages combined with possibly former known data from db @param red_fam_heading str Wikitext heading of section - @param red_page_id int MediaWiki page_id + @param red_page page Pywikibot.page object @param red_page_archive bool Is red_page an archive @param beginning datetime Timestamp of beginning str as strptime parseable string @@ -153,7 +153,7 @@ class RedFamParser( RedFam ): """ # Set object attributes: - self._red_page_id = red_page_id + self._red_page_id = red_page._pageid self._red_page_archive = red_page_archive self._fam_hash = None @@ -341,7 +341,7 @@ class RedFamParser( RedFam ): return False @classmethod - def parser( cls, text, pageid, isarchive=False ): + def parser( cls, text, page, isarchive=False ): """ Handles parsing of redfam section @@ -360,7 +360,7 @@ class RedFamParser( RedFam ): (beginning, ending) = RedFamParser.extract_dates( text, isarchive ) # Create the RedFam object - RedFamParser( heading, pageid, isarchive, beginning, ending ) + RedFamParser( heading, page, isarchive, beginning, ending ) @classmethod def extract_dates( cls, text, isarchive=False ): From ab430e00857f380d2738e25a4e276d22eb08146e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?GOLDERWEB=20=E2=80=93=20Jonathan=20Golder?= Date: Wed, 24 Aug 2016 16:56:54 +0200 Subject: [PATCH 3/3] Use month of reddisc as beginning if missing Construct a fictive but sensfull beginning if we cant detect one Needed since beginning is mandatory Related Task: [https://fs.golderweb.de/index.php?do=details&task_id=76 FS#76] --- redfam.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/redfam.py b/redfam.py index 26b3c76..a78b150 100644 --- a/redfam.py +++ b/redfam.py @@ -359,6 +359,19 @@ class RedFamParser( RedFam ): # Extract beginnig and maybe ending (beginning, ending) = RedFamParser.extract_dates( text, isarchive ) + # Missing beginning (Task: FS#76) + # Use first day of month of reddisc + if not beginning: + match = re.search( + jogobot.config["redundances"]["reddiscs_onlyinclude_re"], + page.title() ) + + if match: + beginning = datetime.strptime( + "01. {month} {year}".format( + month=match.group(1), year=match.group(2)), + "%d. %B %Y" ) + # Create the RedFam object RedFamParser( heading, page, isarchive, beginning, ending )