示例#1
0
def admin_remove_user():
    if not is_admin():
        return not_admin_redirect()
    if request.method != 'POST':
        return '400'

    user_id = get_request_field_data('user_id')
    Logger().log("Deleting user with id=" + str(user_id))

    delete_query.delete_user(user_id)

    characters = select_query.get_char_id(user_id)

    for c in characters:
        char_id = c['Character_ID']

        delete_query.delete_character_abilites(char_id)
        delete_query.delete_character_skill(char_id)
        delete_query.delete_character_inventory(char_id)

    delete_query.delete_users_characters(user_id)
    delete_query.delete_login_attempts(user_id)
    delete_query.delete_users_notifications(user_id)

    return '200'
示例#2
0
def get_stat_data(char_id: int, character_field: str, item_field: str):
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(current_value="Err")

    query_result = select_query.select_char_fields(user_id, char_id,
                                                   (character_field, ))

    if query_result is None:
        return jsonify(current_value=0, base=0)

    base_stat = query_result[character_field]

    characters = select_query.select_character_data(char_id)

    item_id_list = data_helper.get_character_items_id(characters)

    stat_additional = 0

    for i in item_id_list:
        item = select_query.select_item_fields(i, (item_field, ))
        if item is not None:
            stat_additional += item[item_field]

    return jsonify(additional=stat_additional, base=base_stat)
示例#3
0
def admin_notifications():
    if not is_admin():
        return not_admin_redirect()
    notifications = select_query.select_notifications()

    return render_template('admin/notifications.html',
                           header_text=get_current_username(),
                           notifications=notifications)
示例#4
0
def admin_users_characters(username):
    if not is_admin():
        return not_admin_redirect()

    user_id = select_query.get_user_id(username)
    characters = select_query.select_char_name_and_id(user_id)

    return render_template('admin/characters.html',
                           characters=characters,
                           header_text=get_current_username())
示例#5
0
def admin_creationKit_add():
    if not is_admin():
        return not_admin_redirect()

    slot_names = select_query.select_slot_names()
    rarity_names = select_query.select_rarity_names()
    effect_names = select_query.select_effect_names()

    return render_template('admin/add_item.html',
                           slots=slot_names,
                           rarities=rarity_names,
                           effects=effect_names,
                           header_text=get_current_username())
示例#6
0
def make_user_admin():
    if not is_admin():
        return not_admin_redirect()

    if request.method != 'POST':
        return '400'

    user_id = get_request_field_data('user_id')

    update_query.change_user_admin_status(user_id, True)
    Logger().log("User with id=" + str(user_id) + " is now admin")

    return '200'
示例#7
0
def admin_creationKit_edit_submit():
    if not is_admin():
        return not_admin_redirect()
    if request.method == 'POST':
        full_dir_name = os.path.join(current_app.config['IMAGE_UPLOAD'],
                                     "items")
        creationKit_helper("UPDATE", full_dir_name)
        item_id = convert_form_field_data_to_int('id')
        update_item_image(
            item_id, full_dir_name,
            select_query.select_item_picture_name(item_id)["Item_Picture"])

        return redirect(url_for('admin.admin_creationKit'))
示例#8
0
def get_race(char_id):
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(current_value="Err")

    query_result = select_query.select_character_race(user_id, char_id)

    if query_result is None:
        return jsonify(current_value="Error getting Race Name")

    return jsonify(current_value=query_result["Race_Name"])
示例#9
0
def get_currency(char_id):
    field_name = "Character_Currency"
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(current_value="Err")

    query_result = select_query.select_char_fields(user_id, char_id,
                                                   (field_name, ))

    if query_result is None:
        return jsonify(current_value=0)

    return jsonify(current_value=query_result[field_name])
示例#10
0
def admin_users():
    if not is_admin():
        return not_admin_redirect()

    users = select_query.select_user_data_except_user(session['user_id'])
    user_data = []

    for u in users:
        user_data.append({
            'User_ID': u['User_ID'],
            'Username': shorten_string(u['Username'], 16),
            'Is_Verified': u['Is_Verified'],
            'Is_Admin': u['Is_Admin']
        })

    return render_template('admin/users.html',
                           users=user_data,
                           header_text=get_current_username())
