How to use show_group method in tempest

Best Python code snippet using tempest_python

main.py

Source:main.py Github

copy

Full Screen

1from flask import Flask, render_template, request, abort, url_for, redirect, flash2import json3import numpy4import os5import time6from pymongo import MongoClient7client = MongoClient('localhost', 27017)8Merger_DB = client.Merger_DB9app = Flask(__name__)10app.config['SECRET_KEY'] = '12091988BernardoProvencanoToto'11@app.route('/', methods=['GET', 'POST'])12def main_page():13 return render_template('main_page.html')14@app.route('/beer_grouping_prove')15def beer_grouping_prove():16 return render_template('beer_grouping_prove.html')17@app.route('/champagne_grouping_prove')18def champagne_grouping_prove():19 return render_template('champagne_grouping_prove.html')20@app.route('/cognac_grouping_prove')21def cognac_grouping_prove():22 return render_template('cognac_grouping_prove.html')23@app.route('/vodka_grouping_prove')24def vodka_grouping_prove():25 return render_template('vodka_grouping_prove.html')26@app.route('/whiskey_grouping_prove')27def whiskey_grouping_prove():28 return render_template('whiskey_grouping_prove.html')29# testing beer finished30@app.route('/finished_beer', methods=['GET', 'POST'])31def finished_beer():32 # Merger_DB['Пиво'].delete_many({})33 # for i in read_file('beer.json'):34 # Merger_DB['Пиво'].update({'_id': i['_id']}, {'$set': i}, upsert=True)35 #36 # for i in read_file('productData.json'):37 # Merger_DB['productData'].update({'_id': i['id']}, {'$set': i}, upsert=True)38 show_group = None39 group_titles = None40 beer = list(Merger_DB['Пиво'].find())41 merged_beer = list(Merger_DB['productData'].find({'section': 'Пиво'}))42 productData_links = [i['links'] for i in merged_beer]43 productData_groups = [i for i in merged_beer]44 if productData_links:45 show_group = productData_links[0]46 show_group = [[i for i in beer if i['link'] in show_group]]47 group_titles = productData_groups[0]48 if 'search' in request.form:49 group_ind = int(request.form['search']) - 150 if group_ind > len(merged_beer):51 flash('У вас нет столько групп')52 return redirect('/finished_beer')53 show_group = productData_links[group_ind]54 show_group = [[i for i in beer if i['link'] in show_group]]55 group_titles = productData_groups[group_ind]56 if 'next' in request.form:57 for i in productData_groups:58 if i['id'] == request.form['next']:59 ind = productData_groups.index(i)60 if ind != len(productData_groups) - 1:61 show_group = productData_links[ind + 1]62 show_group = [[k for k in beer if k['link'] in show_group]]63 group_titles = productData_groups[ind + 1]64 break65 else:66 show_group = productData_links[-1]67 show_group = [[k for k in beer if k['link'] in show_group]]68 group_titles = productData_groups[-1]69 if 'previous' in request.form:70 for i in productData_groups:71 if i['id'] == request.form['previous']:72 ind = productData_groups.index(i)73 if ind != 0:74 show_group = productData_links[ind - 1]75 show_group = [[k for k in beer if k['link'] in show_group]]76 group_titles = productData_groups[ind - 1]77 break78 else:79 show_group = productData_links[0]80 show_group = [[k for k in beer if k['link'] in show_group]]81 group_titles = productData_groups[0]82 if 'delete_from_finished' in request.form:83 delete_id = request.form['delete_from_finished']84 Merger_DB['productData'].delete_one({'_id': delete_id})85 product_with_id = list(Merger_DB['Пиво'].find({'product_id': {'$exists': True}}))86 need_to_delete_list = [i for i in product_with_id if i['product_id'] == delete_id]87 for i in need_to_delete_list:88 Merger_DB['Пиво'].update({'_id': i['_id']}, {'$unset': {'in_productData': 1}},89 upsert=True)90 # Saving data to files91 beer = list(Merger_DB['Пиво'].find())92 productData_file = list(Merger_DB['productData'].find())93 write_file('productData.json', productData_file)94 write_file('beer.json', beer)95 flash('Группа успешно отправлена на повторную обработку')96 return redirect('/finished_beer')97 # Номер группы98 group_num = 099 if group_titles:100 group_num = productData_groups.index(group_titles) + 1101 # число готовых групп102 done = Merger_DB['productData'].count_documents({'section': 'Пиво'})103 return render_template('finished_beer.html', groups=show_group, titles=group_titles, done=done, group_num=group_num)104@app.route('/finished_champagne', methods=['GET', 'POST'])105def finished_champagne():106 # Merger_DB['Шампанское и игристое вино'].delete_many({})107 # for i in read_file('champagne.json'):108 # Merger_DB['Шампанское и игристое вино'].update({'_id': i['_id']}, {'$set': i}, upsert=True)109 #110 # for i in read_file('productData.json'):111 # Merger_DB['productData'].update({'_id': i['id']}, {'$set': i}, upsert=True)112 show_group = None113 group_titles = None114 champagne = list(Merger_DB['Шампанское и игристое вино'].find())115 merged_champagne = list(Merger_DB['productData'].find({'section': 'Шампанское и игристое вино'}))116 productData_links = [i['links'] for i in merged_champagne]117 productData_groups = [i for i in merged_champagne]118 if productData_links:119 show_group = productData_links[0]120 show_group = [[i for i in champagne if i['link'] in show_group]]121 group_titles = productData_groups[0]122 123 if 'search' in request.form:124 group_ind = int(request.form['search']) - 1125 if group_ind > len(merged_champagne):126 flash('У вас нет столько групп')127 return redirect('/finished_champagne')128 show_group = productData_links[group_ind]129 show_group = [[i for i in champagne if i['link'] in show_group]]130 group_titles = productData_groups[group_ind]131 if 'next' in request.form:132 for i in productData_groups:133 if i['id'] == request.form['next']:134 ind = productData_groups.index(i)135 if ind != len(productData_groups) - 1:136 show_group = productData_links[ind + 1]137 show_group = [[k for k in champagne if k['link'] in show_group]]138 group_titles = productData_groups[ind + 1]139 break140 else:141 show_group = productData_links[-1]142 show_group = [[k for k in champagne if k['link'] in show_group]]143 group_titles = productData_groups[-1]144 if 'previous' in request.form:145 for i in productData_groups:146 if i['id'] == request.form['previous']:147 ind = productData_groups.index(i)148 if ind != 0:149 show_group = productData_links[ind - 1]150 show_group = [[k for k in champagne if k['link'] in show_group]]151 group_titles = productData_groups[ind - 1]152 break153 else:154 show_group = productData_links[0]155 show_group = [[k for k in champagne if k['link'] in show_group]]156 group_titles = productData_groups[0]157 if 'delete_from_finished' in request.form:158 delete_id = request.form['delete_from_finished']159 Merger_DB['productData'].delete_one({'_id': delete_id})160 product_with_id = list(Merger_DB['Шампанское и игристое вино'].find({'product_id': {'$exists': True}}))161 need_to_delete_list = [i for i in product_with_id if i['product_id'] == delete_id]162 for i in need_to_delete_list:163 Merger_DB['Шампанское и игристое вино'].update({'_id': i['_id']}, {'$unset': {'in_productData': 1}}, upsert=True)164 # Saving data to files165 champagne = list(Merger_DB['Шампанское и игристое вино'].find())166 productData_file = list(Merger_DB['productData'].find())167 write_file('productData.json', productData_file)168 write_file('champagne.json', champagne)169 flash('Группа успешно отправлена на повторную обработку')170 return redirect('/finished_champagne')171 172 # Номер группы173 group_num = 0174 if group_titles:175 group_num = productData_groups.index(group_titles) + 1176 # число готовых групп177 done = Merger_DB['productData'].count_documents({'section': 'Шампанское и игристое вино'})178 return render_template('finished_champagne.html', groups=show_group, titles=group_titles, done=done, group_num=group_num)179@app.route('/finished_cognac', methods=['GET', 'POST'])180def finished_cognac():181 # for i in read_file('cognac.json'):182 # Merger_DB['Коньяк'].update({'_id': i['_id']}, {'$set': i}, upsert=True)183 #184 # for i in read_file('productData.json'):185 # Merger_DB['productData'].update({'_id': i['id']}, {'$set': i}, upsert=True)186 show_group = None187 group_titles = None188 cognac = list(Merger_DB['Коньяк'].find())189 merged_cognac = list(Merger_DB['productData'].find({'section': 'Коньяк'}))190 productData_links = [i['links'] for i in merged_cognac]191 productData_groups = [i for i in merged_cognac]192 if productData_links:193 show_group = productData_links[0]194 show_group = [[i for i in cognac if i['link'] in show_group]]195 group_titles = productData_groups[0]196 if 'search' in request.form:197 group_ind = int(request.form['search']) - 1198 if group_ind > len(merged_cognac) - 1:199 flash('У вас нет столько групп')200 return redirect('/finished_cognac')201 show_group = productData_links[group_ind]202 show_group = [[i for i in cognac if i['link'] in show_group]]203 group_titles = productData_groups[group_ind]204 if 'next' in request.form:205 for i in productData_groups:206 if i['id'] == request.form['next']:207 ind = productData_groups.index(i)208 if ind != len(productData_groups) - 1:209 show_group = productData_links[ind + 1]210 show_group = [[k for k in cognac if k['link'] in show_group]]211 group_titles = productData_groups[ind + 1]212 break213 else:214 show_group = productData_links[-1]215 show_group = [[k for k in cognac if k['link'] in show_group]]216 group_titles = productData_groups[-1]217 if 'previous' in request.form:218 for i in productData_groups:219 if i['id'] == request.form['previous']:220 ind = productData_groups.index(i)221 if ind != 0:222 show_group = productData_links[ind - 1]223 show_group = [[k for k in cognac if k['link'] in show_group]]224 group_titles = productData_groups[ind - 1]225 break226 else:227 show_group = productData_links[0]228 show_group = [[k for k in cognac if k['link'] in show_group]]229 group_titles = productData_groups[0]230 if 'delete_from_finished' in request.form:231 delete_id = request.form['delete_from_finished']232 Merger_DB['productData'].delete_one({'_id': delete_id})233 product_with_id = list(Merger_DB['Коньяк'].find({'product_id': {'$exists': True}}))234 need_to_delete_list = [i for i in product_with_id if i['product_id'] == delete_id]235 for i in need_to_delete_list:236 Merger_DB['Коньяк'].update({'_id': i['_id']}, {'$unset': {'in_productData': 1}}, upsert=True)237 # Saving data to files238 cognac_file = list(Merger_DB['Коньяк'].find())239 productData_file = list(Merger_DB['productData'].find())240 write_file('productData.json', productData_file)241 write_file('whiskey.json', cognac_file)242 flash('Группа успешно отправлена на повторную обработку')243 return redirect('/finished_cognac')244 # Номер группы245 group_num = 0246 if group_titles:247 group_num = productData_groups.index(group_titles) + 1248 # Число готовых249 done = Merger_DB['productData'].count_documents({'section': 'Коньяк'})250 return render_template('finished_cognac.html', groups=show_group, titles=group_titles, done=done, group_num=group_num)251@app.route('/finished_vodka', methods=['GET', 'POST'])252def finished_vodka():253 # for i in read_file('vodka.json'):254 # Merger_DB['Водка'].update({'_id': i['_id']}, {'$set': i}, upsert=True)255 #256 # for i in read_file('productData.json'):257 # Merger_DB['productData'].update({'_id': i['id']}, {'$set': i}, upsert=True)258 show_group = None259 group_titles = None260 vodka = list(Merger_DB['Водка'].find())261 merged_vodka = list(Merger_DB['productData'].find({'section': 'Водка'}))262 productData_links = [i['links'] for i in merged_vodka]263 productData_groups = [i for i in merged_vodka]264 if productData_links:265 show_group = productData_links[0]266 show_group = [[i for i in vodka if i['link'] in show_group]]267 group_titles = productData_groups[0]268 269 if 'search' in request.form:270 group_ind = int(request.form['search']) - 1271 if group_ind > len(merged_vodka):272 flash('У вас нет столько групп')273 return redirect('/finished_vodka')274 show_group = productData_links[group_ind]275 show_group = [[i for i in vodka if i['link'] in show_group]]276 group_titles = productData_groups[group_ind]277 if 'next' in request.form:278 for i in productData_groups:279 if i['id'] == request.form['next']:280 ind = productData_groups.index(i)281 if ind != len(productData_groups)-1:282 show_group = productData_links[ind + 1]283 show_group = [[k for k in vodka if k['link'] in show_group]]284 group_titles = productData_groups[ind + 1]285 break286 else:287 show_group = productData_links[-1]288 show_group = [[k for k in vodka if k['link'] in show_group]]289 group_titles = productData_groups[-1]290 if 'previous' in request.form:291 for i in productData_groups:292 if i['id'] == request.form['previous']:293 ind = productData_groups.index(i)294 if ind != 0:295 show_group = productData_links[ind - 1]296 show_group = [[k for k in vodka if k['link'] in show_group]]297 group_titles = productData_groups[ind - 1]298 break299 else:300 show_group = productData_links[0]301 show_group = [[k for k in vodka if k['link'] in show_group]]302 group_titles = productData_groups[0]303 if 'delete_from_finished' in request.form:304 delete_id = request.form['delete_from_finished']305 Merger_DB['productData'].delete_one({'_id': delete_id})306 product_with_id = list(Merger_DB['Водка'].find({'product_id': {'$exists': True}}))307 need_to_delete_list = [i for i in product_with_id if i['product_id'] == delete_id]308 for i in need_to_delete_list:309 Merger_DB['Водка'].update({'_id': i['_id']}, {'$unset': {'in_productData': 1}}, upsert=True)310 # Saving data to files311 vodka_file = list(Merger_DB['Водка'].find())312 productData_file = list(Merger_DB['productData'].find())313 write_file('productData.json', productData_file)314 write_file('vodka.json', vodka_file)315 flash('Группа успешно отправлена на повторную обработку')316 return redirect('/finished_vodka')317 318 # Номер группы319 group_num = 0320 if group_titles:321 group_num = productData_groups.index(group_titles) + 1322 # число готовых групп323 done = Merger_DB['productData'].count_documents({'section': 'Водка'})324 return render_template('finished_vodka.html', groups=show_group, titles=group_titles, done=done, group_num=group_num)325@app.route('/finished_whiskey', methods=['GET', 'POST'])326def finished_whiskey():327 328 # for i in read_file('whiskey.json'):329 # Merger_DB['Виски'].update({'_id': i['_id']}, {'$set': i}, upsert=True)330 #331 # for i in read_file('productData.json'):332 # Merger_DB['productData'].update({'_id': i['id']}, {'$set': i}, upsert=True)333 334 show_group = None335 group_titles = None336 whiskey = list(Merger_DB['Виски'].find())337 merged_whiskey = list(Merger_DB['productData'].find({'section': 'Виски'}))338 productData_links = [i['links'] for i in merged_whiskey]339 productData_groups = [i for i in merged_whiskey]340 if productData_links:341 show_group = productData_links[0]342 show_group = [[i for i in whiskey if i['link'] in show_group]]343 group_titles = productData_groups[0]344 345 if 'search' in request.form:346 group_ind = int(request.form['search']) - 1347 if group_ind > len(merged_whiskey) - 1:348 flash('У вас нет столько групп')349 return redirect('/finished_whiskey')350 show_group = productData_links[group_ind]351 show_group = [[i for i in whiskey if i['link'] in show_group]]352 group_titles = productData_groups[group_ind]353 if 'next' in request.form:354 for i in productData_groups:355 if i['id'] == request.form['next']:356 ind = productData_groups.index(i)357 if ind != len(productData_groups)-1:358 show_group = productData_links[ind + 1]359 show_group = [[k for k in whiskey if k['link'] in show_group]]360 group_titles = productData_groups[ind + 1]361 break362 else:363 show_group = productData_links[-1]364 show_group = [[k for k in whiskey if k['link'] in show_group]]365 group_titles = productData_groups[-1]366 if 'previous' in request.form:367 for i in productData_groups:368 if i['id'] == request.form['previous']:369 ind = productData_groups.index(i)370 if ind != 0:371 show_group = productData_links[ind - 1]372 show_group = [[k for k in whiskey if k['link'] in show_group]]373 group_titles = productData_groups[ind - 1]374 break375 else:376 show_group = productData_links[0]377 show_group = [[k for k in whiskey if k['link'] in show_group]]378 group_titles = productData_groups[0]379 if 'delete_from_finished' in request.form:380 delete_id = request.form['delete_from_finished']381 Merger_DB['productData'].delete_one({'_id': delete_id})382 product_with_id = list(Merger_DB['Виски'].find({'product_id': {'$exists': True}}))383 384 need_to_delete_list = [i for i in product_with_id if i['product_id'] == delete_id]385 for i in need_to_delete_list:386 Merger_DB['Виски'].update({'_id': i['_id']}, {'$unset': {'in_productData': 1}}, upsert=True)387 # Saving data to files388 whiskey_file = list(Merger_DB['Виски'].find())389 productData_file = list(Merger_DB['productData'].find())390 write_file('productData.json', productData_file)391 write_file('whiskey.json', whiskey_file)392 flash('Группа успешно отправлена на повторную обработку')393 return redirect('/finished_whiskey')394 395 # Номер группы396 group_num = 0397 if group_titles:398 group_num = productData_groups.index(group_titles) + 1399 # число готовых групп400 done = Merger_DB['productData'].count_documents({'section': 'Виски'})401 return render_template('finished_whiskey.html', groups=show_group, titles=group_titles, done=done, group_num=group_num)402@app.route('/naming_beer', methods=['GET', 'POST'])403def naming_beer():404 ip_address = request.remote_addr.replace('.', '')405 if request.method == 'GET':406 Merger_DB['del_list'].update({'_id': 'beer_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)407 show_group = None408 beer = list(Merger_DB['Пиво'].find())409 group_id = numpy.unique(410 [i['product_id'] for i in beer if 'product_id' in i.keys() and not ('in_productData' in i.keys())])411 groups = list()412 products_with_id = [i for i in beer if 'product_id' in i.keys()]413 for i in group_id:414 group = [k for k in products_with_id if k['product_id'] == i]415 groups.append(group)416 if groups:417 show_group = [groups[0]]418 if 'saving' in request.form:419 beer = list(Merger_DB['Пиво'].find())420 del_list = list(421 Merger_DB['del_list'].find({'$and': [{'_id': 'beer_del_list'}, {ip_address: {'$exists': True}}]}))422 if del_list:423 del_list = del_list[0][ip_address]424 for i in del_list:425 del_product = [k for k in beer if k['link'] == i]426 if del_product:427 # del_product[0]['identified'] = False428 # del_product[0].pop('product_id')429 Merger_DB['Пиво'].update({'_id': del_product[0]['_id']},430 {'$set': {'identified': False}})431 Merger_DB['Пиво'].update({'_id': del_product[0]['_id']},432 {'$unset': {'product_id': 1}})433 Merger_DB['del_list'].update({'_id': 'beer_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)434 product_dict = dict()435 fortress = request.form['fortress']436 product_dict['features'] = {}437 product_dict['features']['Крепость'] = None438 product_dict['images'] = {}439 product_dict['description'] = ''440 product_dict['section'] = 'Пиво'441 product_dict['id'] = request.form['group_id']442 product_dict['name'] = request.form['title']443 if fortress:444 product_dict['features']['Крепость'] = float(fortress) if '.' in fortress else int(fortress)445 product_dict['features']['Страна'] = request.form['country']446 product_dict['features']['Бренд'] = request.form['brand']447 product_dict['features']['Цвет'] = request.form['color']448 product_dict['features']['Фильтрация'] = request.form['filtration']449 if product_dict['name'] and product_dict['features']['Крепость'] and product_dict['features']['Страна'] and \450 product_dict['features']['Бренд'] and product_dict['features'][451 'Цвет'] and product_dict['features']['Фильтрация']:452 beer = list(Merger_DB['Пиво'].find())453 products = [i for i in beer if 'product_id' in i.keys()]454 product_dict['links'] = [i['link'] for i in products if i['product_id'] == product_dict['id']]455 product_dict['images']['default'] = [i['image'] for i in beer if i['link'] in product_dict['links']][0]456 Merger_DB['productData'].update({'_id': product_dict['id']}, {'$set': product_dict}, upsert=True)457 for i in beer:458 if 'product_id' in i.keys():459 if i['product_id'] == product_dict['id']:460 # i['in_productData'] = True461 # Merger_DB['Шампанское и игристое вино'].update({'_id': i['_id']}, {'$set': i}, upsert=True)462 Merger_DB['Пиво'].update({'_id': i['_id']},463 {'$set': {'in_productData': True}}, upsert=True)464 # saving data to files465 beer = list(Merger_DB['Пиво'].find())466 write_file('beer.json', beer)467 productData = list(Merger_DB['productData'].find())468 write_file('productData.json', productData)469 flash('Операция проведена успешно', 'success')470 return redirect('/naming_beer')471 else:472 # saving data to files473 beer = list(Merger_DB['Пиво'].find())474 write_file('beer.json', beer)475 flash('Нужно заполнить все поля', category='error')476 return redirect('/naming_beer')477 if 'delete_from_group' in request.form:478 del_link = request.form['delete_from_group']479 del_list = list(480 Merger_DB['del_list'].find({'$and': [{'_id': 'beer_del_list'}, {ip_address: {'$exists': True}}]}))481 if del_list:482 del_list = del_list[0][ip_address]483 if not (del_link in del_list):484 del_list.append(del_link)485 else:486 del_list.remove(del_link)487 Merger_DB['del_list'].update({'_id': 'beer_del_list'}, {'$set': {ip_address: del_list}}, upsert=True)488 if 'next' in request.form:489 for i in groups:490 if str(i) == str(request.form['next']):491 if groups.index(i) != len(groups) - 1:492 show_group = [groups[groups.index(i) + 1]]493 break494 else:495 show_group = [groups[-1]]496 Merger_DB['del_list'].update({'_id': 'beer_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)497 if 'previous' in request.form:498 for i in groups:499 if str(i) == str(request.form['previous']):500 if groups.index(i) != 0:501 show_group = [groups[groups.index(i) - 1]]502 break503 Merger_DB['del_list'].update({'_id': 'beer_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)504 # число неготовых групп505 undone = len(groups)506 return render_template('naming_beer.html', groups=show_group, undone=undone)507@app.route('/naming_champagne', methods=['GET', 'POST'])508def naming_champagne():509 ip_address = request.remote_addr.replace('.', '')510 if request.method == 'GET':511 Merger_DB['del_list'].update({'_id': 'champagne_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)512 show_group = None513 champagne = list(Merger_DB['Шампанское и игристое вино'].find())514 group_id = numpy.unique(515 [i['product_id'] for i in champagne if 'product_id' in i.keys() and not ('in_productData' in i.keys())])516 groups = list()517 products_with_id = [i for i in champagne if 'product_id' in i.keys()]518 for i in group_id:519 group = [k for k in products_with_id if k['product_id'] == i]520 groups.append(group)521 if groups:522 show_group = [groups[0]]523 524 if 'saving' in request.form:525 champagne = list(Merger_DB['Шампанское и игристое вино'].find())526 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'champagne_del_list'}, {ip_address: {'$exists': True}}]}))527 if del_list:528 del_list = del_list[0][ip_address]529 for i in del_list:530 del_product = [k for k in champagne if k['link'] == i]531 if del_product:532 # del_product[0]['identified'] = False533 # del_product[0].pop('product_id')534 Merger_DB['Шампанское и игристое вино'].update({'_id': del_product[0]['_id']}, {'$set': {'identified': False}})535 Merger_DB['Шампанское и игристое вино'].update({'_id': del_product[0]['_id']}, {'$unset': {'product_id': 1}})536 Merger_DB['del_list'].update({'_id': 'champagne_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)537 538 product_dict = dict()539 fortress = request.form['fortress']540 product_dict['features'] = {}541 product_dict['features']['Крепость'] = None542 product_dict['images'] = {}543 product_dict['description'] = ''544 product_dict['section'] = 'Шампанское и игристое вино'545 product_dict['id'] = request.form['group_id']546 product_dict['name'] = request.form['title']547 if fortress:548 product_dict['features']['Крепость'] = float(fortress) if '.' in fortress else int(fortress)549 product_dict['features']['Страна'] = request.form['country']550 product_dict['features']['Бренд'] = request.form['brand']551 product_dict['features']['Тип'] = request.form['type']552 product_dict['features']['Цвет'] = request.form['color']553 product_dict['features']['Сахар'] = request.form['sugar']554 555 if product_dict['name'] and product_dict['features']['Крепость'] and product_dict['features']['Страна'] and product_dict['features']['Бренд'] and product_dict['features']['Тип'] and product_dict['features']['Цвет'] and product_dict['features']['Сахар']:556 champagne = list(Merger_DB['Шампанское и игристое вино'].find())557 products = [i for i in champagne if 'product_id' in i.keys()]558 product_dict['links'] = [i['link'] for i in products if i['product_id'] == product_dict['id']]559 product_dict['images']['default'] = [i['image'] for i in champagne if i['link'] in product_dict['links']][0]560 Merger_DB['productData'].update({'_id': product_dict['id']}, {'$set': product_dict}, upsert=True)561 for i in champagne:562 if 'product_id' in i.keys():563 if i['product_id'] == product_dict['id']:564 # i['in_productData'] = True565 # Merger_DB['Шампанское и игристое вино'].update({'_id': i['_id']}, {'$set': i}, upsert=True)566 Merger_DB['Шампанское и игристое вино'].update({'_id': i['_id']}, {'$set': {'in_productData': True}}, upsert=True)567 # saving data to files568 champagne = list(Merger_DB['Шампанское и игристое вино'].find())569 write_file('champagne.json', champagne)570 productData = list(Merger_DB['productData'].find())571 write_file('productData.json', productData)572 flash('Операция проведена успешно', 'success')573 return redirect('/naming_champagne')574 else:575 # saving data to files576 champagne = list(Merger_DB['Шампанское и игристое вино'].find())577 write_file('champagne.json', champagne)578 flash('Нужно заполнить все поля', category='error')579 return redirect('/naming_champagne')580 if 'delete_from_group' in request.form:581 del_link = request.form['delete_from_group']582 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'champagne_del_list'}, {ip_address: {'$exists': True}}]}))583 if del_list:584 del_list = del_list[0][ip_address]585 if not (del_link in del_list):586 del_list.append(del_link)587 else:588 del_list.remove(del_link)589 Merger_DB['del_list'].update({'_id': 'champagne_del_list'}, {'$set': {ip_address: del_list}}, upsert=True)590 if 'next' in request.form:591 for i in groups:592 if str(i) == str(request.form['next']):593 if groups.index(i) != len(groups) - 1:594 show_group = [groups[groups.index(i) + 1]]595 break596 else:597 show_group = [groups[-1]]598 Merger_DB['del_list'].update({'_id': 'champagne_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)599 if 'previous' in request.form:600 for i in groups:601 if str(i) == str(request.form['previous']):602 if groups.index(i) != 0:603 show_group = [groups[groups.index(i) - 1]]604 break605 Merger_DB['del_list'].update({'_id': 'champagne_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)606 # число неготовых групп607 undone = len(groups)608 return render_template('naming_champagne.html', groups=show_group, undone=undone)609@app.route('/naming_cognac', methods=['GET', 'POST'])610def naming_cognac():611 ip_address = request.remote_addr.replace('.', '')612 if request.method == 'GET':613 Merger_DB['del_list'].update({'_id': 'cognac_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)614 show_group = None615 cognac = list(Merger_DB['Коньяк'].find())616 group_id = numpy.unique([i['product_id'] for i in cognac if 'product_id' in i.keys() and not ('in_productData' in i.keys())])617 groups = list()618 products_with_id = [i for i in cognac if 'product_id' in i.keys()]619 for i in group_id:620 group = [k for k in products_with_id if k['product_id'] == i]621 groups.append(group)622 if groups:623 show_group = [groups[0]]624 if 'saving' in request.form:625 cognac = list(Merger_DB['Коньяк'].find())626 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'cognac_del_list'}, {ip_address: {'$exists': True}}]}))627 if del_list:628 del_list = del_list[0][ip_address]629 for i in del_list:630 del_product = [k for k in cognac if k['link'] == i]631 if del_product:632 # del_product[0]['identified'] = False633 # del_product[0].pop('product_id')634 Merger_DB['Коньяк'].update({'_id': del_product[0]['_id']}, {'$set': {'identified': False}})635 Merger_DB['Коньяк'].update({'_id': del_product[0]['_id']}, {'$unset': {'product_id': 1}})636 Merger_DB['del_list'].update({'_id': 'cognac_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)637 product_dict = dict()638 exposure = request.form['exposure']639 fortress = request.form['fortress']640 product_dict['features'] = {}641 product_dict['features']['Крепость'] = None642 product_dict['features']['Выдержка'] = None643 if exposure and fortress:644 product_dict['features']['Крепость'] = float(fortress) if '.' in fortress else int(fortress)645 product_dict['features']['Выдержка'] = float(exposure) if '.' in exposure else int(exposure)646 product_dict['images'] = {}647 product_dict['description'] = ''648 product_dict['section'] = 'Коньяк'649 product_dict['id'] = request.form['group_id']650 product_dict['name'] = request.form['title']651 product_dict['features']['Страна'] = request.form['country']652 product_dict['features']['Бренд'] = request.form['brand']653 product_dict['features']['Класс'] = request.form['type']654 if product_dict['name'] and product_dict['features']['Страна'] and product_dict['features']['Бренд'] and product_dict['features']['Класс'] and product_dict['features']['Крепость'] and product_dict['features']['Выдержка']:655 cognac = list(Merger_DB['Коньяк'].find())656 products = [i for i in cognac if 'product_id' in i.keys()]657 product_dict['links'] = [i['link'] for i in products if i['product_id'] == product_dict['id']]658 product_dict['images']['default'] = [i['image'] for i in cognac if i['link'] in product_dict['links']][0]659 Merger_DB['productData'].update({'_id': product_dict['id']}, {'$set': product_dict}, upsert=True)660 for i in cognac:661 if 'product_id' in i.keys():662 if i['product_id'] == product_dict['id']:663 # i['in_productData'] = True664 Merger_DB['Коньяк'].update({'_id': i['_id']}, {'$set': {'in_productData': True}}, upsert=True)665 # saving data to files666 cognac = list(Merger_DB['Коньяк'].find())667 write_file('cognac.json', cognac)668 productData = list(Merger_DB['productData'].find())669 write_file('productData.json', productData)670 flash('Операция проведена успешно', category='success')671 return redirect('/naming_cognac')672 else:673 # saving data to files674 cognac = list(Merger_DB['Коньяк'].find())675 write_file('cognac.json', cognac)676 flash('Нужно заполнить все поля', category='error')677 return redirect('/naming_cognac')678 if 'delete_from_group' in request.form:679 del_link = request.form['delete_from_group']680 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'cognac_del_list'}, {ip_address: {'$exists': True}}]}))681 if del_list:682 del_list = del_list[0][ip_address]683 if not (del_link in del_list):684 del_list.append(del_link)685 else:686 del_list.remove(del_link)687 Merger_DB['del_list'].update({'_id': 'cognac_del_list'}, {'$set': {ip_address: del_list}}, upsert=True)688 if 'next' in request.form:689 for i in groups:690 if str(i) == str(request.form['next']):691 if groups.index(i) != len(groups) - 1:692 show_group = [groups[groups.index(i) + 1]]693 break694 else:695 show_group = [groups[-1]]696 Merger_DB['del_list'].update({'_id': 'cognac_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)697 if 'previous' in request.form:698 for i in groups:699 if str(i) == str(request.form['previous']):700 if groups.index(i) != 0:701 show_group = [groups[groups.index(i) - 1]]702 break703 Merger_DB['del_list'].update({'_id': 'cognac_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)704 # число неготовых групп705 undone = len(groups)706 return render_template('naming_cognac.html', groups=show_group, undone=undone)707@app.route('/naming_vodka', methods=['GET', 'POST'])708def naming_vodka():709 ip_address = request.remote_addr.replace('.', '')710 if request.method == 'GET':711 Merger_DB['del_list'].update({'_id': 'vodka_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)712 show_group = None713 vodka = list(Merger_DB['Водка'].find())714 group_id = numpy.unique([i['product_id'] for i in vodka if 'product_id' in i.keys() and not ('in_productData' in i.keys())])715 groups = list()716 products_with_id = [i for i in vodka if 'product_id' in i.keys()]717 for i in group_id:718 group = [k for k in products_with_id if k['product_id'] == i]719 groups.append(group)720 if groups:721 show_group = [groups[0]]722 723 if 'saving' in request.form:724 vodka = list(Merger_DB['Водка'].find())725 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'vodka_del_list'}, {ip_address: {'$exists': True}}]}))726 if del_list:727 del_list = del_list[0][ip_address]728 for i in del_list:729 del_product = [k for k in vodka if k['link'] == i]730 if del_product:731 del_product[0]['identified'] = False732 del_product[0].pop('product_id')733 # vodka[vodka.index([n for n in vodka if n['link'] == i][0])] = del_product[0]734 Merger_DB['Водка'].update({'_id': del_product[0]['_id']}, {'$set': del_product[0]})735 Merger_DB['Водка'].update({'_id': del_product[0]['_id']}, {'$unset': {'product_id': 1}})736 Merger_DB['del_list'].update({'_id': 'vodka_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)737 product_dict = dict()738 fortress = request.form['fortress']739 product_dict['features'] = {}740 product_dict['features']['Крепость'] = None741 if fortress:742 product_dict['features']['Крепость'] = float(fortress) if '.' in fortress else int(fortress)743 product_dict['images'] = {}744 product_dict['description'] = ''745 product_dict['section'] = 'Водка'746 product_dict['id'] = request.form['group_id']747 product_dict['name'] = request.form['title']748 product_dict['features']['Страна'] = request.form['country']749 product_dict['features']['Бренд'] = request.form['brand']750 product_dict['features']['Тип'] = request.form['type']751 if product_dict['name'] and product_dict['features']['Страна'] and product_dict['features']['Бренд'] and product_dict['features']['Тип'] and product_dict['features']['Крепость']:752 vodka = list(Merger_DB['Водка'].find())753 products = [i for i in vodka if 'product_id' in i.keys()]754 product_dict['links'] = [i['link'] for i in products if i['product_id'] == product_dict['id']]755 product_dict['images']['default'] = [i['image'] for i in vodka if i['link'] in product_dict['links']][0]756 Merger_DB['productData'].update({'_id': product_dict['id']}, {'$set': product_dict}, upsert=True)757 for i in vodka:758 if 'product_id' in i.keys():759 if i['product_id'] == product_dict['id']:760 i['in_productData'] = True761 Merger_DB['Водка'].update({'_id': i['_id']}, {'$set': i}, upsert=True)762 763 # saving data to files764 vodka = list(Merger_DB['Водка'].find())765 write_file('vodka.json', vodka)766 productData = list(Merger_DB['productData'].find())767 write_file('productData.json', productData)768 769 flash('Операция проведена успешно', category='success')770 return redirect('/naming_vodka')771 else:772 # saving data to files773 vodka = list(Merger_DB['Водка'].find())774 write_file('vodka.json', vodka)775 flash('Нужно заполнить все поля', category='error')776 return redirect('/naming_vodka')777 if 'delete_from_group' in request.form:778 del_link = request.form['delete_from_group']779 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'vodka_del_list'}, {ip_address: {'$exists': True}}]}))780 if del_list:781 del_list = del_list[0][ip_address]782 if not (del_link in del_list):783 del_list.append(del_link)784 else:785 del_list.remove(del_link)786 Merger_DB['del_list'].update({'_id': 'vodka_del_list'}, {'$set': {ip_address: del_list}}, upsert=True)787 if 'next' in request.form:788 for i in groups:789 if str(i) == str(request.form['next']):790 if groups.index(i) != len(groups)-1:791 show_group = [groups[groups.index(i)+1]]792 break793 else:794 show_group = [groups[-1]]795 Merger_DB['del_list'].update({'_id': 'vodka_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)796 if 'previous' in request.form:797 for i in groups:798 if str(i) == str(request.form['previous']):799 if groups.index(i) != 0:800 show_group = [groups[groups.index(i) - 1]]801 break802 Merger_DB['del_list'].update({'_id': 'vodka_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)803 # число неготовых групп804 undone = len(groups)805 return render_template('naming_vodka.html', groups=show_group, undone=undone)806@app.route('/naming_whiskey', methods=['GET', 'POST'])807def naming_whiskey():808 ip_address = request.remote_addr.replace('.', '')809 if request.method == 'GET':810 Merger_DB['del_list'].update({'_id': 'whiskey_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)811 show_group = None812 whiskey = list(Merger_DB['Виски'].find())813 group_id = numpy.unique([i['product_id'] for i in whiskey if 'product_id' in i.keys() and not ('in_productData' in i.keys())])814 groups = list()815 products_with_id = [i for i in whiskey if 'product_id' in i.keys()]816 for i in group_id:817 group = [k for k in products_with_id if k['product_id'] == i]818 groups.append(group)819 if groups:820 show_group = [groups[0]]821 822 if 'saving' in request.form:823 whiskey = list(Merger_DB['Виски'].find())824 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'whiskey_del_list'}, {ip_address: {'$exists': True}}]}))825 if del_list:826 del_list = del_list[0][ip_address]827 for i in del_list:828 del_product = [k for k in whiskey if k['link'] == i]829 if del_product:830 del_product[0]['identified'] = False831 del_product[0].pop('product_id')832 Merger_DB['Виски'].update({'_id': del_product[0]['_id']}, {'$set': del_product[0]})833 Merger_DB['Виски'].update({'_id': del_product[0]['_id']}, {'$unset': {'product_id': 1}})834 Merger_DB['del_list'].update({'_id': 'whiskey_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)835 product_dict = dict()836 exposure = request.form['exposure']837 fortress = request.form['fortress']838 product_dict['features'] = {}839 product_dict['features']['Крепость'] = None840 product_dict['features']['Выдержка'] = None841 if exposure and fortress:842 product_dict['features']['Крепость'] = float(fortress) if '.' in fortress else int(fortress)843 product_dict['features']['Выдержка'] = float(exposure) if '.' in exposure else int(exposure)844 product_dict['images'] = {}845 product_dict['description'] = ''846 product_dict['section'] = 'Виски'847 product_dict['id'] = request.form['group_id']848 product_dict['name'] = request.form['title']849 product_dict['features']['Страна'] = request.form['country']850 product_dict['features']['Бренд'] = request.form['brand']851 product_dict['features']['Тип'] = request.form['type']852 if product_dict['name'] and product_dict['features']['Страна'] and product_dict['features']['Бренд'] and product_dict['features']['Тип'] and product_dict['features']['Выдержка'] and product_dict['features']['Крепость']:853 print('OKKKKKKK')854 whiskey = list(Merger_DB['Виски'].find())855 products = [i for i in whiskey if 'product_id' in i.keys()]856 product_dict['links'] = [i['link'] for i in products if i['product_id'] == product_dict['id']]857 product_dict['images']['default'] = [i['image'] for i in whiskey if i['link'] in product_dict['links'] and 'image' in i.keys()][0]858 Merger_DB['productData'].update({'_id': product_dict['id']}, {'$set': product_dict}, upsert=True)859 860 for i in whiskey:861 if 'product_id' in i.keys():862 if i['product_id'] == product_dict['id']:863 # ind = whiskey.index(i)864 i['in_productData'] = True865 # whiskey[ind] = i866 Merger_DB['Виски'].update({'_id': i['_id']}, {'$set': i}, upsert=True)867 # saving data to files868 whiskey = list(Merger_DB['Виски'].find())869 write_file('whiskey.json', whiskey)870 productData = list(Merger_DB['productData'].find())871 write_file('productData.json', productData)872 873 flash('Операция проведена успешно', category='success')874 return redirect('/naming_whiskey')875 else:876 # saving data to files877 whiskey = list(Merger_DB['Виски'].find())878 write_file('whiskey.json', whiskey)879 flash('Нужно заполнить все поля', category='error')880 return redirect('/naming_whiskey')881 if 'delete_from_group' in request.form:882 del_link = request.form['delete_from_group']883 del_list = list(Merger_DB['del_list'].find({'$and': [{'_id': 'whiskey_del_list'}, {ip_address: {'$exists': True}}]}))884 if del_list:885 del_list = del_list[0][ip_address]886 if not (del_link in del_list):887 del_list.append(del_link)888 else:889 del_list.remove(del_link)890 Merger_DB['del_list'].update({'_id': 'whiskey_del_list'}, {'$set': {ip_address: del_list}}, upsert=True)891 if 'next' in request.form:892 for i in groups:893 if str(i) == str(request.form['next']):894 if groups.index(i) != len(groups)-1:895 show_group = [groups[groups.index(i)+1]]896 break897 else:898 show_group = [groups[-1]]899 Merger_DB['del_list'].update({'_id': 'whiskey_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)900 if 'previous' in request.form:901 for i in groups:902 if str(i) == str(request.form['previous']):903 if groups.index(i) != 0:904 show_group = [groups[groups.index(i) - 1]]905 break906 Merger_DB['del_list'].update({'_id': 'whiskey_del_list'}, {'$unset': {ip_address: 1}}, upsert=True)907 908 # число неготовых групп909 undone = len(groups)910 return render_template('naming_whiskey.html', groups=show_group, undone=undone)911@app.route('/grouping_beer/', methods=['GET', 'POST'])912def grouping_beer():913 ip_address = request.remote_addr.replace('.', '')914 if request.method == 'GET':915 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)916 search = ''917 result_list = []918 beer = list(Merger_DB['Пиво'].find())919 skip_list = list(Merger_DB['skip_list'].find({'_id': 'beer_skip_list'}))920 if skip_list:921 skip_list = skip_list[0]['skip_list']922 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]923 if main_drink:924 main_drink = main_drink[0]925 else:926 if skip_list:927 del skip_list[0]928 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]929 if main_drink:930 main_drink = main_drink[0]931 Merger_DB['skip_list'].update({'_id': 'beer_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)932 if "index" in request.form:933 link = request.form['index']934 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'beer_link_list'}, {ip_address: {'$exists': True}}]}))935 if link_list:936 link_list = link_list[0][ip_address]937 if link in link_list:938 link_list.remove(link)939 else:940 link_list.append(link)941 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)942 if 'add_to_group' in request.form:943 article = request.form['add_to_group']944 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'beer_link_list'}, {ip_address: {'$exists': True}}]}))945 if link_list:946 link_list = link_list[0][ip_address]947 if article in link_list:948 link_list.remove(article)949 else:950 link_list.append(article)951 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)952 if 'skip' in request.form:953 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)954 skip_list = list(Merger_DB['skip_list'].find({'_id': 'beer_skip_list'}))955 if skip_list:956 skip_list = skip_list[0]['skip_list']957 if not (request.form['skip'] in skip_list):958 skip_list.append(request.form['skip'])959 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]960 if main_drink:961 main_drink = main_drink[0]962 else:963 if skip_list:964 del skip_list[0]965 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]966 if main_drink:967 main_drink = main_drink[0]968 Merger_DB['skip_list'].update({'_id': 'beer_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)969 if 'search' in request.form:970 search = request.form['search']971 result_list = [i for i in beer if search.lower() in i['name'].lower() and not (i is main_drink)]972 if 'saving' in request.form:973 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'beer_link_list'}, {ip_address: {'$exists': True}}]}))974 if link_list:975 link_list = link_list[0][ip_address]976 match = [i for i in link_list if i.isdigit()]977 if len(match) > 1:978 flash('Ошибка: Вы можете добавить напиток только в одну группу')979 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)980 return redirect('/grouping_beer')981 elif len(match) == 1:982 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'beer_link_list'}, {ip_address: {'$exists': True}}]}))983 if link_list:984 link_list = link_list[0][ip_address]985 link_list.remove(match[0])986 if main_drink:987 link_list.append(main_drink['link'])988 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)989 product_id = match[0]990 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'beer_link_list'}, {ip_address: {'$exists': True}}]}))991 if link_list:992 link_list = link_list[0][ip_address]993 for i in link_list:994 drink = [k for k in beer if k['link'] == i][0]995 ind = beer.index(drink)996 drink['identified'] = True997 drink['product_id'] = product_id998 if not ('id' in beer[ind].keys()):999 drink['id'] = take_article()1000 Merger_DB['Пиво'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1001 beer = list(Merger_DB['Пиво'].find())1002 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]1003 if main_drink:1004 main_drink = main_drink[0]1005 else:1006 skip_list = list(Merger_DB['skip_list'].find({'_id': 'beer_skip_list'}))1007 if skip_list:1008 skip_list = skip_list[0]['skip_list']1009 if skip_list:1010 del skip_list[0]1011 main_drink = [i for i in beer if1012 i['identified'] is False and not (i['link'] in skip_list)]1013 if main_drink:1014 main_drink = main_drink[0]1015 Merger_DB['skip_list'].update({'_id': 'beer_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1016 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'beer_link_list'}, {ip_address: {'$exists': True}}]}))1017 if link_list:1018 link_list = link_list[0][ip_address]1019 productData = list(Merger_DB['productData'].find({'section': 'Пиво'}))1020 item_in_PD = [i for i in productData if i['id'] == product_id]1021 if item_in_PD:1022 item_in_PD_index = productData.index(item_in_PD[0])1023 for i in link_list:1024 item_in_PD[0]['links'].append(i)1025 Merger_DB['productData'].update({'_id': item_in_PD[0]['id']}, {'$set': item_in_PD[0]}, upsert=True)1026 beer = list(Merger_DB['Пиво'].find())1027 need_change = [i for i in beer if i['link'] in link_list]1028 for i in need_change:1029 i['in_productData'] = True1030 Merger_DB['Пиво'].update({'_id': i['_id']}, {'$set': i}, upsert=True)1031 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1032 beer = list(Merger_DB['Пиво'].find())1033 write_file('beer.json', beer)1034 productData = list(Merger_DB['productData'].find())1035 write_file('productData.json', productData)1036 return redirect('/beer_grouping_prove')1037 else:1038 if main_drink:1039 link_list.append(main_drink['link'])1040 product_id = take_article()1041 for i in link_list:1042 drink = [k for k in beer if k['link'] == i][0]1043 ind = beer.index(drink)1044 drink['identified'] = True1045 drink['product_id'] = product_id1046 if not ('id' in beer[ind].keys()):1047 drink['id'] = take_article()1048 Merger_DB['Пиво'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1049 Merger_DB['link_list'].update({'_id': 'beer_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1050 beer = list(Merger_DB['Пиво'].find())1051 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]1052 if main_drink:1053 main_drink = main_drink[0]1054 else:1055 skip_list = list(Merger_DB['skip_list'].find({'_id': 'beer_skip_list'}))1056 if skip_list:1057 skip_list = skip_list[0]['skip_list']1058 if skip_list:1059 del skip_list[0]1060 main_drink = [i for i in beer if i['identified'] is False and not (i['link'] in skip_list)]1061 if main_drink:1062 main_drink = main_drink[0]1063 Merger_DB['skip_list'].update({'_id': 'beer_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1064 # saving data to files1065 beer = list(Merger_DB['Пиво'].find())1066 write_file('beer.json', beer)1067 return redirect('/beer_grouping_prove')1068 group_id = numpy.unique([i['product_id'] for i in result_list if 'product_id' in i.keys()])1069 groups = list()1070 products_with_id = [i for i in beer if 'product_id' in i.keys()]1071 for i in group_id:1072 group = [k for k in products_with_id if k['product_id'] == i]1073 groups.append(group)1074 result_list = [i for i in result_list if not (i in group)]1075 # число несгруппированных напитков1076 undone = Merger_DB['Пиво'].count_documents({'identified': False})1077 # Номера групп в группировке1078 productData = list(Merger_DB['productData'].find({'section': 'Пиво'}))1079 new_nums = []1080 if groups:1081 # group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'product_id' in k[0].keys()])1082 group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'in_productData' in k[0].keys()])1083 group_nums = list(group_nums)1084 if group_nums:1085 print(group_nums)1086 for i in group_nums:1087 new_nums.append(productData.index([k for k in productData if k['id'] == i][0]) + 1)1088 new_group = []1089 for i in groups:1090 if 'in_productData' in i[0].keys():1091 new_group.append(i)1092 for i in groups:1093 if not (i in new_group):1094 new_group.append(i)1095 groups = new_group1096 return render_template('grouping_beer.html', main_drink=main_drink, products=result_list, groups=groups, undone=undone, group_nums=new_nums)1097@app.route('/grouping_champagne/', methods=['GET', 'POST'])1098def grouping_champagne():1099 ip_address = request.remote_addr.replace('.', '')1100 if request.method == 'GET':1101 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1102 search = ''1103 result_list = []1104 champagne = list(Merger_DB['Шампанское и игристое вино'].find())1105 skip_list = list(Merger_DB['skip_list'].find({'_id': 'champagne_skip_list'}))1106 if skip_list:1107 skip_list = skip_list[0]['skip_list']1108 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1109 if main_drink:1110 main_drink = main_drink[0]1111 else:1112 if skip_list:1113 del skip_list[0]1114 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1115 if main_drink:1116 main_drink = main_drink[0]1117 Merger_DB['skip_list'].update({'_id': 'champagne_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1118 if "index" in request.form:1119 link = request.form['index']1120 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'champagne_link_list'}, {ip_address: {'$exists': True}}]}))1121 if link_list:1122 link_list = link_list[0][ip_address]1123 if link in link_list:1124 link_list.remove(link)1125 else:1126 link_list.append(link)1127 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1128 if 'add_to_group' in request.form:1129 article = request.form['add_to_group']1130 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'champagne_link_list'}, {ip_address: {'$exists': True}}]}))1131 if link_list:1132 link_list = link_list[0][ip_address]1133 if article in link_list:1134 link_list.remove(article)1135 else:1136 link_list.append(article)1137 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1138 if 'skip' in request.form:1139 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1140 skip_list = list(Merger_DB['skip_list'].find({'_id': 'champagne_skip_list'}))1141 if skip_list:1142 skip_list = skip_list[0]['skip_list']1143 if not (request.form['skip'] in skip_list):1144 skip_list.append(request.form['skip'])1145 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1146 if main_drink:1147 main_drink = main_drink[0]1148 else:1149 if skip_list:1150 del skip_list[0]1151 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1152 if main_drink:1153 main_drink = main_drink[0]1154 Merger_DB['skip_list'].update({'_id': 'champagne_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1155 if 'search' in request.form:1156 search = request.form['search']1157 result_list = [i for i in champagne if search.lower() in i['name'].lower() and not (i is main_drink)]1158 if 'saving' in request.form:1159 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'champagne_link_list'}, {ip_address: {'$exists': True}}]}))1160 if link_list:1161 link_list = link_list[0][ip_address]1162 match = [i for i in link_list if i.isdigit()]1163 if len(match) > 1:1164 flash('Ошибка: Вы можете добавить напиток только в одну группу')1165 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1166 return redirect('/grouping_champagne')1167 elif len(match) == 1:1168 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'champagne_link_list'}, {ip_address: {'$exists': True}}]}))1169 if link_list:1170 link_list = link_list[0][ip_address]1171 link_list.remove(match[0])1172 if main_drink:1173 link_list.append(main_drink['link'])1174 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1175 product_id = match[0]1176 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'champagne_link_list'}, {ip_address: {'$exists': True}}]}))1177 if link_list:1178 link_list = link_list[0][ip_address]1179 for i in link_list:1180 drink = [k for k in champagne if k['link'] == i][0]1181 ind = champagne.index(drink)1182 drink['identified'] = True1183 drink['product_id'] = product_id1184 if not ('id' in champagne[ind].keys()):1185 drink['id'] = take_article()1186 Merger_DB['Шампанское и игристое вино'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1187 champagne = list(Merger_DB['Шампанское и игристое вино'].find())1188 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1189 if main_drink:1190 main_drink = main_drink[0]1191 else:1192 skip_list = list(Merger_DB['skip_list'].find({'_id': 'champagne_skip_list'}))1193 if skip_list:1194 skip_list = skip_list[0]['skip_list']1195 if skip_list:1196 del skip_list[0]1197 main_drink = [i for i in champagne if1198 i['identified'] is False and not (i['link'] in skip_list)]1199 if main_drink:1200 main_drink = main_drink[0]1201 Merger_DB['skip_list'].update({'_id': 'champagne_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1202 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'champagne_link_list'}, {ip_address: {'$exists': True}}]}))1203 if link_list:1204 link_list = link_list[0][ip_address]1205 productData = list(Merger_DB['productData'].find({'section': 'Шампанское и игристое вино'}))1206 item_in_PD = [i for i in productData if i['id'] == product_id]1207 if item_in_PD:1208 item_in_PD_index = productData.index(item_in_PD[0])1209 for i in link_list:1210 item_in_PD[0]['links'].append(i)1211 Merger_DB['productData'].update({'_id': item_in_PD[0]['id']}, {'$set': item_in_PD[0]}, upsert=True)1212 champagne = list(Merger_DB['Шампанское и игристое вино'].find())1213 need_change = [i for i in champagne if i['link'] in link_list]1214 for i in need_change:1215 i['in_productData'] = True1216 Merger_DB['Шампанское и игристое вино'].update({'_id': i['_id']}, {'$set': i}, upsert=True)1217 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1218 champagne = list(Merger_DB['Шампанское и игристое вино'].find())1219 write_file('champagne.json', champagne)1220 productData = list(Merger_DB['productData'].find())1221 write_file('productData.json', productData)1222 return redirect('/champagne_grouping_prove')1223 else:1224 if main_drink:1225 link_list.append(main_drink['link'])1226 product_id = take_article()1227 for i in link_list:1228 drink = [k for k in champagne if k['link'] == i][0]1229 ind = champagne.index(drink)1230 drink['identified'] = True1231 drink['product_id'] = product_id1232 if not ('id' in champagne[ind].keys()):1233 drink['id'] = take_article()1234 Merger_DB['Шампанское и игристое вино'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1235 Merger_DB['link_list'].update({'_id': 'champagne_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1236 champagne = list(Merger_DB['Шампанское и игристое вино'].find())1237 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1238 if main_drink:1239 main_drink = main_drink[0]1240 else:1241 skip_list = list(Merger_DB['skip_list'].find({'_id': 'champagne_skip_list'}))1242 if skip_list:1243 skip_list = skip_list[0]['skip_list']1244 if skip_list:1245 del skip_list[0]1246 main_drink = [i for i in champagne if i['identified'] is False and not (i['link'] in skip_list)]1247 if main_drink:1248 main_drink = main_drink[0]1249 Merger_DB['skip_list'].update({'_id': 'champagne_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1250 # saving data to files1251 champagne = list(Merger_DB['Шампанское и игристое вино'].find())1252 write_file('champagne.json', champagne)1253 return redirect('/champagne_grouping_prove')1254 group_id = numpy.unique([i['product_id'] for i in result_list if 'product_id' in i.keys()])1255 groups = list()1256 products_with_id = [i for i in champagne if 'product_id' in i.keys()]1257 for i in group_id:1258 group = [k for k in products_with_id if k['product_id'] == i]1259 groups.append(group)1260 result_list = [i for i in result_list if not (i in group)]1261 # число несгруппированных напитков1262 undone = Merger_DB['Шампанское и игристое вино'].count_documents({'identified': False})1263 # Номера групп в группировке1264 productData = list(Merger_DB['productData'].find({'section': 'Шампанское и игристое вино'}))1265 new_nums = []1266 if groups:1267 # group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'product_id' in k[0].keys()])1268 group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'in_productData' in k[0].keys()])1269 group_nums = list(group_nums)1270 if group_nums:1271 print(group_nums)1272 for i in group_nums:1273 new_nums.append(productData.index([k for k in productData if k['id'] == i][0]) + 1)1274 new_group = []1275 for i in groups:1276 if 'in_productData' in i[0].keys():1277 new_group.append(i)1278 for i in groups:1279 if not (i in new_group):1280 new_group.append(i)1281 groups = new_group1282 return render_template('grouping_champagne.html', main_drink=main_drink, products=result_list, groups=groups, undone=undone, group_nums=new_nums)1283@app.route('/grouping_cognac/', methods=['GET', 'POST'])1284def grouping_cognac():1285 ip_address = request.remote_addr.replace('.', '')1286 if request.method == 'GET':1287 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1288 search = ''1289 result_list = []1290 cognac = list(Merger_DB['Коньяк'].find())1291 skip_list = list(Merger_DB['skip_list'].find({'_id': 'cognac_skip_list'}))1292 if skip_list:1293 skip_list = skip_list[0]['skip_list']1294 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1295 if main_drink:1296 main_drink = main_drink[0]1297 else:1298 if skip_list:1299 del skip_list[0]1300 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1301 if main_drink:1302 main_drink = main_drink[0]1303 Merger_DB['skip_list'].update({'_id': 'cognac_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1304 if "index" in request.form:1305 link = request.form['index']1306 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'cognac_link_list'}, {ip_address: {'$exists': True}}]}))1307 if link_list:1308 link_list = link_list[0][ip_address]1309 if link in link_list:1310 link_list.remove(link)1311 else:1312 link_list.append(link)1313 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1314 if 'add_to_group' in request.form:1315 article = request.form['add_to_group']1316 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'cognac_link_list'}, {ip_address: {'$exists': True}}]}))1317 if link_list:1318 link_list = link_list[0][ip_address]1319 if article in link_list:1320 link_list.remove(article)1321 else:1322 link_list.append(article)1323 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1324 if 'skip' in request.form:1325 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1326 skip_list = list(Merger_DB['skip_list'].find({'_id': 'cognac_skip_list'}))1327 if skip_list:1328 skip_list = skip_list[0]['skip_list']1329 if not (request.form['skip'] in skip_list):1330 skip_list.append(request.form['skip'])1331 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1332 if main_drink:1333 main_drink = main_drink[0]1334 else:1335 if skip_list:1336 del skip_list[0]1337 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1338 if main_drink:1339 main_drink = main_drink[0]1340 Merger_DB['skip_list'].update({'_id': 'cognac_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1341 if 'search' in request.form:1342 search = request.form['search']1343 result_list = [i for i in cognac if search.lower() in i['name'].lower() and not (i is main_drink)]1344 if 'saving' in request.form:1345 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'cognac_link_list'}, {ip_address: {'$exists': True}}]}))1346 if link_list:1347 link_list = link_list[0][ip_address]1348 match = [i for i in link_list if i.isdigit()]1349 if len(match) > 1:1350 flash('Ошибка: Вы можете добавить напиток только в одну группу')1351 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1352 return redirect('/grouping_cognac')1353 elif len(match) == 1:1354 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'cognac_link_list'}, {ip_address: {'$exists': True}}]}))1355 if link_list:1356 link_list = link_list[0][ip_address]1357 link_list.remove(match[0])1358 if main_drink:1359 link_list.append(main_drink['link'])1360 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1361 product_id = match[0]1362 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'cognac_link_list'}, {ip_address: {'$exists': True}}]}))1363 if link_list:1364 link_list = link_list[0][ip_address]1365 for i in link_list:1366 drink = [k for k in cognac if k['link'] == i][0]1367 ind = cognac.index(drink)1368 drink['identified'] = True1369 drink['product_id'] = product_id1370 if not ('id' in cognac[ind].keys()):1371 drink['id'] = take_article()1372 Merger_DB['Коньяк'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1373 cognac = list(Merger_DB['Коньяк'].find())1374 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1375 if main_drink:1376 main_drink = main_drink[0]1377 else:1378 skip_list = list(Merger_DB['skip_list'].find({'_id': 'cognac_skip_list'}))1379 if skip_list:1380 skip_list = skip_list[0]['skip_list']1381 if skip_list:1382 del skip_list[0]1383 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1384 if main_drink:1385 main_drink = main_drink[0]1386 Merger_DB['skip_list'].update({'_id': 'cognac_skip_list'}, {'$set': {'skip_list': skip_list}},1387 upsert=True)1388 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'cognac_link_list'}, {ip_address: {'$exists': True}}]}))1389 if link_list:1390 link_list = link_list[0][ip_address]1391 productData = list(Merger_DB['productData'].find({'section': 'Коньяк'}))1392 item_in_PD = [i for i in productData if i['id'] == product_id]1393 if item_in_PD:1394 item_in_PD_index = productData.index(item_in_PD[0])1395 for i in link_list:1396 item_in_PD[0]['links'].append(i)1397 Merger_DB['productData'].update({'_id': item_in_PD[0]['id']}, {'$set': item_in_PD[0]}, upsert=True)1398 cognac = list(Merger_DB['Коньяк'].find())1399 need_change = [i for i in cognac if i['link'] in link_list]1400 for i in need_change:1401 i['in_productData'] = True1402 Merger_DB['Коньяк'].update({'_id': i['_id']}, {'$set': i}, upsert=True)1403 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1404 # saving data to files1405 cognac = list(Merger_DB['Коньяк'].find())1406 write_file('cognac.json', cognac)1407 productData = list(Merger_DB['productData'].find())1408 write_file('productData.json', productData)1409 return redirect('/cognac_grouping_prove')1410 else:1411 if main_drink:1412 link_list.append(main_drink['link'])1413 product_id = take_article()1414 for i in link_list:1415 drink = [k for k in cognac if k['link'] == i][0]1416 ind = cognac.index(drink)1417 drink['identified'] = True1418 drink['product_id'] = product_id1419 if not ('id' in cognac[ind].keys()):1420 drink['id'] = take_article()1421 Merger_DB['Коньяк'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1422 Merger_DB['link_list'].update({'_id': 'cognac_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1423 cognac = list(Merger_DB['Коньяк'].find())1424 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1425 if main_drink:1426 main_drink = main_drink[0]1427 else:1428 skip_list = list(Merger_DB['skip_list'].find({'_id': 'cognac_skip_list'}))1429 if skip_list:1430 skip_list = skip_list[0]['skip_list']1431 if skip_list:1432 del skip_list[0]1433 main_drink = [i for i in cognac if i['identified'] is False and not (i['link'] in skip_list)]1434 if main_drink:1435 main_drink = main_drink[0]1436 Merger_DB['skip_list'].update({'_id': 'cognac_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1437 # saving data to files1438 cognac = list(Merger_DB['Коньяк'].find())1439 write_file('cognac.json', cognac)1440 return redirect('/cognac_grouping_prove')1441 group_id = numpy.unique([i['product_id'] for i in result_list if 'product_id' in i.keys()])1442 groups = list()1443 products_with_id = [i for i in cognac if 'product_id' in i.keys()]1444 for i in group_id:1445 group = [k for k in products_with_id if k['product_id'] == i]1446 groups.append(group)1447 result_list = [i for i in result_list if not (i in group)]1448 # число несгруппированных напитков1449 undone = Merger_DB['Коньяк'].count_documents({'identified': False})1450 # Номера групп в группировке1451 productData = list(Merger_DB['productData'].find({'section': 'Коньяк'}))1452 new_nums = []1453 if groups:1454 # group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'product_id' in k[0].keys()])1455 group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'in_productData' in k[0].keys()])1456 group_nums = list(group_nums)1457 if group_nums:1458 for i in group_nums:1459 new_nums.append(productData.index([k for k in productData if k['id'] == i][0]) + 1)1460 new_group = []1461 for i in groups:1462 if 'in_productData' in i[0].keys():1463 new_group.append(i)1464 for i in groups:1465 if not (i in new_group):1466 new_group.append(i)1467 groups = new_group1468 return render_template('grouping_cognac.html', main_drink=main_drink, products=result_list, groups=groups, undone=undone, group_nums=new_nums)1469@app.route('/grouping_vodka/', methods=['GET', 'POST'])1470def grouping_vodka():1471 ip_address = request.remote_addr.replace('.', '')1472 if request.method == 'GET':1473 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1474 search = ''1475 result_list = []1476 vodka = list(Merger_DB['Водка'].find())1477 skip_list = list(Merger_DB['skip_list'].find({'_id': 'vodka_skip_list'}))1478 if skip_list:1479 skip_list = skip_list[0]['skip_list']1480 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1481 if main_drink:1482 main_drink = main_drink[0]1483 else:1484 if skip_list:1485 del skip_list[0]1486 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1487 if main_drink:1488 main_drink = main_drink[0]1489 Merger_DB['skip_list'].update({'_id': 'vodka_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1490 if "index" in request.form:1491 link = request.form['index']1492 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'vodka_link_list'}, {ip_address: {'$exists': True}}]}))1493 if link_list:1494 link_list = link_list[0][ip_address]1495 if link in link_list:1496 link_list.remove(link)1497 else:1498 link_list.append(link)1499 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1500 if 'add_to_group' in request.form:1501 article = request.form['add_to_group']1502 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'vodka_link_list'}, {ip_address: {'$exists': True}}]}))1503 if link_list:1504 link_list = link_list[0][ip_address]1505 if article in link_list:1506 link_list.remove(article)1507 else:1508 link_list.append(article)1509 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1510 if 'skip' in request.form:1511 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1512 skip_list = list(Merger_DB['skip_list'].find({'_id': 'vodka_skip_list'}))1513 if skip_list:1514 skip_list = skip_list[0]['skip_list']1515 if not (request.form['skip'] in skip_list):1516 skip_list.append(request.form['skip'])1517 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1518 if main_drink:1519 main_drink = main_drink[0]1520 else:1521 if skip_list:1522 del skip_list[0]1523 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1524 if main_drink:1525 main_drink = main_drink[0]1526 Merger_DB['skip_list'].update({'_id': 'vodka_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1527 if 'search' in request.form:1528 search = request.form['search']1529 result_list = [i for i in vodka if search.lower() in i['name'].lower() and not (i is main_drink)]1530 if 'saving' in request.form:1531 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'vodka_link_list'}, {ip_address: {'$exists': True}}]}))1532 if link_list:1533 link_list = link_list[0][ip_address]1534 match = [i for i in link_list if i.isdigit()]1535 if len(match) > 1:1536 flash('Ошибка: Вы можете добавить напиток только в одну группу')1537 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1538 return redirect('/grouping_vodka')1539 elif len(match) == 1:1540 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'vodka_link_list'}, {ip_address: {'$exists': True}}]}))1541 if link_list:1542 link_list = link_list[0][ip_address]1543 link_list.remove(match[0])1544 if main_drink:1545 link_list.append(main_drink['link'])1546 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1547 product_id = match[0]1548 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'vodka_link_list'}, {ip_address: {'$exists': True}}]}))1549 if link_list:1550 link_list = link_list[0][ip_address]1551 for i in link_list:1552 drink = [k for k in vodka if k['link'] == i][0]1553 ind = vodka.index(drink)1554 drink['identified'] = True1555 drink['product_id'] = product_id1556 if not ('id' in vodka[ind].keys()):1557 drink['id'] = take_article()1558 Merger_DB['Водка'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1559 vodka = list(Merger_DB['Водка'].find())1560 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1561 if main_drink:1562 main_drink = main_drink[0]1563 else:1564 skip_list = list(Merger_DB['skip_list'].find({'_id': 'vodka_skip_list'}))1565 if skip_list:1566 skip_list = skip_list[0]['skip_list']1567 if skip_list:1568 del skip_list[0]1569 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1570 if main_drink:1571 main_drink = main_drink[0]1572 Merger_DB['skip_list'].update({'_id': 'vodka_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1573 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'vodka_link_list'}, {ip_address: {'$exists': True}}]}))1574 if link_list:1575 link_list = link_list[0][ip_address]1576 productData = list(Merger_DB['productData'].find({'section': 'Водка'}))1577 item_in_PD = [i for i in productData if i['id'] == product_id]1578 if item_in_PD:1579 item_in_PD_index = productData.index(item_in_PD[0])1580 for i in link_list:1581 item_in_PD[0]['links'].append(i)1582 Merger_DB['productData'].update({'_id': item_in_PD[0]['id']}, {'$set': item_in_PD[0]}, upsert=True)1583 vodka = list(Merger_DB['Водка'].find())1584 need_change = [i for i in vodka if i['link'] in link_list]1585 for i in need_change:1586 i['in_productData'] = True1587 Merger_DB['Водка'].update({'_id': i['_id']}, {'$set': i}, upsert=True)1588 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1589 # saving data to files1590 vodka = list(Merger_DB['Водка'].find())1591 write_file('vodka.json', vodka)1592 productData = list(Merger_DB['productData'].find())1593 write_file('productData.json', productData)1594 return redirect('/vodka_grouping_prove')1595 else:1596 if main_drink:1597 link_list.append(main_drink['link'])1598 product_id = take_article()1599 write_file('vodka_link_list.json', [])1600 for i in link_list:1601 drink = [k for k in vodka if k['link'] == i][0]1602 ind = vodka.index(drink)1603 drink['identified'] = True1604 drink['product_id'] = product_id1605 if not('id' in vodka[ind].keys()):1606 drink['id'] = take_article()1607 Merger_DB['Водка'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1608 Merger_DB['link_list'].update({'_id': 'vodka_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1609 vodka = list(Merger_DB['Водка'].find())1610 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'] in skip_list)]1611 if main_drink:1612 main_drink = main_drink[0]1613 else:1614 skip_list = list(Merger_DB['skip_list'].find({'_id': 'vodka_skip_list'}))1615 if skip_list:1616 skip_list = skip_list[0]['skip_list']1617 if skip_list:1618 del skip_list[0]1619 main_drink = [i for i in vodka if i['identified'] is False and not (i['link'][0] in skip_list)]1620 if main_drink:1621 main_drink = main_drink[0]1622 Merger_DB['skip_list'].update({'_id': 'vodka_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1623 # saving data to files1624 vodka = list(Merger_DB['Водка'].find())1625 write_file('vodka.json', vodka)1626 return redirect('/vodka_grouping_prove')1627 group_id = numpy.unique([i['product_id'] for i in result_list if 'product_id' in i.keys()])1628 groups = list()1629 products_with_id = [i for i in vodka if 'product_id' in i.keys()]1630 for i in group_id:1631 group = [k for k in products_with_id if k['product_id'] == i]1632 groups.append(group)1633 result_list = [i for i in result_list if not (i in group)]1634 1635 # число несгруппированных напитков 1636 undone = Merger_DB['Водка'].count_documents({'identified': False})1637 # Номера групп в группировке1638 productData = list(Merger_DB['productData'].find({'section': 'Водка'}))1639 new_nums = []1640 if groups:1641 # group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'product_id' in k[0].keys()])1642 group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'in_productData' in k[0].keys()])1643 group_nums = list(group_nums)1644 if group_nums:1645 for i in group_nums:1646 new_nums.append(productData.index([k for k in productData if k['id'] == i][0]) + 1)1647 new_group = []1648 for i in groups:1649 if 'in_productData' in i[0].keys():1650 new_group.append(i)1651 for i in groups:1652 if not (i in new_group):1653 new_group.append(i)1654 groups = new_group1655 return render_template('grouping_vodka.html', main_drink=main_drink, products=result_list, groups=groups, undone=undone, group_nums=new_nums)1656@app.route('/grouping_whiskey/', methods=['GET', 'POST'])1657def grouping_whiskey():1658 # update_data = read_file('whiskey_update.json')1659 # if update_data:1660 # for i in update_data:1661 # Merger_DB['Виски'].update({'_id': i['_id']}, {'$set': i}, upsert=True)1662 ip_address = request.remote_addr.replace('.', '')1663 if request.method == 'GET':1664 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1665 search = ''1666 result_list = []1667 whiskey = list(Merger_DB['Виски'].find())1668 skip_list = list(Merger_DB['skip_list'].find({'_id': 'whiskey_skip_list'}))1669 if skip_list:1670 skip_list = skip_list[0]['skip_list']1671 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1672 if main_drink:1673 main_drink = main_drink[0]1674 else:1675 if skip_list:1676 del skip_list[0]1677 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1678 if main_drink:1679 main_drink = main_drink[0]1680 Merger_DB['skip_list'].update({'_id': 'whiskey_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1681 if "index" in request.form:1682 link = request.form['index']1683 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'whiskey_link_list'}, {ip_address: {'$exists': True}}]}))1684 if link_list:1685 link_list = link_list[0][ip_address]1686 if link in link_list:1687 link_list.remove(link)1688 else:1689 link_list.append(link)1690 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1691 if 'add_to_group' in request.form:1692 article = request.form['add_to_group']1693 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'whiskey_link_list'}, {ip_address: {'$exists': True}}]}))1694 if link_list:1695 link_list = link_list[0][ip_address]1696 if article in link_list:1697 link_list.remove(article)1698 else:1699 link_list.append(article)1700 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1701 if 'skip' in request.form:1702 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1703 skip_list = list(Merger_DB['skip_list'].find({'_id': 'whiskey_skip_list'}))1704 if skip_list:1705 skip_list = skip_list[0]['skip_list']1706 if not (request.form['skip'] in skip_list):1707 skip_list.append(request.form['skip'])1708 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1709 if main_drink:1710 main_drink = main_drink[0]1711 else:1712 if skip_list:1713 del skip_list[0]1714 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1715 if main_drink:1716 main_drink = main_drink[0]1717 Merger_DB['skip_list'].update({'_id': 'whiskey_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1718 if 'search' in request.form:1719 search = request.form['search']1720 result_list = [i for i in whiskey if search.lower() in i['name'].lower() and not (i is main_drink)]1721 if 'saving' in request.form:1722 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'whiskey_link_list'}, {ip_address: {'$exists': True}}]}))1723 if link_list:1724 link_list = link_list[0][ip_address]1725 match = [i for i in link_list if i.isdigit()]1726 if len(match) > 1:1727 flash('Ошибка: Вы можете добавить напиток только в одну группу')1728 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1729 return redirect('/grouping_whiskey')1730 elif len(match) == 1:1731 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'whiskey_link_list'}, {ip_address: {'$exists': True}}]}))1732 if link_list:1733 link_list = link_list[0][ip_address]1734 link_list.remove(match[0])1735 if main_drink:1736 link_list.append(main_drink['link'])1737 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$set': {ip_address: link_list}}, upsert=True)1738 product_id = match[0]1739 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'whiskey_link_list'}, {ip_address: {'$exists': True}}]}))1740 if link_list:1741 link_list = link_list[0][ip_address]1742 for i in link_list:1743 drink = [k for k in whiskey if k['link'] == i][0]1744 ind = whiskey.index(drink)1745 drink['identified'] = True1746 drink['product_id'] = product_id1747 if not ('id' in whiskey[ind].keys()):1748 drink['id'] = take_article()1749 Merger_DB['Виски'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1750 whiskey = list(Merger_DB['Виски'].find())1751 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1752 if main_drink:1753 main_drink = main_drink[0]1754 else:1755 skip_list = list(Merger_DB['skip_list'].find({'_id': 'whiskey_skip_list'}))1756 if skip_list:1757 skip_list = skip_list[0]['skip_list']1758 if skip_list:1759 del skip_list[0]1760 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1761 if main_drink:1762 main_drink = main_drink[0]1763 Merger_DB['skip_list'].update({'_id': 'whiskey_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1764 link_list = list(Merger_DB['link_list'].find({'$and': [{'_id': 'whiskey_link_list'}, {ip_address: {'$exists': True}}]}))1765 if link_list:1766 link_list = link_list[0][ip_address]1767 productData = list(Merger_DB['productData'].find({'section': 'Виски'}))1768 item_in_PD = [i for i in productData if i['id'] == product_id]1769 if item_in_PD:1770 item_in_PD_index = productData.index(item_in_PD[0])1771 for i in link_list:1772 item_in_PD[0]['links'].append(i)1773 Merger_DB['productData'].update({'_id': item_in_PD[0]['id']}, {'$set': item_in_PD[0]}, upsert=True)1774 whiskey = list(Merger_DB['Виски'].find())1775 need_change = [i for i in whiskey if i['link'] in link_list]1776 for i in need_change:1777 i['in_productData'] = True1778 Merger_DB['Виски'].update({'_id': i['_id']}, {'$set': i}, upsert=True)1779 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1780 # saving data to files1781 whiskey = list(Merger_DB['Виски'].find())1782 write_file('whiskey.json', whiskey)1783 productData = list(Merger_DB['productData'].find())1784 write_file('productData.json', productData)1785 return redirect('/whiskey_grouping_prove')1786 else:1787 if main_drink:1788 link_list.append(main_drink['link'])1789 product_id = take_article()1790 for i in link_list:1791 drink = [k for k in whiskey if k['link'] == i][0]1792 ind = whiskey.index(drink)1793 drink['identified'] = True1794 drink['product_id'] = product_id1795 if not('id' in whiskey[ind].keys()):1796 drink['id'] = take_article()1797 Merger_DB['Виски'].update({'_id': drink['_id']}, {'$set': drink}, upsert=True)1798 Merger_DB['link_list'].update({'_id': 'whiskey_link_list'}, {'$unset': {ip_address: 1}}, upsert=True)1799 whiskey = list(Merger_DB['Виски'].find())1800 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1801 if main_drink:1802 main_drink = main_drink[0]1803 else:1804 skip_list = list(Merger_DB['skip_list'].find({'_id': 'whiskey_skip_list'}))1805 if skip_list:1806 skip_list = skip_list[0]['skip_list']1807 if skip_list:1808 del skip_list[0]1809 main_drink = [i for i in whiskey if i['identified'] is False and not (i['link'] in skip_list)]1810 if main_drink:1811 main_drink = main_drink[0]1812 Merger_DB['skip_list'].update({'_id': 'whiskey_skip_list'}, {'$set': {'skip_list': skip_list}}, upsert=True)1813 # saving data to files1814 whiskey = list(Merger_DB['Виски'].find())1815 write_file('whiskey.json', whiskey)1816 return redirect('/whiskey_grouping_prove')1817 # group_id = set([i['product_id'] for i in result_list if 'product_id' in i.keys()])1818 group_id = numpy.unique([i['product_id'] for i in result_list if 'product_id' in i.keys()])1819 groups = list()1820 products_with_id = [i for i in whiskey if 'product_id' in i.keys()]1821 for i in group_id:1822 group = [k for k in products_with_id if k['product_id'] == i]1823 groups.append(group)1824 result_list = [i for i in result_list if not (i in group)]1825 1826 # число несгруппированных напитков1827 undone = Merger_DB['Виски'].count_documents({'identified': False})1828 # Номера групп в группировке1829 productData = list(Merger_DB['productData'].find({'section': 'Виски'}))1830 new_nums = []1831 if groups:1832 # group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'product_id' in k[0].keys()])1833 group_nums = numpy.unique([k[0]['product_id'] for k in groups if 'in_productData' in k[0].keys()])1834 group_nums = list(group_nums)1835 if group_nums:1836 for i in group_nums:1837 new_nums.append(productData.index([k for k in productData if k['id'] == i][0]) + 1)1838 new_group = []1839 for i in groups:1840 if 'in_productData' in i[0].keys():1841 new_group.append(i)1842 for i in groups:1843 if not (i in new_group):1844 new_group.append(i)1845 groups = new_group1846 return render_template('grouping_whiskey.html', main_drink=main_drink, products=result_list, groups=groups, undone=undone, group_nums=new_nums)1847def read_file(file_name):1848 with open(file_name) as f:1849 file = f.read()1850 file = json.loads(file)1851 f.close()1852 return file1853# def read_file(file_name):1854# new_name = file_name[:file_name.index('.json')] + '_dont_touch.json'1855# start_time = time.time()1856# while True:1857# if time.time() - start_time > 5:1858# os.rename(new_name, file_name)1859# try:1860# os.rename(file_name, new_name)1861# with open(new_name) as f:1862# file = f.read()1863# file = json.loads(file)1864# f.close()1865# os.rename(new_name, file_name)1866# return file1867# except:1868# time.sleep(0.5)1869def write_file(file_name, data):1870 with open(file_name, 'w') as f:1871 json.dump(data, f, ensure_ascii=False, indent=2)1872 f.close()1873 return1874# def write_file(file_name, data):1875# new_name = file_name[:file_name.index('.json')] + '_dont_touch.json'1876# os.rename(file_name, new_name)1877# with open(new_name, 'w') as f:1878# json.dump(data, f, ensure_ascii=False, indent=2)1879# f.close()1880# while True:1881# try:1882# with open(new_name) as f:1883# file = f.read()1884# file = json.loads(file)1885# f.close()1886# while True:1887# if len(file) == len(data):1888# break1889# else:1890# continue1891# break1892# except:1893# time.sleep(0.5)1894# os.rename(new_name, file_name)1895# return1896# def take_article():1897# with open('articles.txt', 'r') as f:1898# doc = f.read()1899# num = doc.split('\n')1900# del num[-1]1901# article = num[-1]1902# with open('articles.txt', 'w') as f:1903# doc = doc.replace(article + '\n', '')1904# f.write(doc)1905# f.close()1906# return article1907def take_article():1908 1909 while True:1910 try:1911 os.rename('articles.txt', 'articles_dont_touch.txt')1912 with open('articles_dont_touch.txt', 'r') as f:1913 doc = f.read()1914 num = doc.split('\n')1915 del num[-1]1916 article = num[-1]1917 f.close()1918 with open('articles_dont_touch.txt', 'w') as f:1919 doc = doc.replace(article + '\n', '')1920 f.write(doc)1921 f.close()1922 os.rename('articles_dont_touch.txt', 'articles.txt')1923 return article1924 except:1925 time.sleep(0.5)1926if __name__ == '__main__':1927 app.run(debug=True)1928 # from waitress import serve...

