async def showcataddr(message: types.Message): """Показываем адреса в определенной категории""" cat_id = message.text[12:] cat_id = -1 if cat_id == 'None' else int(cat_id) cat_name = Category(message.from_user.id).get_category_name(cat_id) all_addresses = Address().get_all_addresses(message.from_user.id, cat_id) if not all_addresses: await message.answer( f"Список адресов в категории *{cat_name}* пуст.\n\n" "Для добавления адреса в данную категорию перейдите в список всех адресов.\n\n" "Список моих адресов: /addresses\n\n" "Список моих категорий: /categories\n\n" "Начальный экран: /start", parse_mode='Markdown') return addresses_rows = [ f"*{address_one.address}* - /goto{address_one.id}\n" f"/addtocat{address_one.id} - переместить этот адрес в другую категорию\n" f"/deladdr{address_one.id} - удалить данный адрес из базы" for address_one in all_addresses ] answer_message = f"Список адресов в категории *{cat_name}*:\n\n" + "\n\n" \ .join(addresses_rows) + \ "\n\nСписок моих категорий: /categories" + \ "\n\nСписок моих адресов: /addresses" + \ "\n\nНачальный экран: /start" await message.answer(answer_message, parse_mode='Markdown')
def prediction(self, file, file_to_save_path): ## main here: ## #time_now = time.mktime((2016, 4, 26, 14, 45,45,4,120,-1)) # time_now = 01_May_2015 time_now = time.mktime(time.localtime()) # By Bowen Huang 04-27-2016 # Instant of class Category categories = Category() # Run categorize to obtain categories and internal results categories.categorize(file, file_to_save_path) # Assume last_visit_elapsed_variable is a global variable global last_visit_elapsed_variable last_visit_elapsed_variable = last_visit_elapsed( categories.inp_dataset, categories.inter_arrivals, categories.inter_arrival_cnt, categories.user_id, time_now) print #print "last visit elapsed:", last_visit_elapsed KDEs = KDE_plt(categories.categories, categories.inter_arrivals) MLE_plt(categories.categories, categories.inter_arrivals, categories.inter_arrival_means) ###recommendations#### recoms = [] for i in range(0, len(categories.categories)): num_of_recom = int( math.floor(0.01 * len(categories.categories[i][0])) ) + 1 #top 1% customers for recommendation temp_recom = [-1] * num_of_recom temp_cat = categories.categories[i][0] for n in range(0, num_of_recom): current_index = 0 #print "temp_cat_prob",temp_cat_prob for j in range(0, len(temp_cat)): if last_visit_elapsed_variable[ temp_cat[j]] > last_visit_elapsed_variable[ temp_cat[current_index]]: # print "here for j= ",j current_index = j temp_recom[n] = temp_cat[current_index] temp_cat.pop(current_index) recoms.append(temp_recom) print "The top 1 percent customers to recommend for target marketing:" print fh = open("./uploads/target_selection.txt", "w") for i in range(0, len(recoms)): for j in range(0, len(recoms[i]) ): #format in each line: (acc_id,category,priority) fh.writelines( str(categories.acc_id[recoms[i][j]]) + "," + str(i) + "," + str(j + 1)) fh.write("\n") print "Account ID", categories.acc_id[recoms[i][ j]], "has priority", j + 1, " in customer category", i print # store the number of categories self.category_num = len(categories.categories)
async def change_addr_cat(message: types.Message): """Меняем категорию адреса""" addr_id_to_cat = message.text[10:] rows = addr_id_to_cat.split('to') try: addr_id = int(rows[0]) cat_id = int(rows[1]) Category(message.from_user.id).change_category_address(addr_id, cat_id) cat_name = Category(message.from_user.id).get_category_name(cat_id) addr_name = Address().get_name_by_id(message.from_user.id, addr_id) answer_message = f"Адрес *{addr_name}* теперь находится в новой категории *{cat_name}*\n\n" + \ f"Просмотреть содержимое в новой категории: /showcataddr{cat_id}" except: answer_message = f"Ошибка при передаче параметров" answer_message += "\n\nМои адреса: /addresses" + \ "\n\nМои категории: /categories" + \ "\n\nНачальный экран: /start" await message.answer(answer_message, parse_mode='Markdown')
def categoryNew(): if 'username' not in login_session: return redirect('/login') if request.method == 'POST': newName = request.form['newName'] if newName: newCategory = Category(name=newName, user_id=login_session['user_id']) session.add(newCategory) session.commit() flash("New Category %s Successfully Created" % newCategory.name) return redirect(url_for('categoriesAll')) else: return render_template('newCategory.html')
async def del_category(message: types.Message): """Удаляет одну запись об адресе по её идентификатору""" cat_id = int(message.text[7:]) cat = Category(message.from_user.id) if cat.get_cat_addr_stat(cat_id) == 0: cat.delete_category(cat_id) answer_message = (f'Категория была успешно *удалена*\n\n') else: answer_message = ( f'*Нельзя удалять НЕпустую категорию.*\n\n' f'*Удалите сначала адреса из этой категории, а затем удалите категорию.*\n\n' ) answer_message += (f"Мои адреса: /addresses\n\n" f"Мои категории: /categories\n\n" f"Главное меню: /start\n\n") await message.answer(answer_message, parse_mode='Markdown')
async def add_to_category(message: types.Message): """Удаляет одну запись об адресе по её идентификатору""" addr_id = int(message.text[9:]) addr_name = Address().get_name_by_id(message.from_user.id, addr_id) all_categories = Category(message.from_user.id).get_all_categories() if not all_categories: await message.answer( "Список категорий пуст\n\n" "*Для добавления категории введите* /addcat\n\n" "Мои адреса: /addresses\n\n" "Начальный экран: /start", parse_mode='Markdown') return categories_rows = [ f"*{category_one.name}* - /choosecat{addr_id}to{category_one.id}\n" for category_one in all_categories ] answer_message = f"Выберите категорию, в которую необходимо переместить адрес *{addr_name}*:\n\n" + "\n\n" \ .join(categories_rows) + \ "\n\nНачальный экран: /start" + \ "\n\nМои адреса: /addresses" + \ "\n\nМои категории: /categories" await message.answer(answer_message, parse_mode='Markdown')
async def show_user_categories(message: types.Message): """Отправляет список всех категорий адресов пользователя""" all_categories = Category(message.from_user.id).get_all_categories() if not all_categories: await message.answer( "Список категорий пуст.\n\n" "*Для добавления категории введите* /addcat\n\n" "Мои адреса: /addresses\n\n" "Начальный экран: /start", parse_mode='Markdown') return categories_rows = [ f"*{category_one.name}* ({category_one.addr_counter})\n" f"/showcataddr{category_one.id} - просмотреть адреса категории\n" f"{show_delcat_title(category_one.id, category_one.addr_counter)}" for category_one in all_categories ] answer_message = "Список категорий:\n\n" + "\n\n" \ .join(categories_rows) + \ "\n\nДобавить категорию: /addcat" + \ "\n\nМои адреса: /addresses" + \ "\n\nНачальный экран: /start" await message.answer(answer_message, parse_mode='Markdown')
async def add_address(message: types.Message): """Добавляет новый адрес""" global input_mode answer_message = '' try: # Добавляем адрес if input_mode == 0: yandex_map = YandexMap(YANDEX_API_KEY) address = str(message.text).replace('*', '') yandex_answer = yandex_map.get_geocode(address) link_to_yamaps = 'Ничего не найдено, попробуйте повторить попытку позже' is_shown = 0 # Если пришел нормальный ответ от API (два числа через пробел) if yandex_answer != -1: arr = str(yandex_answer).split() if len(arr) == 2: long = arr[0] wide = arr[1] link_to_yamaps = yandex_map.form_href_to_yamap(long, wide) is_shown = 1 Address().add_address(address, link_to_yamaps, message.from_user.id, is_shown) answer_message = (f"Ссылка на Яндекс.Карты: {link_to_yamaps}.\n\n") # Добавляем категорию elif input_mode == 1: input_mode = 0 cat_name = str(message.text).replace('*', '') Category(message.from_user.id).add_category(cat_name) answer_message = ( f"Новая категория успешно добавлена: *{cat_name}*\n\n") except exceptions.NotCorrectMessage as e: await message.answer(str(e)) return answer_message += (f"Мои адреса: /addresses\n\n" f"Мои категории: /categories\n\n" f"Главное меню: /start\n\n") await message.answer(answer_message, parse_mode='Markdown')
def add_category(self, cat_name: str) -> None: if cat_name not in self.categories.keys(): self.categories[cat_name] = Category(cat_name)