| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import psycopg2
- from psycopg2.extras import DictCursor
- import os
- from dotenv import load_dotenv
- # Список организаций, сотрудников и корреспонденций
- organizations = []
- employees = []
- correspondencies = []
- # Подключение к базе данных
- conn = None
- # Инициализация подключения к базе данных
- def init_connection(username, password):
- global conn
- # Загрузка переменных окружения из .env файла
- load_dotenv()
- # Подключение к базе данных
- conn = psycopg2.connect(
- dbname=os.getenv("DB_NAME"),
- user=username,
- password=password,
- host=os.getenv("DB_HOST"),
- port=os.getenv("DB_PORT")
- )
- # Изменяем текущую схему
- with conn.cursor() as cur:
- cur.execute(f"SET search_path TO {os.getenv('DB_SCHEMA')};")
- # Получение всех организаций
- def get_all_organizations():
- global organizations
- with conn.cursor(cursor_factory=DictCursor) as cur:
- cur.execute("SELECT id, name, legal_form FROM organization;")
- organizations = cur.fetchall()
- # Получение всех сотрудников
- def get_all_employees():
- global employees
- with conn.cursor(cursor_factory=DictCursor) as cur:
- cur.execute("SELECT id, name, lastname, patronymic, organization_id FROM employee;")
- employees = cur.fetchall()
- # Получение всех корреспонденций
- def get_all_correspondencies():
- global correspondencies
- with conn.cursor(cursor_factory=DictCursor) as cur:
- cur.execute("SELECT id, document_type, document_number, receipt_date, execution_date, employee_id FROM correspondence;")
- correspondencies = cur.fetchall()
- # Добавление новой корреспонденции
- def add_correspondence(document_type, document_number, receipt_date, execution_date, employee_id):
- with conn.cursor() as cur:
- cur.execute(
- "INSERT INTO correspondence (document_type, document_number, receipt_date, execution_date, employee_id) VALUES (%s, %s, %s, %s, %s) RETURNING id;",
- (document_type, document_number, receipt_date, execution_date, employee_id)
- )
- new_id = cur.fetchone()[0]
- conn.commit()
- return new_id
-
- # Редактирование существующей корреспонденции
- def edit_correspondence(correspondence_id, document_type, document_number, receipt_date, execution_date, employee_id):
- with conn.cursor() as cur:
- cur.execute(
- "UPDATE correspondence SET document_type = %s, document_number = %s, receipt_date = %s, execution_date = %s, employee_id = %s WHERE id = %s;",
- (document_type, document_number, receipt_date, execution_date, employee_id, correspondence_id)
- )
- conn.commit()
- # Удаление корреспонденции
- def delete_correspondence(correspondence_id):
- with conn.cursor() as cur:
- cur.execute("DELETE FROM correspondence WHERE id = %s;", (correspondence_id,))
- conn.commit()
- # Подсчитать количество корреспонденций для выбранной
- def count_correspondencies_by_organization(organization_id):
- with conn.cursor() as cur:
- cur.execute(
- "SELECT COUNT(*) FROM correspondence c JOIN employee e ON c.employee_id = e.id WHERE e.organization_id = %s;",
- (organization_id,)
- )
- count = cur.fetchone()[0]
- return count
|