Add Wrapperclass for Parser to RedPage

Add a wrapper class to overwrite type of Items returned by
RedPage.redfams relationship

Related Task: [https://fs.golderweb.de/index.php?do=details&task_id=109 FS#109]
This commit is contained in:
2017-03-09 15:30:51 +01:00
parent 76666aa294
commit 147e96d388
2 changed files with 16 additions and 6 deletions

View File

@@ -33,7 +33,7 @@ from pywikibot.bot import ExistingPageBot, NoRedirectPageBot
import jogobot import jogobot
from lib.redpage import RedPage from lib.redpage import RedPageParser
from lib.redfam import RedFamParser from lib.redfam import RedFamParser
@@ -127,7 +127,7 @@ class DiscussionParserBot(
else: else:
# If successfully parsed all pages in cat, flush db write cache # If successfully parsed all pages in cat, flush db write cache
RedPage.flush_db_cache() RedPageParser.flush_db_cache()
def treat_page( self ): def treat_page( self ):
""" """
@@ -146,13 +146,13 @@ class DiscussionParserBot(
return return
# Initiate RedPage object # Initiate RedPage object
redpage = RedPage.session.query(RedPage).filter( redpage = RedPageParser.session.query(RedPageParser).filter(
RedPage.pageid == self.current_page.pageid ).one_or_none() RedPageParser.pageid == self.current_page.pageid ).one_or_none()
if redpage: if redpage:
redpage.update( self.current_page ) redpage.update( self.current_page )
else: else:
redpage = RedPage( self.current_page ) redpage = RedPageParser( self.current_page )
# Check whether parsing is needed # Check whether parsing is needed
if redpage.is_parsing_needed(): if redpage.is_parsing_needed():

View File

@@ -30,7 +30,8 @@ import mwparserfromhell as mwparser
import jogobot # noqa import jogobot # noqa
from lib.mysqlred import MysqlRedPage from lib.mysqlred import (
MysqlRedPage, relationship, attribute_mapped_collection )
from lib.redfam import RedFamParser from lib.redfam import RedFamParser
@@ -131,3 +132,12 @@ class RedPage( MysqlRedPage ):
Calls flush method of Mysql Interface class Calls flush method of Mysql Interface class
""" """
cls.session.commit() cls.session.commit()
class RedPageParser( RedPage ):
"""
Wrapper class to change the type of redfams collection elements in parser
"""
redfams = relationship(
"RedFamParser", enable_typechecks=False, back_populates="redpage",
collection_class=attribute_mapped_collection("famhash") )