blob: d168d7a0cd32121ee37941d67fc34d1c6bbdea04 [file]
import marshmallow as ma
from app.objects.secondclass.c_parserconfig import ParserConfig, ParserConfigSchema
from app.utility.base_object import BaseObject
from app.utility.base_world import BaseWorld
class ParserSchema(ma.Schema):
module = ma.fields.String()
parserconfigs = ma.fields.List(ma.fields.Nested(ParserConfigSchema()))
@ma.post_load()
def build_parser(self, data, **_):
return Parser(**data)
@ma.post_dump()
def prepare_parser(self, data, **_):
for pc, index in enumerate(data['parserconfigs']):
if isinstance(pc, ParserConfig):
data['parserconfigs'][index] = pc.display
return data
class Parser(BaseObject):
schema = ParserSchema()
@property
def unique(self):
return self.module
def __init__(self, module, parserconfigs):
super().__init__()
if module:
BaseWorld.verify_module(module, 'parsers', ['app/learning'])
self.module = module
self.parserconfigs = parserconfigs