-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart.py
More file actions
146 lines (113 loc) · 4.87 KB
/
start.py
File metadata and controls
146 lines (113 loc) · 4.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
from flask import Flask, flash, render_template, request, g, current_app
import sqlite3, os
app = Flask(__name__)
app.config.update(
SEND_FILE_MAX_AGE_DEFAULT=0, # постоянная подгрузка css в браузере
DATABASE=os.path.join(app.root_path, 'database.db')) # подключение файла БД
def connect_db():
"""Соединяет с указанной базой данных"""
rv = sqlite3.connect(app.config['DATABASE'])
rv.row_factory = sqlite3.Row
return rv
def sql_add(con, cortege):
"""Добавление записи в БД"""
db = connect_db()
cur = db.execute(
"""INSERT INTO PhoneHandlerBook (LastName, FirstName, MiddleName, Phone) VALUES(?, ?, ?, ?)""", cortege)
db.commit()
def sql_delete(con, id):
"""Удаление записи по ID"""
cursor = con.cursor()
rows = sql_out()
i = 0
for row in rows:
if i == id:
print(row[3])
cursor.execute("""DELETE FROM PhoneHandlerBook WHERE Phone=""" + str(row[3]))
break
i += 1
con.commit()
def sql_out():
"""Получение объекта БД с записями"""
db = connect_db()
cur = db.execute("""SELECT FirstName, LastName, MiddleName, Phone FROM PhoneHandlerBook ORDER BY FirstName""")
rows = cur.fetchall()
return rows
def sql_search(value):
"""Алгоритм поиска"""
list = []
for row in sql_out():
if (row[0].find(value) >= 0) or (row[1].find(value) >= 0) or (row[2].find(value) >= 0) or (
str(row[3]).find(value) >= 0):
phone = "+" + str(row[3])[0] + "(" + str(row[3])[1:4] + ")" + str(row[3])[4:7]
phone2 = "-" + str(row[3])[7:9] + "-" + str(row[3])[9:11]
list.append(row[0] + " " + row[1] + " " + row[2] + " " + phone + phone2)
if len(list) == 0: # если нет совпадений
list.append("Ничего не найдено!")
return list
else:
return list
def reset_area(data):
"""Обновление переменной с данными"""
for row in sql_out():
ind_list = sql_out().index(row)
ind_list += 1
data += str(ind_list) + ". " + row[0] + " " + row[1] + " " + row[2] + " "
phone = "+" + str(row[3])[0] + "(" + str(row[3])[1:4] + ")" + str(row[3])[4:7]
phone2 = "-" + str(row[3])[7:9] + "-" + str(row[3])[9:11]
data += phone + phone2 + '\n' + " "
return data
def len_data():
"""Подсчёт количества записей в БД"""
name_count = "Количество записей: "
count = len(sql_out())
string_count = name_count + str(count)
return string_count
class Phone(list):
def add(self, LastName, FirstName, MiddleName, Phone):
"""Добавление строки в объект класса"""
sql_add(connect_db(), (LastName, FirstName, MiddleName, Phone))
def delete(self, id):
"""Удаление строки по айди"""
sql_delete(connect_db(), id)
persons = Phone()
@app.route('/', methods=['GET', 'POST'])
def index():
data = ''
result = ''
result_count = 'Пока ничего не искали'
count = 'Записей пока нет'
if len(sql_out()) != 0: # проверка наличия записей для счётчика
string_count = len_data()
else:
string_count = count
data += reset_area(data)
if request.method == 'POST':
last_name = request.form.get('last_name') # запрос к данным input
first_name = request.form.get('first_name')
middle_name = request.form.get('middle_name')
phone = request.form.get('phone')
id_num = request.form.get('del')
search_value = request.form.get('search-value')
if "submit" in request.form: # если нажата кнопка добавить
print("Ok")
data = ''
persons.add(last_name, first_name, middle_name, phone)
if len(sql_out()) != 0:
string_count = len_data()
else:
string_count = count
data += reset_area(data)
if "submit-del" in request.form: # если нажата кнопка удаления
persons.delete(int(id_num) - 1)
data = ''
data += reset_area(data)
if "submit-search" in request.form: # если нажата кнопка поиска
list = sql_search(search_value)
for elem in list:
result += elem + '\n'
if elem == "Ничего не найдено!":
result_count = "Количество совпадений: 0"
else:
result_count = "Количество совпадений: " + str(len(list))
return render_template('index.html', data=data, count=string_count, result=result, result_count=result_count)