Full Screen

Full Screen

window.py

Source:window.py Github

copy

Full Screen

1import os.path2from PyQt5.QtCore import Qt, QEvent, QPoint, QTimer3from PyQt5.QtWidgets import QMainWindow, QWidget, QGridLayout, QLabel, QHBoxLayout, QRadioButton, \4 QButtonGroup, QVBoxLayout, QComboBox, QFrame, QMenu, QAction5from PyQt5.QtGui import QIcon, QPixmap, QBrush, QPalette, QEnterEvent, QMouseEvent6import config7import core.contacts8import gui9global ignore_mouse_press_events, show_status, chat_list_changed10ignore_mouse_press_events: bool = False11show_group: int = 0 # Defaults to Everyone12show_status = config.STATUS_ALL13chat_list_changed: bool = True14class StatusSelectWidget(QWidget):15 def __init__(self):16 super().__init__()17 self.layout = QHBoxLayout()18 self.status = QButtonGroup()19 self.status_all = QRadioButton('All')20 self.status_all.setChecked(True)21 self.status_online = QRadioButton('Online')22 self.status_offline = QRadioButton('Offline')23 self.status_buttons = [self.status_all, self.status_online, self.status_offline]24 self.status.buttonToggled.connect(self.button_toggled)25 for button in self.status_buttons:26 self.status.addButton(button)27 self.layout.addWidget(button)28 self.setLayout(self.layout)29 def button_toggled(self, button: QRadioButton, checked: bool):30 if checked:31 global show_status, chat_list_changed32 chat_list_changed = True33 match button:34 case self.status_all:35 show_status = config.STATUS_ALL36 case self.status_online:37 show_status = config.STATUS_ONLINE38 case self.status_offline:39 show_status = config.STATUS_OFFLINE40class GroupSelectWidget(QWidget):41 def __init__(self):42 super().__init__()43 self.layout = QGridLayout()44 self.layout.setContentsMargins(6, 3, 0, 0)45 self.items = core.contacts.groups46 self.item_actions = {item: 'action' for item in self.items}47 self.select = QComboBox()48 self.select.addItems(self.items)49 self.select.setCurrentIndex(0)50 self.select.currentIndexChanged.connect(self.index_changed)51 self.layout.addWidget(self.select)52 self.setLayout(self.layout)53 @staticmethod54 def index_changed(index: int):55 global chat_list_changed, show_group56 chat_list_changed = True57 show_group = index58class ChatListItem(QFrame):59 def __init__(self, item):60 super().__init__()61 self.item = item62 self.id = item['id']63 self.position = item['position']64 self.layout = QHBoxLayout()65 self.layout.setContentsMargins(6, 6, 6, 6)66 self.setCursor(Qt.PointingHandCursor)67 icon = QLabel('')68 icon.setPixmap(item['icon'])69 self.layout.addWidget(icon)70 name = QLabel(item['name'])71 self.layout.addWidget(name)72 message = QLabel(item['message'])73 self.layout.addWidget(message)74 self.setLayout(self.layout)75 self.enterEvent = self.mouse_enter76 self.leaveEvent = self.mouse_leave77 self.mousePressEvent = self.mouse_pressed78 self.setContextMenuPolicy(Qt.CustomContextMenu)79 self.customContextMenuRequested.connect(self.show_context_menu)80 def mouse_enter(self, event: QEnterEvent):81 self.setStyleSheet('QFrame {background-color: rgba(255, 255, 255, 0.4);}'82 'QLabel {background-color: rgba(255, 255, 255, 0);}')83 return QWidget.enterEvent(self, event)84 def mouse_leave(self, event: QEvent):85 self.setStyleSheet('QFrame {background-color: rgba(255, 255, 255, 0);}')86 return QWidget.leaveEvent(self, event)87 def mouse_pressed(self, event: QMouseEvent):88 if event.button() == Qt.LeftButton:89 global ignore_mouse_press_events90 if not ignore_mouse_press_events:91 print('left pressed')92 else:93 ignore_mouse_press_events = False94 elif event.button() == Qt.RightButton:95 self.show_context_menu(event.globalPos())96 return QFrame.mousePressEvent(self, event)97 def show_context_menu(self, point: QPoint):98 context_menu = QMenu()99 profile = QAction('Open Profile')100 context_menu.addAction(profile)101 context_menu.addSeparator()102 dialog = QAction('New Dialog')103 context_menu.addAction(dialog)104 clear = QAction('Clear Dialog')105 context_menu.addAction(clear)106 context_menu.addSeparator()107 remove = QAction('Remove from Buddies')108 context_menu.addAction(remove)109 block = QAction('Remove and Block')110 context_menu.addAction(block)111 self.setCursor(Qt.ArrowCursor)112 action = context_menu.exec_(point)113 # After mouse clicked114 self.setCursor(Qt.PointingHandCursor)115 self.setStyleSheet('QFrame {background-color: rgba(255, 255, 255, 0);}')116 # Clicked outside117 if action is None:118 global ignore_mouse_press_events119 ignore_mouse_press_events = True120class ChatListWidget(QWidget):121 def __init__(self):122 super().__init__()123 self.layout = QVBoxLayout()124 self.layout.setContentsMargins(0, 0, 0, 0)125 self.layout.setSpacing(0)126 self.widgets = []127 self.ids = []128 global show_group, show_status129 self.show_group = show_group130 self.show_status = show_status131 self.setLayout(self.layout)132 def insert(self, position, widget):133 # Found - show hidden widget134 try:135 widget_index = self.widgets.index(widget)136 self.widgets[widget_index].setVisible(True)137 # Not found - add widget138 except ValueError:139 self.widgets.insert(position, widget)140 self.ids.append(widget.id)141 self.layout.insertWidget(position, widget)142 def remove(self, item_id):143 for widget in self.widgets:144 if widget['id'] == item_id:145 widget.setVisible(False)146 def clear(self):147 for widget in self.widgets:148 self.layout.removeWidget(widget)149 widget.setVisible(False)150 self.widgets = []151 self.ids = []152class ChatListPanel(QMainWindow):153 def __init__(self, parent):154 super().__init__()155 self.main_window = parent156 self.toolbar = gui.menu.Toolbar(self)157 self.addToolBar(self.toolbar)158 self.setMaximumWidth(config.Gui.CHAT_LIST_MAX_WIDTH)159 self.timer = QTimer(self)160 self.timer.timeout.connect(self.timeout)161 self.timer.start(config.Gui.chat_list_update_ms)162 self.background_pixmap = QPixmap(config.Gui.BACKGROUND_CHAT_LIST).scaled(self.size(), Qt.IgnoreAspectRatio)163 self.background_brush = QBrush(self.background_pixmap)164 self.background_palette = QPalette()165 self.background_palette.setBrush(QPalette.Background, self.background_brush)166 self.setPalette(self.background_palette)167 self.setAutoFillBackground(True)168 self.chat_list_widget = QWidget()169 self.chat_list_layout = QVBoxLayout()170 self.chat_list_layout.setContentsMargins(0, 0, 0, 0)171 self.chat_list_layout.setSpacing(0)172 self.chat_list_layout.setAlignment(Qt.AlignTop)173 self.select_widget = QWidget()174 self.select_layout = QHBoxLayout()175 self.select_layout.setContentsMargins(0, 0, 0, 0)176 self.select_layout.addWidget(GroupSelectWidget())177 self.select_layout.addWidget(StatusSelectWidget())178 self.select_widget.setLayout(self.select_layout)179 self.chat_list_layout.addWidget(self.select_widget)180 self.list_widget = ChatListWidget()181 self.buddies = []182 self.item_list = []183 self.set_list()184 self.chat_list_layout.addWidget(self.list_widget)185 self.chat_list_widget.setLayout(self.chat_list_layout)186 self.setCentralWidget(self.chat_list_widget)187 def set_list(self, status: int = config.STATUS_ALL):188 global chat_list_changed189 if not chat_list_changed:190 return191 chat_list_changed = False192 global show_group, show_status193 # If group select option changed194 if not self.list_widget.show_group == show_group:195 self.list_widget.clear()196 self.list_widget.show_group = show_group197 # If status radio button changed (and group option is the same)198 if not self.list_widget.show_status == show_status:199 self.list_widget.clear()200 self.list_widget.show_status = show_status201 self.buddies = core.contacts.get_buddies(group=show_group, status=status)202 for buddy in self.buddies:203 if not buddy['id'] in self.list_widget.ids:204 list_item = ChatListItem(buddy)205 self.list_widget.insert(buddy['position'], list_item)206 self.list_widget.setLayout(self.list_widget.layout)207 def timeout(self) -> None:208 global show_status, chat_list_changed209 if chat_list_changed:210 self.set_list(show_status)211class MessageListItem(QFrame):212 def __init__(self, message):213 super().__init__()214 self.layout = QHBoxLayout()215 self.label = QLabel(message)216 self.layout.addWidget(self.label)217 self.setLayout(self.layout)218class MessageListWidget(QWidget):219 def __init__(self):220 super().__init__()221 self.layout = QVBoxLayout()222 self.timer = QTimer(self)223 self.timer.start(100)224 self.label = QLabel('No messages yet.')225 self.layout.addWidget(self.label)226 self.setLayout(self.layout)227 self.show_messages('1')228 def show_messages(self, buddy_id):229 self.label.setVisible(False)230 for message in core.contacts.get_messages(buddy_id):231 self.layout.addWidget(MessageListItem(message))232class MessageListPanel(QWidget):233 def __init__(self):234 super().__init__()235 self.setMinimumWidth(config.Gui.MESSAGE_LIST_MIN_WIDTH)236 self.background_pixmap = QPixmap(config.Gui.BACKGROUND_MESSAGE_LIST).scaled(self.size(), Qt.IgnoreAspectRatio)237 self.background_brush = QBrush(self.background_pixmap)238 self.background_palette = QPalette()239 self.background_palette.setBrush(QPalette.Background, self.background_brush)240 self.setPalette(self.background_palette)241 self.setAutoFillBackground(True)242 self.layout = QVBoxLayout()243 self.layout.setSpacing(0)244 self.message_list_widget = MessageListWidget()245 self.layout.addWidget(self.message_list_widget)246 self.setLayout(self.layout)247class MainWindow(QMainWindow):248 def __init__(self):249 super().__init__()250 self.setWindowTitle(config.App.TITLE)251 self.setMinimumSize(config.Gui.WINDOW_MIN_SIZE)252 self.setWindowIcon(QIcon(config.Gui.ICON_APP))253 self.menu = gui.menu.Menubar(self)254 self.chat_list_panel = ChatListPanel(self)255 self.message_list_panel = MessageListPanel()256 # Insert toolbar menu show/hide action before status bar action257 self.menu.view.insertAction(self.menu.view_status_bar, self.chat_list_panel.toolbar.toggle_view)258 self.setMenuBar(self.menu)259 self.statusbar = gui.menu.StatusBar()260 self.setStatusBar(self.statusbar)261 status_pixmap = QPixmap(os.path.join(config.App.ICON_DIR, 'disconnected.png')262 ).scaled(config.Gui.statusbar_icon_size)263 self.status_label = QLabel('Status: Disconnected')264 self.status_icon = QLabel('')265 self.status_icon.setPixmap(status_pixmap)266 self.status_icon.setToolTip(self.status_label.text())267 self.statusbar.addPermanentWidget(self.status_label)268 self.statusbar.addPermanentWidget(self.status_icon)269 self.central_widget = QWidget()270 self.central_layout = QHBoxLayout()271 self.central_layout.setSpacing(0)272 self.central_layout.setContentsMargins(0, 0, 0, 0)273 self.central_layout.addWidget(self.chat_list_panel)274 self.central_layout.addWidget(self.message_list_panel)275 self.central_widget.setLayout(self.central_layout)...

