From 2ada0a2508fbf23db15d507ef12d73a824c80ba1 Mon Sep 17 00:00:00 2001 From: Alexei Date: Sat, 14 Oct 2023 22:14:42 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20?= =?UTF-8?q?=D1=81=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0?= =?UTF-8?q?=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- auth_docs/test_doc.odt | Bin 29149 -> 19082 bytes bot_modules/authorize.py | 20 +++++++++++++------- bot_modules/mod_table_operate.py | 4 ++-- template/docs_message.py | 25 +++++++++++++++---------- 4 files changed, 30 insertions(+), 19 deletions(-) diff --git a/auth_docs/test_doc.odt b/auth_docs/test_doc.odt index abc5c88005da731bdb37a0bdef955abb781597ee..e937454b43901dd0f3ed5cac7cd085c9fedf03ee 100644 GIT binary patch literal 19082 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 literal 29149 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 diff --git a/bot_modules/authorize.py b/bot_modules/authorize.py index e7250d4..1e572d6 100644 --- a/bot_modules/authorize.py +++ b/bot_modules/authorize.py @@ -5,7 +5,7 @@ from bot_sys import bot_bd, keyboard, user_access, bd_table, bot_subscribes, config from bot_modules import mod_table_operate, mod_simple_message -from template import docs_message, bd_item +from template import docs_message, bd_item, bd_item_select from enum import Enum from enum import auto @@ -53,6 +53,7 @@ init_access = f'{user_access.user_access_group_new}=va' def GetAuthorizeItem(a_Bot, a_UserID): items = bd_item.GetBDItemsTemplate(a_Bot, table_name, user_id_field)(a_UserID) + print('GetAuthorizeItem', items) if len(items) == 1: return items[0] return None @@ -274,7 +275,7 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): assert fam_name_field_id != None assert access_field_id != None return \ - a_Item[name_field_id] + ' ' + a_Item[fam_name_field_id] + '(' + a_Item[key_name_id] +')',\ + a_Item[name_field_id] + ' ' + a_Item[fam_name_field_id] + '(' + str(a_Item[key_name_id]) +')',\ a_Item[key_name_id],\ a_Item[access_field_id] @@ -283,8 +284,9 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): user_id = str(a_Message.from_user.id) item = GetAuthorizeItem(self.m_Bot, user_id) user_confirm_field_id = self.m_Table.GetFieldIDByDestiny(bd_table.TableFieldDestiny.USER_CONFIRM) + print('GetStartKeyboardButtons', item, user_confirm_field_id) cur_buttons = [] - if item and item[user_confirm_field_id] == str(ConfirmStatus.YES): + if item and item[user_confirm_field_id] == self.GetMessage(mod_table_operate.EnumMessageForView(ConfirmStatus.YES)).GetDesc(): cur_buttons += [ keyboard.ButtonWithAccess(self.GetButton(ButtonNames.LIST_AUTH_DOCS), user_access.AccessMode.VIEW, self.GetAccess()), ] @@ -298,7 +300,8 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): cur_dict = GetReplaceDictFunc(self.m_Bot, a_user_id) result = {} for f in files: - result.update({f, cur_dict}) + result.update({f: cur_dict}) + print(cur_dict) return result button_name = self.GetButton(ButtonNames.LIST_AUTH_DOCS) @@ -323,18 +326,21 @@ class ModuleAuthorize(mod_table_operate.TableOperateModule): return super().AddBDItemFunc(a_ItemData, a_UserID) def GetReplaceDictFunc(a_Bot, a_user_id): - item = GetAuthorizeItem(self.m_Bot, user_id) + item = GetAuthorizeItem(a_Bot, a_user_id) if not item: return None result = {} i = 0 - for f in table: - result.update({str(f.m_Destiny), item[i]}) + for f in table.GetFields(): + result.update({str(f.m_Destiny): item[i]}) i += 1 + print(result) return result auth_docs_file_name = 'config_auth_docs' +g_auth_docs = [] + def GetAuthDocs(): global g_auth_docs if len(g_auth_docs) == 0: diff --git a/bot_modules/mod_table_operate.py b/bot_modules/mod_table_operate.py index 2fc8a8d..f826fc8 100644 --- a/bot_modules/mod_table_operate.py +++ b/bot_modules/mod_table_operate.py @@ -406,7 +406,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): ) def GetAddFields(self): - good_destiny = ( + add_destiny = ( bd_table.TableFieldDestiny.NAME, bd_table.TableFieldDestiny.DESC, bd_table.TableFieldDestiny.PHOTO, @@ -422,7 +422,7 @@ class TableOperateModule(mod_simple_message.SimpleMessageModule): ) fields = [] for f in self.m_Table.GetFields(): - if f.m_Destiny in good_destiny: + if f.m_Destiny in add_destiny: fields += [f] return fields diff --git a/template/docs_message.py b/template/docs_message.py index 7544125..e910632 100644 --- a/template/docs_message.py +++ b/template/docs_message.py @@ -6,7 +6,7 @@ from bot_sys import log, config, user_access from bot_modules import groups_utils from template import simple_message -import odf +#import odf def DocFilesTemplate(a_Bot, a_FilesFunc, a_CaptionMessage, a_AccessFunc, a_GetButtonsFunc, a_GetInlineButtonsFunc, a_ErrorMessage, access_mode = user_access.AccessMode.EDIT): async def DocFiles(a_Message): @@ -23,11 +23,11 @@ def DocFilesTemplate(a_Bot, a_FilesFunc, a_CaptionMessage, a_AccessFunc, a_GetBu await simple_message.SendMessage(a_Bot, a_ErrorMessage, a_GetButtonsFunc, None, user_id, a_Message, user_groups) return - for file_path, dict_replace in files.values(): + for file_path, dict_replace in files.items(): if not dict_replace: continue new_file = await MakeDocFile(a_Bot, file_path, dict_replace, user_id) - document = await GetFile(a_Bot, file_path) + document = await GetFile(a_Bot, new_file) if document is None: await simple_message.SendMessage(a_Bot, a_ErrorMessage, a_GetButtonsFunc, None, user_id, a_Message, user_groups) else: @@ -40,20 +40,25 @@ def DocFilesTemplate(a_Bot, a_FilesFunc, a_CaptionMessage, a_AccessFunc, a_GetBu ) return DocFiles +from odf import opendocument, text, teletype + async def MakeDocFile(a_Bot, a_FilePath, a_DictReplace, a_user_id): - document = odf.opendocument.load(a_FilePath) + print ('MakeDocFile', a_FilePath) + #FixBadZipfile(a_FilePath) + document = opendocument.load(a_FilePath) # odf.opendocuement. if document == None: a_Bot.GetLog().Error(f'Не удалось загрузить файл {a_FilePath}.') return None for element in document.getElementsByType(text.Span): - extracted_text = odf.teletype.extractText(element) + extracted_text = teletype.extractText(element) + print('MakeDocFile', extracted_text) - for file_path, dict_replace in a_DictReplace.values(): - if extracted_text.find('Replace this') != -1: - extracted_text = extracted_text.replace('Replace this', 'to this') + for rep_this, to_this in a_DictReplace.items(): + if extracted_text.find(rep_this) != -1: + extracted_text = extracted_text.replace(rep_this, to_this) - new_element = odf.text.Span() + new_element = text.Span() new_element.setAttribute('stylename', element.getAttribute('stylename')) new_element.addText(extracted_text) @@ -61,7 +66,7 @@ async def MakeDocFile(a_Bot, a_FilePath, a_DictReplace, a_user_id): element.parentNode.removeChild(element) new_file_path = a_FilePath[:-4] - new_file_path += f"{a_user_id}.odt" + new_file_path += f"_{a_user_id}.odt" document.save(new_file_path) return new_file_path