示例#11
0
def get_items_in_slot(char_id, item_slot):
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(current_value="Err")

    characters = select_query.select_char_fields(user_id, char_id)
    if characters is None:
        return 'NULL'

    item_id_list = data_helper.get_character_items_id(characters)

    select_fields = ("Items.Item_ID", "Items.Item_Weight", "Items.Item_Name",
                     "Rarities.Rarities_Color", "Slots.Slots_ID",
                     "Inventory.Amount")
    where_clause = "WHERE Inventory.Character_ID = ? AND Slots.Slots_Name = ?"
    joins = ("INNER JOIN Items on Inventory.Item_ID=Items.Item_ID",
             "INNER JOIN Rarities on Rarities.Rarities_ID=Items.Rarity_ID",
             "INNER JOIN Slots on Items.Item_Slot=Slots.Slots_ID")
    query_result = select_query.select(select_fields, "Inventory", True,
                                       where_clause, (char_id, item_slot),
                                       joins)

    items = []
    for q in query_result:

        item_fields = {
            'Item_ID': q['Item_ID'],
            'Item_Weight': q['Item_Weight'],
            'Item_Name': escape(q['Item_Name']),
            'Rarities_Color': q['Rarities_Color'],
            'Amount': q['Amount'],
            'Slots_ID': int(q['Slots_ID']),
            'Is_Equiped': True if q['Item_ID'] in item_id_list else False
        }

        items.append(item_fields)

    return jsonify(items)
示例#12
0
def admin_creationKit():
    if not is_admin():
        return not_admin_redirect()

    items = select_query.select_items()
    buckets = {}
    slot_name_query_result = select_query.select_slot_names()

    for sn in slot_name_query_result:
        buckets[sn["Slots_Name"]] = []

    for i in items:
        item_data = {
            'Item_Name': shorten_string(i['Item_Name'], 13),
            'Item_ID': i['Item_ID']
        }
        buckets[i["Slots_Name"]].append(item_data)

    return render_template('admin/items.html',
                           buckets=buckets,
                           header_text=get_current_username())
示例#13
0
def admin_creationKit_add_submit():
    if not is_admin():
        return not_admin_redirect()
    if request.method == 'POST':
        _new_name = get_request_field_data("name")
        name_check = select_query.get_item_id_from_name(_new_name)

        if name_check is not None:
            # Name already exist
            Logger().error("Item name," + _new_name + " , is already taken.")
            return '[TODO: Change this later]\n\nItem name already exist... Please go back and try again.'

        full_dir_name = os.path.join(current_app.config['IMAGE_UPLOAD'],
                                     "items")
        creationKit_helper("INSERT", full_dir_name)
        item_id = select_query.get_item_id_from_name(_new_name)
        update_item_image(
            item_id, full_dir_name,
            select_query.select_item_picture_name(item_id)["Item_Picture"])

        return redirect(url_for('admin.admin_creationKit'))
示例#14
0
def admin_creationKit_remove(item_id):
    if not is_admin():
        return not_admin_redirect()
    delete_query.delete_item(item_id)
    Logger().log("Deleting item with id=" + str(item_id))
    # go though user's equiped items and unequiped deleted item
    characters = select_query.select(("Character_ID", ), "Character", True)
    for c in characters:
        char_id = c["Character_ID"]
        update_dict = {}
        character_equiped_data = select_query.select(FIELD_NAMES, "Character",
                                                     False,
                                                     "WHERE Character_ID=?",
                                                     (char_id, ))
        for ced in FIELD_NAMES:
            if character_equiped_data[ced] == item_id:
                # it's gotta go
                update_dict[ced] = -1
        update_query.update("Character", update_dict, "WHERE Character_ID=?",
                            (char_id, ))

    return redirect(url_for('admin.admin_creationKit'))
示例#15
0
def getItemAmount(char_id, item_id):
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(current_value="Err")

    characters = select_query.select_char_fields(user_id, char_id)

    if characters is None:
        return redirect(url_for('character.character_select'))

    select_fields = ("Inventory.Item_ID", "Amount", "Items.Item_Slot",
                     "Slots.Slots_Name")
    joins = ("LEFT JOIN Items ON Inventory.Item_ID = Items.Item_ID",
             "LEFT JOIN Slots ON Items.Item_Slot = Slots.Slots_ID")
    where_clause = "WHERE Character_ID = ? AND Inventory.Item_ID = ?"
    query_result = select_query.select(select_fields, "Inventory", False,
                                       where_clause, (char_id, item_id), joins)

    return jsonify(current_value=query_result['Amount'],
                   item_id=query_result['Item_ID'],
                   slot_name=query_result['Slots_Name'])
示例#16
0
    def home():
        from modules.data.database.query_modules import select_query
        from modules.account.authentication_checks import is_verified, not_verified_redirect, has_agreed_tos, not_agreed_redirect

        if not is_verified():
            return not_verified_redirect()
        if not has_agreed_tos():
            return not_agreed_redirect()

        header_text = get_current_username()

        site_notifications = select_query.select_site_notifications()
        if site_notifications is None or len(site_notifications) < 1:
            site_notifications = None

        if is_admin():
            return render_template('auth/admin.html',
                                   header_text=header_text,
                                   unread=False,
                                   site_notification=site_notifications)

        return render_template('auth/user.html',
                               header_text=header_text,
                               site_notification=site_notifications)
示例#17
0
def admin_verify_user(user_id):
    if not is_admin():
        return not_admin_redirect()
    update_query.update_isVerified(user_id, True)
    return '200'
示例#18
0
def get_current_equiped_items(char_id, item_slot):
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(current_value="Err")

    characters = select_query.select_char_fields(user_id, char_id)

    if characters is None:
        return redirect(url_for('character.character_select'))

    slot_name = select_query.select_slot_names(item_slot)["Slots_Name"]

    multiple = {'Weapon': 4, 'Ring': 2, 'Item': 2, 'Trinket': 2}

    r = 1
    slots = []

    if slot_name in multiple.keys():
        r = int(multiple[slot_name])
        for i in range(r):
            field_name = "Character_" + slot_name + str(i + 1)
            slots.append(field_name)
    else:
        slots.append("Character_" + slot_name)

    item_ids = select_query.select_char_fields(user_id, char_id, tuple(slots))

    field_names = ['Item_ID', 'Item_Name', 'Item_Picture', 'Rarities_Color']

    item_list = []

    item_defaults = {
        'Ring': {
            'item_name': 'Ring',
            'picture': 'Ring.png'
        },
        'Item': {
            'item_name': 'Item',
            'picture': 'Item.png'
        },
        'Trinket': {
            'item_name': 'Trinket',
            'picture': 'Trinket.png'
        }
    }

    for i in range(r):
        temp_dict = {}

        temp_dict['Item_ID'] = -1

        if slot_name == 'Weapon':
            if i % 2 == 1:
                temp_dict['Item_Name'] = 'Off Hand '
                temp_dict['Item_Picture'] = 'Off_Hand.png'
            else:
                temp_dict['Item_Name'] = 'Main Hand '
                temp_dict['Item_Picture'] = 'Main_Hand.png'
            temp_dict['Item_Name'] += str(math.ceil((i + 1) / 2))
        else:
            temp_dict['Item_Name'] = item_defaults[slot_name]['item_name']
            temp_dict['Item_Picture'] = item_defaults[slot_name]['picture']

        temp_dict['Rarities_Color'] = '#606060'

        item_list.append(temp_dict)

    count = 0
    for i in item_ids:
        join_str = "INNER JOIN Rarities ON Rarities.Rarities_ID=Items.Rarity_ID"
        item_data_result = select_query.select(tuple(field_names), "Items",
                                               False, "WHERE Item_ID=?", (i, ),
                                               (join_str, ))

        if item_data_result is None:
            count += 1
            continue

        temp_data = {}
        for name in field_names:
            temp_data[name] = item_data_result[name]

        item_list[count] = temp_data
        count += 1

    slot_name = select_query.select_slot_names(item_slot)['Slots_Name']

    output = {'slot_name': slot_name, 'items': item_list, 'num_of_slots': r}

    return jsonify(output)
示例#19
0
def admin_remove_notification(notification_id):
    if not is_admin():
        return not_admin_redirect()
    delete_query.delete_notification(notification_id)
    return '200'