Full Screen

Full Screen

components.py

Source:components.py Github

copy

Full Screen

1from django_component import Library, Component2register = Library()3@register.component4class Message(Component):5 template = "base_components/message.html"6@register.component7class Nav_link(Component):8 template = "base_components/nav_link.html"9#Show_group10@register.component11class Sidebar(Component):12 template = "show_group/sidebar.html"13@register.component14class Meetings(Component):15 template = "show_group/meetings.html"16@register.component17class Notes(Component):18 template = "show_group/notes/notes.html"19@register.component20class Comments(Component):21 template = "show_group/notes/comments.html"22@register.component23class Vote_comment_btn(Component):24 template = "show_group/notes/vote_comment_btn.html"25@register.component26class Vote_note_btn(Component):27 template = "show_group/notes/vote_note_btn.html"28@register.component29class Members(Component):30 template = "show_group/members.html"31#Forms32@register.component33class Form_field(Component):34 template = "base_components/forms/form_field.html"35@register.component36class Form_file(Component):37 template = "base_components/forms/form_file.html"38@register.component39class Form_error(Component):40 template = "base_components/forms/form_error.html"41@register.component42class Form_btn(Component):43 template = "base_components/forms/form_btn.html"44@register.component45class Group_buttons(Component):46 template = "base_components/group_buttons.html"47# CARDS48@register.component49class Card_child(Component):50 template = "base_components/cards/card_child.html"51@register.component52class Card_parent(Component):53 template = "base_components/cards/card_parent.html"54@register.component55class Card_user(Component):...

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run tempest automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful