-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmodels.py
More file actions
62 lines (50 loc) · 1.86 KB
/
models.py
File metadata and controls
62 lines (50 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Date
from helpers import squash_to_none, convert_to_date
from enumtype import EnumAsInteger
from enum import Enum
import json, validators
Base = declarative_base()
class Status(Enum):
UNKNOWN = None
PENDING = 1 # NEW
UNREGISTERED = 2
REGISTERED = 3
class Domain(Base):
__tablename__ = 'domains'
id = Column(Integer, primary_key=True)
domainname = Column(String, unique=True)
registrar = Column(String)
date_created = Column(Date)
date_expires = Column(Date)
owner_name = Column(String)
owner_address = Column(String)
owner_email = Column(String)
owner_phone = Column(String)
nameserver = Column(String)
parameters = Column(String, default="{}")
def get_status(self):
if self.registrar == None:
return Status.UNKNOWN
elif self.registrar == "Available":
return Status.UNREGISTERED
else:
return Status.REGISTERED
def set_whois_data(self, whois_data):
self.registrar = squash_to_none(whois_data["registrar"])
self.date_created = convert_to_date(whois_data["created"])
self.date_expires = convert_to_date(whois_data["expires"])
self.owner_name = squash_to_none(whois_data["owner_name"])
self.owner_address = squash_to_none(whois_data["owner_address"])
self.owner_email = squash_to_none(whois_data["owner_email"])
self.owner_phone = squash_to_none(whois_data["owner_phone"])
self.nameserver = squash_to_none(whois_data["nserver"])
def get_json_parameters(self):
return json.parses(self.parameters)
def set_json_parameters(self, parameters):
self.parameters = json.dumps(parameters)
def has_valid_domain_name(self):
return validators.domain(self.domainname)
def __repr__(self):
return "<Domain(domainname='%s', registrar='%s', expires='%s', params='%s')>" % (
self.domainname, self.registrar, self.date_expires, self.parameters)