
from mirri.entities.strain import Taxonomy

#TODO this is all wrong, needs deep revision

class TaxonomyMirri(Taxonomy):
    def __init__(self, **kwargs):
        super().__init__(freeze=False, **kwargs)

    fields = ['record_id', 'record_name', 'acronym', 'full_description',
              'ingredients', 'description', 'other_name', 'ph',
              'sterilization_conditions']

    def __init__(self, **kwargs):
        self._data = {}
        for field in self.fields:
            if field in kwargs and kwargs['field'] is not None:
                value = kwargs['field']
                setattr(self, field, value)

    def __setattr__(self, attr, value):
        if attr == '_data':
            super().__setattr__(attr, value)
            return
        if attr not in self.fields:
            raise TypeError(f'{attr} not an allowed attribute')
        self._data[attr] = value

    def __getattr__(self, attr):
        if attr == '_data':
            return super
        if attr not in self.fields and attr != '_data':
            raise TypeError(f'{attr} not an allowed attribute')
        return self._data.get(attr, None)

    def dict(self):
        return self._data


def serialize_from_biolomics(ws_data, client=None) -> TaxonomyMirri:

    return ws_data
    medium = GrowthMedium()
    medium.record_name = ws_data.get('RecordName', None)
    medium.record_id = ws_data.get('RecordId', None)
    for key, value in ws_data['RecordDetails'].items():
        value = value['Value']
        if not value:
            continue

        if key == "Full description":
            medium.full_description = value
        if key == "Ingredients":
            medium.ingredients = value
        if key == 'Medium description':
            medium.description = value
        if key == 'Other name':
            medium.other_name= value
        if key == 'pH':
            medium.ph = value
        if key == 'Sterilization conditions':
            medium.sterilization_conditions = value

    return medium
