DaveM@3
|
1 def parsePartnerDOB(dob):
|
DaveM@3
|
2 dob_ = dob.split('/')
|
DaveM@3
|
3 if(len(dob_) != 3):
|
DaveM@3
|
4 # deal with no /'s
|
DaveM@3
|
5 try:
|
DaveM@3
|
6 d = int(dob_[0])
|
DaveM@3
|
7 m = int(dob_[1])
|
DaveM@3
|
8 y = int(dob_[2])
|
DaveM@3
|
9 if y < 100:
|
DaveM@3
|
10 y = y + 1900
|
DaveM@3
|
11 if(d > 31 or m > 12 or y > 2017 or y < 1900):
|
DaveM@3
|
12 print 'error with DOB '+d+'/'+m+'/'+y
|
DaveM@3
|
13 except TypeError:
|
DaveM@3
|
14 return None
|
DaveM@3
|
15 return (d,m,y)
|
DaveM@3
|
16
|
DaveM@3
|
17 def monthStringToNum(s):
|
DaveM@3
|
18 m = {'jan':1,'feb':2,
|
DaveM@3
|
19 'mar':3,'apr':4,'may':5,
|
DaveM@3
|
20 'jun':6,'jul':7,'aug':8,
|
DaveM@3
|
21 'sep':9,'oct':10,'nov':11,
|
DaveM@3
|
22 'dec':12}
|
DaveM@3
|
23 s_ = string.strip()[:3].lower()
|
DaveM@3
|
24 try:
|
DaveM@3
|
25 out = m[s]
|
DaveM@3
|
26 return out
|
DaveM@3
|
27 except:
|
DaveM@3
|
28 raise ValueError('Not a month')
|
DaveM@3
|
29
|
DaveM@3
|
30 def parseDOB(d,m,y):
|
DaveM@3
|
31 d = int(d.strip())
|
DaveM@3
|
32 y = int(y.strip())
|
DaveM@3
|
33 try:
|
DaveM@3
|
34 m = monthStringToNum(m.strip())
|
DaveM@3
|
35 except ValueError:
|
DaveM@3
|
36 m = int(m.strip())
|
DaveM@3
|
37 if(y < 100):
|
DaveM@3
|
38 y = y + 1900
|
DaveM@3
|
39 return (d,m,y)
|
DaveM@3
|
40
|
DaveM@3
|
41 def parseTOB(T):
|
DaveM@3
|
42 timeFlat = None
|
DaveM@3
|
43 try:
|
DaveM@3
|
44 T = T.lower().strip()
|
DaveM@3
|
45 if 'am' in T:
|
DaveM@3
|
46 timeFlag = 0
|
DaveM@3
|
47 T.replace('am','')
|
DaveM@3
|
48 if 'pm' in T:
|
DaveM@3
|
49 timeFlag = 1
|
DaveM@3
|
50 T.replace('pm','')
|
DaveM@3
|
51 t.strip()
|
DaveM@3
|
52 if ':' in T:
|
DaveM@3
|
53 T.split(':')
|
DaveM@3
|
54 H = int(T[0])
|
DaveM@3
|
55 M = int(T[1])
|
DaveM@3
|
56 elif '.' in T:
|
DaveM@3
|
57 T.split('.')
|
DaveM@3
|
58 H = int(T[0])
|
DaveM@3
|
59 M = int(T[1])
|
DaveM@3
|
60 else:
|
DaveM@3
|
61 int(T)
|
DaveM@3
|
62 if T < 24 :
|
DaveM@3
|
63 H = T
|
DaveM@3
|
64 M = 0
|
DaveM@3
|
65 elif T > 100:
|
DaveM@3
|
66 H = T/100
|
DaveM@3
|
67 M = T%100
|
DaveM@3
|
68 if timeFlag is not None:
|
DaveM@3
|
69 if timeFlag == 0:
|
DaveM@3
|
70 H = H%12
|
DaveM@3
|
71 else:
|
DaveM@3
|
72 H = H%12 + 12
|
DaveM@3
|
73 except ValueError:
|
DaveM@3
|
74 H = 12
|
DaveM@3
|
75 M = 00
|
DaveM@3
|
76 return (H,M)
|
DaveM@3
|
77
|
DaveM@3
|
78 def regulateData(dataDict):
|
DaveM@3
|
79 p_DOBQ = "What is your partner's date of birth? Please use the format DD/MM/YYYY (for example, 29/03/1981)."
|
DaveM@3
|
80 p_TOBQ = "At what exact time were your partner born? Please use the format HHMM (for example, 2204)."
|
DaveM@3
|
81 DOB_DQ = "Which day (numeric) have you been born?"
|
DaveM@3
|
82 DOB_MQ = "Which month have you been born?"
|
DaveM@3
|
83 DOB_YQ = "Year Of Birth"
|
DaveM@3
|
84 TOB_Q = "At what exact time were you born? Please use the format HHMM (for example, 2204)."
|
DaveM@3
|
85 dataDict['DOB'] = parseDOB(dataDict[DOB_DQ],dataDict[DOB_MQ],dataDict[DOB_YQ])
|
DaveM@3
|
86 dataDict['TOB'] = parseTOB(dataDict[TOB_Q])
|
DaveM@3
|
87 dataDict['pDOB'] = parsePartnerDOB(dataDict[p_DOBQ])
|
DaveM@3
|
88 dataDict['pTOB'] = parseTOB(dataDict[p_TOBQ])
|
DaveM@3
|
89
|
DaveM@3
|
90 return dataDict |