-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEntry.py
More file actions
62 lines (53 loc) · 1.79 KB
/
Entry.py
File metadata and controls
62 lines (53 loc) · 1.79 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
import re
class Entry:
def __init__(self):
self.name = ""
self.surname = ""
self.phone = ""
self.city = ""
self.email = ""
def to_string(self):
fields = vars(self)
return ', '.join([field + ':' + fields[field] for field in fields])
def parse(self, text):
text = re.split(', |:|\n', text)
self.name = text[1]
self.surname = text[3]
self.phone = text[5]
self.city = text[7]
self.email = text[9]
def trySetValue(self, field_name, field_value):
if field_name == 'name' or field_name == 'surname' or field_name == 'city':
if Entry.validateField(field_value):
vars(self)[field_name] = str.title(field_value)
return True
return False
elif field_name == 'phone':
if Entry.validatePhone(field_value):
self.phone = field_value
return True
return False
elif field_name == 'email':
if Entry.validateEmail(field_value):
self.email = field_value
return True
return False
def fits(self, query):
query = str.lower(query)
return query == str.lower(self.name) or query == str.lower(self.surname) or query == self.phone \
or query == str.lower(self.city) or query == str.lower(self.email)
@staticmethod
def validateEmail(email):
has_at = False
for symbol in email:
if symbol == '@':
has_at = True
elif symbol == '.' and has_at:
return True
return False
@staticmethod
def validatePhone(phone):
return str.isdigit(phone)
@staticmethod
def validateField(field):
return len(field) > 0