1 """GNUmed SOAP related defintions"""
2
3 __author__ = "Karsten Hilbert <Karsten.Hilbert@gmx.net>"
4 __license__ = 'GPL v2 or later (for details see http://gnu.org)'
5
6
7 if __name__ == '__main__':
8 _ = lambda x:x
9
10
11 _U_ELLIPSIS = '\u2026'
12
13 KNOWN_SOAP_CATS = list('soapu')
14 KNOWN_SOAP_CATS.append(None)
15
16
17 soap_cat2l10n = {
18 's': _('SOAP_char_S=S').replace('SOAP_char_S=', ''),
19 'o': _('SOAP_char_O=O').replace('SOAP_char_O=', ''),
20 'a': _('SOAP_char_A=A').replace('SOAP_char_A=', ''),
21 'p': _('SOAP_char_P=P').replace('SOAP_char_P=', ''),
22 'u': _('SOAP_char_U=U').replace('SOAP_char_U=', ''),
23 '': _U_ELLIPSIS,
24 None: _U_ELLIPSIS
25 }
26
27
28 soap_cat2l10n_str = {
29 's': _('SOAP_string_Subjective=Subjective').replace('SOAP_string_Subjective=', ''),
30 'o': _('SOAP_string_Objective=Objective').replace('SOAP_string_Objective=', ''),
31 'a': _('SOAP_string_Assessment=Assessment').replace('SOAP_string_Assessment=', ''),
32 'p': _('SOAP_string_Plan=Plan').replace('SOAP_string_Plan=', ''),
33 'u': _('SOAP_string_Unspecified=Unspecified').replace('SOAP_string_Unspecified=', ''),
34 '': _('SOAP_string_Administrative=Administrative').replace('SOAP_string_Administrative=', ''),
35 None: _('SOAP_string_Administrative=Administrative').replace('SOAP_string_Administrative=', '')
36 }
37
38
39 l10n2soap_cat = {
40 _('SOAP_char_S=S').replace('SOAP_char_S=', ''): 's',
41 _('SOAP_char_O=O').replace('SOAP_char_O=', ''): 'o',
42 _('SOAP_char_A=A').replace('SOAP_char_A=', ''): 'a',
43 _('SOAP_char_P=P').replace('SOAP_char_P=', ''): 'p',
44 _('SOAP_char_U=U').replace('SOAP_char_U=', ''): 'u',
45 _U_ELLIPSIS: None,
46 '.': None,
47 ' ': None,
48 '': None
49 }
50
51
53 """Normalizes a string or list of SOAP categories, preserving order.
54
55 None -> gmSoapDefs.KNOWN_SOAP_CATS (all)
56 [] -> []
57 u'' -> []
58 u' ' -> [None] (admin)
59 """
60 if soap_cats is None:
61 return KNOWN_SOAP_CATS
62
63 normalized_cats = []
64 for cat in soap_cats:
65 if cat in [' ', None]:
66 if None in normalized_cats:
67 continue
68 normalized_cats.append(None)
69 continue
70 cat = cat.lower()
71 if cat in KNOWN_SOAP_CATS:
72 if cat in normalized_cats:
73 continue
74 normalized_cats.append(cat)
75
76 return normalized_cats
77
78
80 for cat2test in soap_cats:
81 if cat2test in KNOWN_SOAP_CATS:
82 continue
83 if not allow_upper:
84 return False
85 if cat2test.upper() in KNOWN_SOAP_CATS:
86 continue
87 return False
88 return True
89
90
98
99
100 if __name__ == '__main__':
101
102 import sys
103
104 if len(sys.argv) < 2:
105 sys.exit()
106
107 if sys.argv[1] != 'test':
108 sys.exit()
109
110 sys.path.insert(0, '../../')
111
112 gmI18N.activate_locale()
113 gmI18N.install_domain()
114
115
119
120
122 cats = [
123 list('soap'),
124 list('soapSOAP'),
125 list('soapx'),
126 list('soapX'),
127 list('soapSOAPx'),
128 [None],
129 ['s', None],
130 ['s', None, 'O'],
131 ['s', None, 'x'],
132 ['s', None, 'X'],
133 ]
134 for cat_list in cats:
135 print(cat_list)
136 print(' valid (plain):', are_valid_soap_cats(cat_list, False))
137 print(' valid (w/ upper):', are_valid_soap_cats(cat_list, True))
138
139
140 test_translation()
141 test_are_valid_cats()
142