coding cp1251 Информация типах даных порядке так далее Справочники Dic

  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
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# -*- coding: cp1251 -*-
"""
Информация о типах даных, порядке и так далее
"""
# Справочники
DictionaryInfo=[
# Сначала идет группа simple_spr
{
"dictname":"first_name", # Длинное имя справочника
"db_table_name":"spr_simple", # Таблица, в которйо ищется справочник
"db_spr_name":"fname", # название справочнка в БД
"spr_type":"simple", # тип, simple (простой) или paired (пара код-значение)
"used_in_list":("fname","dir_fname") # Список полей, для которых может использоваться справочник
},
{
"dictname":"last_name",
"db_table_name":"spr_simple",
"db_spr_name":"lname",
"spr_type":"simple",
"used_in_list":("lname","dir_lname")
},
{
"dictname":"street",
"db_table_name":"spr_simple",
"db_spr_name":"street",
"spr_type":"simple",
"used_in_list":("street","adr_street")
},
{
"dictname":"pop_area",
"db_table_name":"spr_simple",
"db_spr_name":"pop_area",
"spr_type":"simple",
"used_in_list":("pop_area","adr_pop_area")
},
# Парные справочники
{
"dictname":"agency_name",
"db_table_name":"spr_asko",
"db_spr_name":"agency",
"spr_type":"paired",
"used_in_list":("agency_cod")
},
{
"dictname":"agreem_type",
"db_table_name":"spr_asko",
"db_spr_name":"agr_type",
"spr_type":"paired",
"used_in_list":("agr_type")
},
{ # Район
"dictname":"district_name",
"db_table_name":"spr_asko",
"db_spr_name":"district",
"spr_type":"paired",
"used_in_list":("ds_cod","adr_ds_cod")
},
{ # Регион
"dictname":"region_name",
"db_table_name":"spr_asko",
"db_spr_name":"region",
"spr_type":"paired",
"used_in_list":("rg_cod","adr_rg_cod")
},
{ # Республика
"dictname":"republic_name",
"db_table_name":"spr_asko",
"db_spr_name":"republic",
"spr_type":"paired",
"used_in_list":("rp_cod","adr_rp_cod")
},
{ # Тип документа, удостоверяющего личность
"dictname":"pasport_type",
"db_table_name":"spr_asko",
"db_spr_name":"pasp_doc",
"spr_type":"paired",
"used_in_list":("pasp_doc")
},
{ # Тип документа
"dictname":"document_type",
"db_table_name":"spr_asko",
"db_spr_name":"doc_type",
"spr_type":"paired",
"used_in_list":("doc_type")
},
{ # Статус полиса
"dictname":"polis_status",
"db_table_name":"spr_asko",
"db_spr_name":"pol_sta",
"spr_type":"paired",
"used_in_list":("status_cod")
},
{ # Социальный статус человека (по полису)
"dictname":"social_status",
"db_table_name":"spr_asko",
"db_spr_name":"soc_sta",
"spr_type":"paired",
"used_in_list":("social_cod")
},
{ # Типа страховщика
"dictname":"str_type",
"db_table_name":"spr_asko",
"db_spr_name":"str_type",
"spr_type":"paired",
"used_in_list":("str_type")
}
]
class clDictionaryInfo:
"""
Предоставляет весь спектр информации о справочниках
Использует структуру DictionaryInfo, все изменения
следует приводить к изменению единйо структуры
"""
def __init__(self):
self.InfoList=DictionaryInfo
pass
def GetDictionaryFullArray(self):
"""
Return list of dictionaries
"""
return self.InfoList
def GetDictionaryLongNamesList(self):
"""
Возвращает список длинных имен справочников
"""
Result=[]
for item in self.GetDictionaryFullArray():
try:
Result.append(item["dictname"])
except KeyError:
raise LookupError("Can't find key 'dictname' in item.")
return None
return Result
def GetDictTypeOverDictName(self,dict_name):
"Возвращает тип справочника для имени справочника"
for item in self.GetDictionaryFullArray():
if dict_name==item["db_spr_name"]:
return item["spr_type"]
return None
def GetDictNameOverFieldName(self,field_name):
"Возвращает имя справочника для поля"
for item in self.GetDictionaryFullArray():
if field_name in item["used_in_list"]:
return item["db_spr_name"]
return None
def GetDictionaryNamesList(self):
"""
Возвращает список коротких имен справочников, как в БД
"""
Result=[]
for item in self.GetDictionaryFullArray():
try:
Result.append(item["db_spr_name"])
except KeyError:
raise LookupError("Can't find key 'db_spr_name' in item.")
return None
return Result
def GetTableNameOverDictName(self,name):
"""
Если такой справочник существует - возвращает имя таблицы для него
"""
if name==None or name not in self.GetDictionaryNamesList():
raise ValueError(u"Unknown dictionary name: "+unicode(name))
for item in self.GetDictionaryFullArray():
if item["db_spr_name"]==name:
return item["db_table_name"]
return
if __name__=="__main__":
Info=clDictionaryInfo()
print Info.GetDictionaryNamesList()