示例#20
0
def _get_item_details(char_id, equipment_slot="", item_id=-1):
    user_id = session["user_id"]
    if not check_if_user_has_character(user_id, char_id):
        if is_admin():
            user_id = get_user_id_from_char_id(char_id)
            if user_id < 0:
                return jsonify(None)

    # Get the character's item piece
    try:
        items = select_query.select_character_data(char_id, user_id)
    except:
        Logger().error("ERROR: Items were not found")
        return ""

    if equipment_slot is not None and equipment_slot != "":
        try:
            item_id = items['Character_' + equipment_slot]
        except:
            Logger().error("ERROR: Items were not found")
            return ""

    # Ensure a proper item_id is given
    if item_id < 1:
        # TODO: needs better error handling
        #raise Exception("Tried to get item details of item with id " + str(item_id))
        return jsonify(None)

    item_query_result = select_query.select_items(item_id)

    # Check to see if ID has been assigned
    if item_query_result is None:
        item_query_result = data_helper.init_item_data()

    #TODO: this effect query also shows up in admin.py... Could extract this to a function
    if item_query_result is not None:
        # Check if item has an effect on it
        if item_query_result['Item_Effect1'] is not None and item_query_result[
                'Item_Effect1'] > 0:
            # Check to see if ID has been assigned
            effect1QueryResult = select_query.select_effect_data(
                item_query_result['Item_Effect1'])
        else:
            effect1QueryResult = {
                'Effect_Name': 'Effect1',
                'Effect_Description': 'None'
            }

        # Check if item has an effect on it
        if item_query_result['Item_Effect2'] is not None and item_query_result[
                'Item_Effect2'] > 0:
            # Check to see if ID has been assigned
            effect2QueryResult = select_query.select_effect_data(
                item_query_result['Item_Effect2'])
        else:
            effect2QueryResult = {
                'Effect_Name': 'Effect2',
                'Effect_Description': 'None'
            }

    image = url_for('static', filename='images/no_image.png')

    if item_query_result['Item_Picture'] is not None and item_query_result[
            'Item_Picture'] != '' and item_query_result[
                'Item_Picture'] != 'no_image.png':
        image = '/imageserver/item/' + item_query_result['Item_Picture']

    return data_helper.item_data_to_json(item_query_result, image,
                                         effect1QueryResult,
                                         effect2QueryResult)
示例#21
0
def admin_markRead_notification(notification_id):
    if not is_admin():
        return not_admin_redirect()
    update_query.update_notification_read_status(notification_id, True)
    return '200'
示例#22
0
def admin_creationKit_edit(item_id):
    if not is_admin():
        return not_admin_redirect()

    slot_names = select_query.select_slot_names()
    rarity_names = select_query.select_rarity_names()
    effect_names = select_query.select_effect_names()

    item_query_result = select_query.select_items(item_id)

    if item_query_result is None:
        Logger().error("Failed to get item data for item_id: " + str(item_id))
        item_query_result = {
            'Item_Description': 'null',
            'Item_Name': 'null',
            'Item_Picture': 'no_image.png',
            'Rarities_Name': 'null',
            'Rarities_Color': 'white',
            #'Item_Slot' : 'null',
            'Item_Weight': 'null',
            'Item_Str_Bonus': 0,
            'Item_Dex_Bonus': 0,
            'Item_Con_Bonus': 0,
            'Item_Int_Bonus': 0,
            'Item_Wis_Bonus': 0,
            'Item_Cha_Bonus': 0,
            'Item_Attack_Bonus': 0,
            #'Item_Initiative_Bonus' : 0,
            'Item_Health_Bonus': 0,
            'Item_Damage_Num_Of_Dices': 0,
            'Item_Damage_Num_Of_Dice_Sides': 0,
            'Item_AC_Bonus': 0
        }

    item_effect1 = 'None'
    item_effect2 = 'None'
    item_slots_name = ''

    if item_query_result is not None:
        # Check if item has an effect on it
        if item_query_result['Item_Effect1'] is not None and item_query_result[
                'Item_Effect1'] > 0:
            item_effect1 = select_query.select_effect_names(
                item_query_result['Item_Effect1'])['Effect_Name']

        if item_query_result['Item_Effect2'] is not None and item_query_result[
                'Item_Effect2'] > 0:
            item_effect2 = select_query.select_effect_names(
                item_query_result['Item_Effect2'])['Effect_Name']

        if item_query_result['Item_Slot'] is not None and item_query_result[
                'Item_Slot'] > 0:
            item_slots_name = select_query.select_slot_names(
                item_query_result['Item_Slot'])['Slots_Name']

    return render_template('admin/edit_item.html',
                           items=item_query_result,
                           slots=slot_names,
                           rarities=rarity_names,
                           effects=effect_names,
                           effect1_name=item_effect1,
                           effect2_name=item_effect2,
                           item_id=item_id,
                           item_slots_name=item_slots_name,
                           header_text=get_current_username())