summaryrefslogtreecommitdiff
path: root/model.py
diff options
context:
space:
mode:
authorRaúl Benencia <rbenencia@linti.unlp.edu.ar>2012-08-02 13:18:26 -0300
committerRaúl Benencia <rbenencia@linti.unlp.edu.ar>2012-08-02 13:18:26 -0300
commit588a241bebfc477ef117c3f87e5c405edbe5bec5 (patch)
treeb8472c8c1f06a644bb5db9dc15da27b407b8a18b /model.py
parentab15c97378d41e6084eac42843e44733d1444bd7 (diff)
Updated model classes
Diffstat (limited to 'model.py')
-rw-r--r--model.py77
1 files changed, 77 insertions, 0 deletions
diff --git a/model.py b/model.py
new file mode 100644
index 0000000..5894e05
--- /dev/null
+++ b/model.py
@@ -0,0 +1,77 @@
+from xml.etree.ElementTree import ElementTree
+
+class Network():
+ """A simple network definition"""
+
+ def __init__(self, name):
+ self.name = name
+ self.domain = []
+ self.ip_blocks = []
+ self.data = {}
+
+class Domain():
+ """A simple domain definition"""
+
+ def __init__(self, name, domain):
+ self.name = name
+ self.domain = domain
+ self.admins = []
+
+ def add_admin(self, admin):
+ """Add an administrator for this network"""
+
+ self.admins.append(admin)
+
+class Person():
+ """A simple person definition"""
+
+ def __init__(self, name, surname, email):
+ self.name = name
+ self.surname = surname
+ self.email = email
+
+class Data():
+ """Abstract class for storing anf getting information"""
+
+ def __init__(self, config):
+ self.networks = []
+ self.config = config
+
+ def parse_config(self):
+ """Abstract method"""
+
+ pass
+
+ def load_data(self):
+ """Abstract method"""
+
+ pass
+
+ def get_networks(self):
+ """Return all networks. Common method for all kind of storages."""
+
+ if self.networks == None:
+ self.load_data()
+
+ return self.networks
+
+class DataXML(Data):
+ """Reads network information from a XML file"""
+
+ def parse_config():
+ """Reads and sets up XML config file fields"""
+
+ self.data_file = self.config['Storage']['xml_file']
+
+ def load_data(self):
+ """Parse XML for getting network information""" # Ugly implementation. Beautify.
+ root = ElementTree(file=self.data_file).getroot()
+ for elem in root:
+ network = WhoisNetwork(elem.attrib['name'])
+ for e in elem:
+ if e.tag == 'ip_block':
+ network.ip_blocks.append(e.text)
+ else:
+ network.data[e.tag] = e.text
+
+ self.networks.append(network)
nihil fit ex nihilo