D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
thread-self
/
root
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
linode
/
Filename :
fields.py
back
Copy
from datetime import datetime class Field(object): to_py = lambda self, value: value to_linode = to_py def __init__(self, field): self.field = field class IntField(Field): def to_py(self, value): if value is not None and value != '': return int(value) to_linode = to_py class FloatField(Field): def to_py(self, value): if value is not None: return float(value) to_linode = to_py class CharField(Field): to_py = lambda self, value: str(value) to_linode = to_py class BoolField(Field): def to_py(self, value): if value in (1, '1'): return True else: return False def to_linode(self, value): if value: return 1 else: return 0 class ChoiceField(Field): to_py = lambda self, value: value def __init__(self, field, choices=[]): Field.__init__(self, field) self.choices = choices def to_linode(self, value): if value in self.choices: return value else: raise AttributeError class ListField(Field): def __init__(self, field, type=Field(''), delim=','): Field.__init__(self, field) self.__type=type self.__delim=delim def to_linode(self, value): return self.__delim.join([str(self.__type.to_linode(v)) for v in value]) def to_py(self, value): return [self.__type.to_py(v) for v in value.split(self.__delim) if v != ''] class DateTimeField(Field): to_py = lambda self, value: datetime.strptime(value, '%Y-%m-%d %H:%M:%S.0') to_linode = lambda self, value: value.strftime('%Y-%m-%d %H:%M:%S.0') class ForeignField(Field): def __init__(self, field): self.field = field.primary_key self.__model = field def to_py(self, value): return self.__model.get(id=value) def to_linode(self, value): if isinstance(value, int): return value else: return value.id