35 def move_admin(admin_transaction,
39 """Migrate admin data in a single transaction 42 admin_transaction: transaction to commit all insertions for admin 43 _mmth_admin_dict: response dictionary from Mammoth for admin 44 _verbose: verbosity flag 45 _cu: current credit union code 48 psycopg2.Error, psycopg2.Warning on db operation errors 50 mmth_admin_data = _mmth_admin_dict[
"data"]
52 progress_dict = {
"completed": 0,
"total": 16}
55 mmth_admin_users_coll = mmth_admin_data[
"adminusers"]
56 for adminuser_dict
in mmth_admin_users_coll:
57 cuadminusers_coll = adminuser_dict[
"cuadminusers"]
60 if type(cuadminusers_coll) == list:
61 assert len(cuadminusers_coll) == 0
62 cuadminusers_coll = {}
65 assert type(cuadminusers_coll) == dict
66 mfaquest = get_valid_json({})
67 mfaquest_dict = {
"answers": {}}
73 cuadmquestselect_coll = adminuser_dict[
"cuadmquestselect"]
74 if len(cuadmquestselect_coll) != 0:
75 for cuquest_record
in cuadmquestselect_coll:
76 if cuadminusers_coll != {}:
77 qid = cuquest_record[
"quest_id"].strip()
78 ans = cuquest_record[
"answer"].strip()
79 mfaquest_dict[
"answers"][qid] = ans
82 if cuadminusers_coll != {}:
83 mfaquest = get_valid_json(mfaquest_dict)
84 cuadminusers_coll[
"mfaquest"] = mfaquest
86 cuadminusers_coll[
"user_name"] = cuadminusers_coll[
91 list(cuadminusers_coll.keys()),
92 list(cuadminusers_coll.values())
96 for tbl_allow_exclude_progs
in [
"cuadminallow",
"cuadminexclude"]:
99 cuadmin_allow_exclude_data = adminuser_dict[
100 tbl_allow_exclude_progs]
102 for ind
in range(len(cuadmin_allow_exclude_data)):
103 cuadminallow_rec = cuadmin_allow_exclude_data[ind]
104 cuadminallow_program = get_strip_value_dict(
"program",
108 cuadminallow_rec[
"user_name"] =\
109 cuadminallow_rec[
"user_name"].lower()
111 if cuadminallow_program
in CUADMINPROGS_PERMISSIONS_MAPPING:
112 cuadminallow_rec[
"program"] = \
113 CUADMINPROGS_PERMISSIONS_MAPPING[cuadminallow_program]
117 tbl_allow_exclude_progs,
118 collection=cuadmin_allow_exclude_data
123 cuauditadmin_coll = adminuser_dict[
"cuauditadmin"]
125 for cuaudadm_rec
in cuauditadmin_coll:
128 cuaudadm_rec[
"user_name"] = cuaudadm_rec[
"user_name"].lower()
130 mmth_cu = get_strip_value_dict(
132 assert mmth_cu == _cu
133 del cuaudadm_rec[
"admuser"]
134 cuaudadm_rec[
"auditdate"] = get_strip_value_dict(
135 "chdate", cuaudadm_rec, pop=
True)
136 cuaudadm_rec[
"auditaction"] = get_strip_value_dict(
137 "action", cuaudadm_rec, pop=
True)
138 cuaudadm_rec[
"auditsrctype"] =
"A" 139 cuaudadm_rec[
"auditsrcuser_name"] = get_strip_value_dict(
140 "user_name", cuaudadm_rec)
141 cuaudadm_rec[
"auditsrcemail"] = get_strip_value_dict(
142 "email", cuaudadm_rec, pop=
True, default=
"a@b.cde")
143 cuaudadm_rec[
"auditsrcip"] =
"127.0.0.1" 148 collection=cuauditadmin_coll
151 progress_dict[
"completed"] += 4
152 log_progress(progress_dict)
154 cusurvey_surveyid_map = {}
155 mmth_cusurveymaster_records = mmth_admin_data[
"cusurveymaster"]
156 for cusurvey_rec
in mmth_cusurveymaster_records:
157 old_id = cusurvey_rec[
"surveyid"].strip()
158 del cusurvey_rec[
"surveyid"]
162 list(cusurvey_rec.keys()),
163 list(cusurvey_rec.values()),
164 returning_col=
"surveyid" 166 new_id = admin_transaction.cur.fetchone()[0]
167 cusurvey_surveyid_map[old_id] = new_id
169 adm_tbls_cusurvey = [
"cusurveyquest",
"cusurveydetail"]
170 for tbl_cusurvey
in adm_tbls_cusurvey:
171 tbl_coll = mmth_admin_data[tbl_cusurvey]
173 for cusurvey_other_rec
in tbl_coll:
174 assert "surveyid" in cusurvey_other_rec
175 cusurvey_other_rec[
"surveyid"] = cusurvey_surveyid_map[
176 cusurvey_other_rec[
"surveyid"].strip()]
184 with open(ADMIN_CUSURVEY_ID_MAP_CSV_FILE.format(_cu.lower()),
186 newline=
'')
as cusurvey_csvfile:
187 cusurvey_csvwriter = csv.writer(
188 cusurvey_csvfile, delimiter=
',',
190 quoting=csv.QUOTE_MINIMAL
192 cusurvey_csvwriter.writerow([
"cusurveymaster_surveyid_old, cusurveymaster_surveyid_new"])
193 for survey_oldid, survey_newid
in cusurvey_surveyid_map.items():
194 cusurvey_csvwriter.writerow([survey_oldid, survey_newid])
198 adm_tbls_no_schema_chng = [
205 for tbl
in adm_tbls_no_schema_chng:
209 collection=mmth_admin_data[tbl]
213 mmth_admin_cualertmsgs_coll = mmth_admin_data[
"cualertmsgs"]
214 for cualertmsgs_record
in mmth_admin_cualertmsgs_coll:
216 del cualertmsgs_record[
"alertid"]
221 collection=mmth_admin_cualertmsgs_coll
224 progress_dict[
"completed"] += 9
225 log_progress(progress_dict)
228 cucontact_coll = mmth_admin_data[
"cucontact"]
232 collection=cucontact_coll
235 progress_dict[
"completed"] += 1
236 log_progress(progress_dict)
239 extkey_coll = mmth_admin_data[
"extkey"]
240 for extkey_rec
in extkey_coll:
241 extk_accnum = get_strip_value_dict(
"accountnumber", extkey_rec)
242 assert extk_accnum
is not None 243 user_id = admin_transaction(
245 "{}memberacct".format(_cu.lower()),
246 where_conditions={
"accountnumber": extk_accnum},
247 select_columns=[
"primary_user"]
250 if len(user_id) == 1:
251 user_id = user_id[0][0]
256 extkey_rec[
"user_id"] = user_id
260 "{}extkey".format(_cu.lower()),
261 collection=extkey_coll
263 progress_dict[
"completed"] += 1
264 log_progress(progress_dict)
268 cualtroute_coll = mmth_admin_data[
"cualtroute"]
272 collection=cualtroute_coll
275 progress_dict[
"completed"] += 1
276 log_progress(progress_dict)
280 @pg_crsr_hndlr_decrtr