Exemple #1
0
def query(raw_msg):
    query = MessageParser.CbkQuery(raw_msg, False)

    query.initOptionals()

    # warning user might not be in the database
    user = usersdb.getUser(query.person)

    log.debug(query.data)

    if query.data.startswith("rmacc"):

        scmd = query.data.split("_")
        ans = scmd[1]

        if ans == "yes":

            categoriesdb.deleteCategoryUser(user, mediavotedb)
            log.info("deleted categories")

            mediavotedb.deleteUserMedia(user)
            log.info("deleted media")

            usersdb.deleteUser(user)
            log.info("deleted user")

            BotWrappers.sendMessage(bot, user, "All data removed")
            bot.answerCallbackQuery(query.id, text='Removed')
        else:
            Handle.send_main_menu(bot, user)
            bot.answerCallbackQuery(query.id, text='Not removed')

        usersdb.update()

    elif query.data.startswith("remcat_"):
        st = query.data.split("_")

        if len(st) == 2:
            categoriesdb.deleteCategory(st[1])
            bot.answerCallbackQuery(query.id, text='Deleted {}'.format(st[1]))
        else:
            bot.answerCallbackQuery(query.id,
                                    text='Delete cat somethings fucky')

    elif query.data.startswith("bancat_"):
        st = query.data.split("_")

        if len(st) == 2:
            categoriesdb.banCategory(st[1])
            bot.answerCallbackQuery(query.id, text='Banned {}'.format(st[1]))
        else:
            bot.answerCallbackQuery(query.id, text='Ban cat somethings fucky')

    elif query.data.startswith("cp_"):
        # change page
        cmd_list = query.data.split("_")

        if len(cmd_list) < 4:
            raise Exception("list too short")

        page_n = int(cmd_list[2])
        prev = True if cmd_list[3] == "prev" else False

        if cmd_list[1] == "cat":
            Handle.answer_categories_page(bot, user, categoriesdb, query, prev,
                                          page_n, mediavotedb)
        elif cmd_list[1] == "shortcat":
            Handle.answer_short_categories(bot, user, categoriesdb, query,
                                           prev, page_n)

        elif cmd_list[1] == "catlist":
            cat_list = categoriesdb.getValues()
            p = Pages.CategoryList(page_n, cat_list, query)
            p.check_answer(bot, user, prev)

        elif cmd_list[1] == "utop":
            ulist = Handle.getSortedUserList(usersdb)
            p = Pages.UserTopPages(page_n, ulist, query)

            p.check_answer(bot, user, prev)

    elif query.data.startswith("vote"):

        # increase the upvote count or downvote count
        cmd_list = query.data.split("_")

        upvote = True if cmd_list[1] == "up" else False

        dmedia = mediavotedb.database[int(cmd_list[2])]

        media = dmedia.getData()

        if user.hash_id in media.voters_id:
            bot.answerCallbackQuery(query.id, text='Already voted')
        else:
            if upvote:
                media.upvotes += 1
            else:
                media.downvotes += 1

            # add to the media the voters
            media.voters_id.append(user.hash_id)

            mediavotedb.setMedia(media)

            # give / subtract a point from the media owner

            media_user = usersdb.hGetUser(media.creator_hash_id)

            coin = str(NumberFormatter.PellaCoins(1))

            if upvote:
                media_user.pella_coins += 1
                BotWrappers.sendMessage(
                    bot, media_user,
                    "Somebody upvoted your media. You received " + coin)
            else:
                media_user.pella_coins -= 1
                BotWrappers.sendMessage(
                    bot, media_user,
                    "Somebody downvoted your media. You lost " + coin)

            usersdb.setUser(media_user)

            # give a point to the voter
            user.pella_coins += 1
            BotWrappers.sendMessage(bot, user,
                                    "You voted a media. You received " + coin)
            usersdb.setUser(user)

            mediavotedb.update()
            usersdb.update()
            bot.answerCallbackQuery(query.id, text='Voted!')

    elif query.data.startswith("hide"):
        # hide the picture
        scmd = query.data.split("_")

        uid = scmd[1]
        if uid not in user.no_show_ids:
            user.no_show_ids.append(uid)
        bot.answerCallbackQuery(query.id, text='Hidden')

    elif query.data.startswith("report"):
        # send report to the admins

        # send the creator a message with the option to ban/delete media

        # send the category creator a message with the option to delete the
        # media
        pass

    elif query.data.startswith("delete"):
        # delete picture if enough money
        pass

    else:
        bot.answerCallbackQuery(query.id, text='what?')