Esempio n. 1
0
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')
Esempio n. 2
0
    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)
Esempio n. 3
0
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')
Esempio n. 4
0
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')
Esempio n. 5
0
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')
Esempio n. 6
0
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')
Esempio n. 7
0
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')
Esempio n. 8
0
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')
Esempio n. 9
0
 def add_category(self, cat_name: str) -> None:
     if cat_name not in self.categories.keys():
         self.categories[cat_name] = Category(cat_name)