Start modeling of entities.

merge-requests/130/head
Jason Robinson 2015-07-03 00:39:17 +03:00
rodzic 1661f7aa6a
commit 4b4661423e
4 zmienionych plików z 88 dodań i 0 usunięć

Wyświetl plik

@ -0,0 +1,21 @@
from federation.entities.fields import TextField, GUIDField, HandleField, BooleanField, DateTimeField
class GUIDMixin(object):
guid = GUIDField(required=True)
class HandleMixin(object):
handle = HandleField(required=True)
class BaseEntity(object):
pass
class PostEntity(GUIDMixin, HandleMixin, BaseEntity):
"""Reflects a post, status message, etc, which will be composed from the message or to the message."""
raw_content = TextField(required=True)
public = BooleanField()
created_at = DateTimeField(required=True)
provider_display_name = TextField() # For example, client info

Wyświetl plik

@ -0,0 +1,66 @@
from datetime import datetime
from dirty_validators.basic import Email
class BaseField(object):
value = None
def __init__(self, required=False):
self.required = required
def __setattr__(self, key, value):
if key == "value":
if not value and self.required:
raise ValueError("Required value")
return super(BaseField, self).__setattr__(key, value)
class TextField(BaseField):
"""A base field with value."""
value = ""
def __init__(self, required=False, min_length=None):
super(TextField, self).__init__(required)
self.min_length = min_length
def __setattr__(self, key, value):
if key == "value":
if self.min_length and (not value or len(value) < self.min_length):
raise ValueError("Minimum lenght is %s" % self.min_length)
return super(TextField, self).__setattr__(key, value)
class GUIDField(TextField):
"""A GUID field."""
min_length = 16
class HandleField(TextField):
"""A field with a handle, ie username@domain.tld."""
validator = Email()
def __setattr__(self, key, value):
if key == "value" and not self.validator.is_valid(value):
raise ValueError("Handle is not valid")
return super(HandleField, self).__setattr__(key, value)
class BooleanField(BaseField):
"""A boolean field."""
value = False
def __setattr__(self, key, value):
if key == "value":
if not isinstance(value, bool):
raise ValueError("Value must be True or False")
return super(BooleanField, self).__setattr__(key, value)
class DateTimeField(BaseField):
"""A field with datetime."""
def __setattr__(self, key, value):
if key == "value" and value is not None:
if not isinstance(value, datetime):
raise ValueError("Value must be a datetime object")
return super(DateTimeField, self).__setattr__(key, value)

Wyświetl plik

@ -1,3 +1,4 @@
dirty-validators==0.3.2
lxml==3.4.4
pycrypto==2.6.1
python-dateutil==2.4.2