rebase 0.4 and create 0.5

This commit is contained in:
ada-dmitry
2024-05-05 14:29:47 +03:00
parent 193ad02635
commit 64639d22f6
64 changed files with 615 additions and 0 deletions
+43
View File
@@ -0,0 +1,43 @@
# Таблица с категориями и действия с ними
from dbtable import *
class CathTable(DbTable):
def table_name(self):
return self.dbconn.prefix + "cath"
def columns(self):
return {"id": ["serial", "PRIMARY KEY"],
"cath_name": ["varchar(32)", "NOT NULL"]}
def table_constraints(self):
return ['CONSTRAINT "Name" UNIQUE (cath_name)']
def delete(self, val):
sql = "DELETE FROM " + self.table_name()
sql += " WHERE cath_name"
sql += "=" + "'" + "".join(val) + "';"
cur = self.dbconn.conn.cursor()
cur.execute(sql)
self.dbconn.conn.commit()
def find_by_name(self, name):
flag = 0
cur = self.dbconn.conn.cursor()
sql_sel = "SELECT id FROM " + self.table_name()
sql_sel += " WHERE cath_name = " + "'" + name + "'" + ";"
cur.execute(sql_sel)
ret = cur.fetchone()
# print(ret)
if(ret != None):
flag = 1
return [flag, list(ret)[0]]
else:
return [flag, list(ret)[0]]
# sql = "SELECT * FROM " + self.table_name()
# sql += " ORDER BY "
# sql += ", ".join(self.primary_key())
# sql += " LIMIT 1 OFFSET %(offset)s"
# cur.execute(sql, {"offset": num - 1})
# print(cur)
+102
View File
@@ -0,0 +1,102 @@
# Таблица с блюдами и действия с ними
from dbtable import *
import add_func
class DishTable(DbTable):
def table_name(self):
return self.dbconn.prefix + "dish"
def columns(self):
return {"id": ["serial", "PRIMARY KEY"],
"cath_id": ["integer", "REFERENCES cath(id) ON DELETE CASCADE", "NOT NULL"],
"dish_name": ["varchar(32)", "NOT NULL"],
"cook_time": ["interval"],
"manual": ["text"]}
def table_constraints(self):
return ['CONSTRAINT "Name Dish" UNIQUE (dish_name)']
def find_by_position(self, num):
sql = "SELECT * FROM " + self.table_name()
sql += " ORDER BY "
sql += ", ".join(self.primary_key())
sql += " LIMIT 1 OFFSET %(offset)s"
cur = self.dbconn.conn.cursor()
cur.execute(sql, {"offset": num - 1})
return cur.fetchone()
def all_by_cath_id(self, cath_id):
sql = "SELECT * FROM " + self.table_name()
sql += " WHERE cath_id = " + str(cath_id)
sql += " ORDER BY "
sql += ", ".join(self.primary_key())
cur = self.dbconn.conn.cursor()
cur.execute(sql)
return cur.fetchall()
def delete(self, val):
sql = "DELETE FROM dish"
sql += " WHERE dish_name"
sql += "=" + "'" + val + "';"
cur = self.dbconn.conn.cursor()
cur.execute(sql)
self.dbconn.conn.commit()
def check_by_name(self, value):
sql = f"SELECT * FROM {self.table_name()} WHERE dish_name='{value}'"
cur = self.dbconn.conn.cursor()
cur.execute(sql)
result = cur.fetchone()
cur.close()
if result:
return True
else:
return False
def insert_dishone(self, cath_id):
ins_name = input('Введите название добавляемого блюда (1 - для отмены): ')
while (ins_name.strip() == '')or(len(ins_name.strip()) > 32)\
or(add_func.is_cyr_or_dig(ins_name.strip())==0)or(DishTable().check_by_name(ins_name)):
if(ins_name.strip() == ''):
ins_name = input("Пустая строка. Повторите ввод! Укажите название удаляемого блюда (0 - отмена): ")
if ins_name == "0":
return "1"
elif(len(ins_name.strip()) > 32):
ins_name = input("Слишком длинная строка. Повторите ввод!\
Укажите название удаляемого блюда (0 - отмена): ")
if ins_name == "0":
return "1"
elif(add_func.is_cyr_or_dig(ins_name.strip())==0):
ins_name = input("Название должно состоять только из символов кириллицы. Повторите ввод!\
Укажите название удаляемого блюда (0 - отмена): ")
if ins_name == "0":
return "1"
else:
print('Такое блюдо уже существует')
ins_name = input("Повторите ввод! Укажите название блюда (0 - отмена): ")
if ins_name == "0":
return "1"
ins_time = input(f'Процесс добавления блюда: {ins_name}\
\nВведите время приготовления в формате 10 minutes/1 hour 5 minutes (1 - для отмены): ')
if ins_time == "0":
return "1"
ins_manual = input(f'Процесс добавления блюда: {ins_name}\
\nВведите краткую инструкцию приготовления блюда (1 - для отмены): ')
if ins_time == "0":
return "1"
insert = [cath_id, ins_time, ins_name, ins_manual]
DishTable().insert_one(insert)
+23
View File
@@ -0,0 +1,23 @@
# Таблица персоны и особые действия с ней
from dbtable import *
class PeopleTable(DbTable):
def table_name(self):
return self.dbconn.prefix + "people"
def columns(self):
return {"id": ["serial", "PRIMARY KEY"],
"last_name": ["varchar(32)", "NOT NULL"],
"first_name": ["varchar(32)", "NOT NULL"],
"second_name": ["varchar(32)"]}
def find_by_position(self, num):
sql = "SELECT * FROM " + self.table_name()
sql += " ORDER BY "
sql += ", ".join(self.primary_key())
sql += " LIMIT 1 OFFSET %(offset)s"
cur = self.dbconn.conn.cursor()
cur.execute(sql, {"offset": num - 1})
return cur.fetchone()
+27
View File
@@ -0,0 +1,27 @@
# Таблица Телефоны и особые действия с ней.
from dbtable import *
class PhonesTable(DbTable):
def table_name(self):
return self.dbconn.prefix + "phones"
def columns(self):
return {"person_id": ["integer", "REFERENCES people(id)"],
"phone": ["varchar(12)", "NOT NULL"]}
def primary_key(self):
return ['person_id', 'phone']
def table_constraints(self):
return ["PRIMARY KEY(person_id, phone)"]
def all_by_person_id(self, pid):
sql = "SELECT * FROM " + self.table_name()
sql += " WHERE person_id = %s"
sql += " ORDER BY "
sql += ", ".join(self.primary_key())
cur = self.dbconn.conn.cursor()
cur.execute(sql, str(pid))
return cur.fetchall()