Files
mayan-edms/mayan/apps/metadata/parsers.py

55 lines
1.3 KiB
Python

from __future__ import unicode_literals
from dateutil.parser import parse
from django.core.exceptions import ValidationError
class MetadataParser(object):
_registry = []
@classmethod
def register(cls, parser):
cls._registry.append(parser)
@classmethod
def get_all(cls):
return cls._registry
@classmethod
def get_import_path(cls):
return cls.__module__ + '.' + cls.__name__
@classmethod
def get_import_paths(cls):
return [validator.get_import_path() for validator in cls.get_all()]
def execute(self, input_data):
raise NotImplementedError
def parse(self, input_data):
try:
return self.execute(input_data)
except Exception as exception:
raise ValidationError(exception)
class DateAndTimeParser(MetadataParser):
def execute(self, input_data):
return parse(input_data).isoformat()
class DateParser(MetadataParser):
def execute(self, input_data):
return parse(input_data).date().isoformat()
class TimeParser(MetadataParser):
def execute(self, input_data):
return parse(input_data).time().isoformat()
MetadataParser.register(DateAndTimeParser)
MetadataParser.register(DateParser)
MetadataParser.register(TimeParser)