Добавлен список подключенных баз

main
Satur@it-depot.ru 2024-10-22 12:27:36 +03:00
parent 6be4e229d2
commit 5027a69f56
1 changed files with 54 additions and 94 deletions

View File

@ -4,60 +4,6 @@ from tkinter import messagebox
import pyodbc
import uuid
print("""
....:::::::::
::::::::::-----::::::
::::------------=--------::..
:::--=--============---==+===-:::.
::---========++=++++======+++++==--:.:
:--==++++++++++++++++++========---==-::.
--==++++++++++++++++++++=====---:::-==--::
:-==+**++++++++++++++++++====------::-==-::
-==+**++++++++++++++++++++=====--------=-::
-=++*++++++++++++++++++++++=========-----::
-=+++++++++++++++++++++++++===========----:
:=++++++++++++++++++++++++++==========---::
-=++++++++++++++++++===+++++===-----====--
-=++++++++++++++++++++==+++++=====-----==-
-++++++++++++++++++++++++++++++++====-----
==+++++++*#####*******++++++++++++++++=--=
+===++++++****##%%%%##*****++++**###%##*+==-
+*++=++++****#%##%@%%%%###***++*#%%%%%###*===-
+*++=++++**####*#%@%#%%%##**++*#%%%@@%+*%%*+=-
*++=+++++**+****####%%##*++==+#%%#%%#+++*+==-
+*+++++++++++****###****++=====*####*++=====-
+*=+++++++++++++++++++++++=======+**++=-----
+*=+++++++++++++++++***++++==-=====+++==----
++=+++++++++++++++*****+++==---===========--
+=+++++++++++++*****+++++===---++======--=-
==++++++++++**********+++++==--+++++=====-
-==+++++++++*********##*******==++++++===-
-==++++++++*****#**##*####**+====++++++==
#%%%%%===+++++++++***##*****####**++++++==+++=-
*+*#%%%#*+====++++++++**#%%%##****##********+====-
++++++*##%@%#+++**====+++++++*##############***###*+====-
++******###%%@@@@@%####*+=+==+++++**************+++++=+*++===-
#***+**#*###%@@@@@@@@@@@@@%###*+=+==++++*****++*********++==++++=-=+=+=-
#*#%%%###%%@@@@@@@@@@@@@@@@%###*++++++++**+************+++========*****++==-
%%%######%%####%@@@@@@@@@@@@@@%%**+++++++++++++++***+++=========*###******+++++==
%%@@@@%%%%%%%%%#%%@@@@@@@@@@@@@@%#**+*+**++++++++++++++++=====+%###########***++++*
%@@@@@@@@@%%@@%%%%%%%@@@@@@@@@@@@@@###*****++++++*+++++++===+**#%####%###%####***+***
%%%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@%####**++++***++++*#####*%##%####%#%%%%##*******
%%%%@%@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@%%%%%%##%%%@%%####*%%#%####%#%%%%%#########
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##%#*#%#%####%##%%%%%%###%#%##
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%#%%###%######%##%#%%%%%%%%%%%##
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%####%%#####%##%%%%%%%%%%%%%###
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%####%%#%%##%#%%%%%%%%%%@%@%###
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%#####%%%#%%%%#%%%%%%%@@@@@@@%%##
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%%#%%%%##%%#%%%%%%%%%%%%@@@@@@@%%#**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@%####%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@%%%#**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%%%@@@@%%%%%%%#%%%%%%%##%%%%%%%%%%%%%%%%%@@@@@@%%%%##**
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%@@@@%%@@@@@@@%%%%%%##%%%%%%%###%%%%%%%%%%%%%%%%%@@%%%%%%%%##*+
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@%%%%@@@@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%###%%*#
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@@@@%@@@%@@@@@@@%%%@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%@%%%%
""")
class RemoteFolderSelector(tk.Tk):
def __init__(self):
super().__init__()
@ -130,6 +76,10 @@ class RemoteFolderSelector(tk.Tk):
self.add_button = tk.Button(self.frame_left, text="Add to ibases.v8i", command=self.add_database_to_ibases)
self.add_button.grid(row=4, column=0, padx=5, pady=5)
# Список баз из файла ibases.v8i
self.ibases_listbox = tk.Listbox(self.frame_left, width=30, height=10)
self.ibases_listbox.grid(row=5, column=0, padx=5, pady=5)
# Загрузка пользователей с локального компьютера по умолчанию
self.load_users()
@ -171,11 +121,46 @@ class RemoteFolderSelector(tk.Tk):
messagebox.showerror("Error", f"Could not load remote users: {str(e)}")
def select_user(self, event):
"""Обработчик двойного клика для выбора пользователя."""
"""Обработчик двойного клика для выбора пользователя и загрузки баз из файла ibases.v8i."""
selected_index = self.folder_listbox.curselection()
if selected_index:
self.selected_user = self.folder_listbox.get(selected_index)
messagebox.showinfo("User Selected", f"Selected User: {self.selected_user}")
self.load_ibases()
def load_ibases(self):
"""Загружаем базы данных из файла ibases.v8i выбранного пользователя."""
try:
# Определяем путь к файлу ibases.v8i
if not self.ip_address:
base_path = f"C:\\Users\\{self.selected_user}\\AppData\\Roaming\\1C\\1CEStart"
else:
base_path = f"\\\\{self.ip_address}\\C$\\Users\\{self.selected_user}\\AppData\\Roaming\\1C\\1CEStart"
ibases_path = os.path.join(base_path, "ibases.v8i")
if not os.path.exists(ibases_path):
messagebox.showinfo("Info", f"No ibases.v8i file found for user: {self.selected_user}")
return
with open(ibases_path, "r", encoding="utf-8") as file:
lines = file.readlines()
# Ищем строки с названиями баз данных (начинаются с [)
databases = [line.strip()[1:-1] for line in lines if line.startswith("[")]
if not databases:
messagebox.showinfo("Info", "No databases found in ibases.v8i")
return
# Сортируем базы в алфавитном порядке и выводим их в Listbox
databases.sort()
self.ibases_listbox.delete(0, tk.END)
for db in databases:
self.ibases_listbox.insert(tk.END, db)
except Exception as e:
messagebox.showerror("Error", f"Could not load databases from ibases.v8i: {str(e)}")
def load_databases(self):
"""Подключаемся к SQL серверу и загружаем список баз данных."""
@ -196,69 +181,44 @@ class RemoteFolderSelector(tk.Tk):
for db in databases:
self.db_listbox.insert(tk.END, db[0])
cursor.close()
connection.close()
except Exception as e:
messagebox.showerror("Error", f"Could not connect to SQL server: {str(e)}")
messagebox.showerror("Error", f"Could not load databases: {str(e)}")
def select_database(self, event):
"""Обработчик двойного клика для выбора базы данных."""
selected_index = self.db_listbox.curselection()
if selected_index:
self.base_name = self.db_listbox.get(selected_index)
self.server_name = self.server_entry.get()
messagebox.showinfo("Database Selected", f"Selected Database: {self.base_name}\nServer: {self.server_name}")
messagebox.showinfo("Database Selected", f"Selected Database: {self.base_name}")
def add_database_to_ibases(self):
"""Добавляем выбранную базу в файл ibases.v8i, создавая папки и файл при необходимости."""
if not self.selected_user or not self.base_name or not self.server_name:
messagebox.showerror("Error", "User, database, or server not selected!")
"""Добавляем базу данных в файл ibases.v8i."""
if not self.base_name:
messagebox.showerror("Error", "No database selected.")
return
try:
# Определяем путь к файлу ibases.v8i в зависимости от локальности
if not self.ip_address:
# Локальный путь
base_path = f"C:\\Users\\{self.selected_user}\\AppData\\Roaming\\1C\\1CEStart"
else:
# Удалённый путь
base_path = f"\\\\{self.ip_address}\\C$\\Users\\{self.selected_user}\\AppData\\Roaming\\1C\\1CEStart"
ibases_path = os.path.join(base_path, "ibases.v8i")
# Проверяем наличие папок, если их нет, создаём
if not os.path.exists(base_path):
os.makedirs(base_path)
messagebox.showinfo("Info", f"Created missing directories: {base_path}")
# Проверяем наличие файла ibases.v8i, если его нет, создаём
if not os.path.exists(ibases_path):
with open(ibases_path, "w", encoding="utf-8") as f:
f.write("") # Создаём пустой файл
messagebox.showinfo("Info", f"Created missing file: {ibases_path}")
with open(ibases_path, "w", encoding="utf-8") as file:
file.write(f"[{self.base_name}]\n")
else:
with open(ibases_path, "a", encoding="utf-8") as file:
file.write(f"[{self.base_name}]\n")
# Формируем запись базы
new_base = f"""
[{self.base_name}]
Connect=Srvr="{self.server_name}";Ref="{self.base_name}";
ID={uuid.uuid4()}
OrderInList=255
Folder=/
OrderInTree=16640
External=0
ClientConnectionSpeed=Normal
App=Auto
WA=1
Version=8.3
DefaultApp=ThickClient
DisableLocalSpeechToText=0
"""
messagebox.showinfo("Success", f"Database {self.base_name} added to ibases.v8i")
# Добавляем запись в файл ibases.v8i
with open(ibases_path, "a", encoding="utf-8") as ibases_file:
ibases_file.write(new_base)
# Перезагружаем список баз данных после добавления
self.load_ibases()
messagebox.showinfo("Success", f"Database added to ibases.v8i for user: {self.selected_user}")
except Exception as e:
messagebox.showerror("Error", f"Could not add database to ibases.v8i: {str(e)}")