Esempio n. 1
0
def route_forum_thread_soft(id):
	thread = ForumThread.query.filter(ForumThread.id == id).first()
	if not thread:
		return redirect(url_for('route_forum'))

	posts = db.session().query(ForumPost.author_id, ForumPost.deleted).filter(ForumPost.thread_id == thread.id).all()

	if thread.deleted:
		character = Player.query.filter(Player.id == thread.author_id).first()
		character.postcount = character.postcount + 1

		for post in posts:
			if post.deleted == 0:
				character = Player.query.filter(Player.id == post.author_id).first()
				character.postcount = character.postcount + 1

		thread.deleted = 0
		flash('The thread has been restored.', 'success')
	else:
		character = Player.query.filter(Player.id == thread.author_id).first()
		character.postcount = character.postcount - 1

		for post in posts:
			if post.deleted == 0:
				character = Player.query.filter(Player.id == post.author_id).first()
				character.postcount = character.postcount - 1

		thread.deleted = 1
		flash('The thread has been soft-deleted.', 'success')

	db.session().commit()
	return redirect(url_for('route_forum_thread', thread=thread.id, page=1))
Esempio n. 2
0
def route_community_war(id):
    war = db.session().query(
        GuildWar.id, GuildWar.guild1,
        GuildWar.guild2).filter(GuildWar.id == id).first()
    if not war:
        return redirect(url_for('route_community_wars'))

    g1 = db.session().query(Guild.id,
                            Guild.name).filter(Guild.id == war.guild1).first()
    g2 = db.session().query(Guild.id,
                            Guild.name).filter(Guild.id == war.guild2).first()

    if not g1 or not g2:
        return redirect(url_for('route_community_wars'))

    f1 = db.session().query(GuildWarKill).filter(GuildWarKill.warid == id)
    f1 = f1.filter(GuildWarKill.killerguild == g1.id).all()

    f2 = db.session().query(GuildWarKill).filter(GuildWarKill.warid == id)
    f2 = f2.filter(GuildWarKill.killerguild == g2.id).all()

    return render_template('community/war.htm',
                           g1=g1,
                           g2=g2,
                           f1=f1,
                           f2=f2,
                           c1=len(f1),
                           c2=len(f2))
Esempio n. 3
0
def route_community_guild_rank_post(id):
    if not is_guild_leader(id):
        return redirect(url_for('route_community_guild', id=id))

    pid = request.form.get('id', 0, type=int)
    level = request.form.get('rank', 0, type=int)

    if level not in [1, 2]:
        return redirect(url_for('route_community_guild', id=id))

    if not db.session().query(Player.id).filter(Player.id == pid).first():
        flash('The player does not exist.', 'error')
        return redirect(url_for('route_community_guild', id=id))

    rank = db.session().query(GuildRank.id).filter(GuildRank.guild_id == id)
    rank = rank.filter(GuildRank.level == level).first()
    if not rank:
        flash('The rank does not exist', 'error')
        return redirect(url_for('route_community_guild', id=id))

    membership = GuildMembership.query.filter(
        GuildMembership.player_id == pid).first()
    if not membership:
        return redirect(url_for('route_community_guild', id=id))

    membership.rank_id = rank.id
    db.session().commit()

    flash('The rank has been updated.', 'success')

    return redirect(url_for('route_community_guild', id=id))
Esempio n. 4
0
def route_account_signature_post(id):
    account = current_user()
    player = Player.query.filter(Player.id == id).first()
    if player and account.id == player.account_id:
        signature = request.form.get('signature', '', type=str)

        # Strip the signature
        signature = signature.strip()

        # Strip consecutive spaces
        signature = ' '.join(signature.split())

        # Make sure that len(signature) <= 255
        signature = signature[:254]

        player.signature = signature
        db.session().commit()

        flash('The character signature has been updated.', 'success')
    else:
        flash(
            'You cannot edit the signature of a character that does not belong to you.',
            'error')

    return redirect(url_for('route_account_manage'))
Esempio n. 5
0
def route_admin_forum_board_add():
    name = request.form.get('name', '')
    description = request.form.get('description', '')
    category = request.form.get('category', 0)
    locked = request.form.get('locked', None)
    error = False

    if len(name) == 0:
        flash('Please fill the name field.', 'error')
        error = True

    if len(description) == 0:
        flash('Please fill the description field.', 'error')
        error = True

    if not error:
        board = ForumBoard()
        board.name = name
        board.description = description
        board.category_id = category
        board.locked = 0 if not locked else 1

        db.session().add(board)
        db.session().commit()

        flash('The board has beed added.', 'success')

    return redirect(url_for('route_admin_forum_boards'))
Esempio n. 6
0
def route_admin_shop_item_add():
	name = request.form.get('name', '')
	description = request.form.get('description', '')
	category = request.form.get('category', 0)
	type = request.form.get('type', 0)
	key = request.form.get('key', 0)
	value = request.form.get('value', 0)
	price = request.form.get('price', 0)
	image = request.form.get('image', '')
	enabled = request.form.get('enabled', None)
	error = False

	# TODO: Add verifications

	if not error:
		item = ShopItem()
		item.name = name
		item.description = description
		item.category_id = category
		item.type = type
		item.key = key
		item.value = value
		item.price = price
		item.custom_image = image
		item.enabled = 1 if enabled else 0

		db.session().add(item)
		db.session().commit()

		flash('The item has been added.', 'success')

	return redirect(url_for('route_admin_shop_items'))
Esempio n. 7
0
def route_admin_shop_item_add():
    name = request.form.get('name', '')
    description = request.form.get('description', '')
    category = request.form.get('category', 0)
    type = request.form.get('type', 0)
    key = request.form.get('key', 0)
    value = request.form.get('value', 0)
    price = request.form.get('price', 0)
    image = request.form.get('image', '')
    enabled = request.form.get('enabled', None)
    error = False

    # TODO: Add verifications

    if not error:
        item = ShopItem()
        item.name = name
        item.description = description
        item.category_id = category
        item.type = type
        item.key = key
        item.value = value
        item.price = price
        item.custom_image = image
        item.enabled = 1 if enabled else 0

        db.session().add(item)
        db.session().commit()

        flash('The item has been added.', 'success')

    return redirect(url_for('route_admin_shop_items'))
Esempio n. 8
0
def is_guild_vice(id):
    user = current_user()
    if not user:
        return False

    players = []
    for player in user.players:
        players.append(player.id)

    membership = db.session().query(GuildMembership.rank_id)
    membership = membership.filter(GuildMembership.guild_id == id)
    membership = membership.filter(
        GuildMembership.player_id.in_(players)).all()

    ranks = []
    for m in membership:
        ranks.append(m.rank_id)

    ranks = db.session().query(GuildRank.level).filter(
        GuildRank.id.in_(ranks)).all()
    for rank in ranks:
        if rank.level > 1:
            return True

    return False
Esempio n. 9
0
def route_community_guild_rank_post(id):
	if not is_guild_leader(id):
		return redirect(url_for('route_community_guild', id=id))

	pid = request.form.get('id', 0, type=int)
	level = request.form.get('rank', 0, type=int)

	if level not in [1, 2]:
		return redirect(url_for('route_community_guild', id=id))

	if not db.session().query(Player.id).filter(Player.id == pid).first():
		flash('The player does not exist.', 'error')
		return redirect(url_for('route_community_guild', id=id))

	rank = db.session().query(GuildRank.id).filter(GuildRank.guild_id == id)
	rank = rank.filter(GuildRank.level == level).first()
	if not rank:
		flash('The rank does not exist', 'error')
		return redirect(url_for('route_community_guild', id=id))

	membership = GuildMembership.query.filter(GuildMembership.player_id == pid).first()
	if not membership:
		return redirect(url_for('route_community_guild', id=id))

	membership.rank_id = rank.id
	db.session().commit()

	flash('The rank has been updated.', 'success')

	return redirect(url_for('route_community_guild', id=id))
Esempio n. 10
0
def route_forum_post_soft(id):
    post = ForumPost.query.filter(ForumPost.id == id).first()
    if not post:
        return redirect(url_for('route_forum'))

    thread = ForumThread.query.filter(ForumThread.id == post.thread_id).first()
    if post.deleted:
        if thread.deleted == 0:
            character = Player.query.filter(
                Player.id == post.author_id).first()
            character.postcount = character.postcount + 1

        post.deleted = 0

        flash('The post has been restored.', 'success')
    else:
        if thread.deleted == 0:
            character = Player.query.filter(
                Player.id == post.author_id).first()
            character.postcount = character.postcount - 1

        post.deleted = 1

        flash('The post has been soft-deleted.', 'success')

    db.session().commit()

    return redirect(
        url_for('route_forum_thread', thread=post.thread_id, page=1))
Esempio n. 11
0
def route_community_guild_leave(gid, pid):
	user = current_user()
	found = False

	for player in user.players:
		if player.id == pid:
			found = True
			break

	if not found:
		return redirect(url_for('route_community_guild', id=gid))

	membership = GuildMembership.query.filter(GuildMembership.guild_id == gid)
	membership = membership.filter(GuildMembership.player_id == pid).first()

	if not membership:
		return redirect(url_for('route_community_guild', id=gid))

	rank = db.session().query(GuildRank.level).filter(GuildRank.id == membership.rank_id).first()
	if not rank:
		return redirect(url_for('route_community_guild', id=gid))

	if rank.level < 3:
		db.session().delete(membership)
		db.session().commit()

		flash('You left the guild.', 'success')
	else:
		flash('Guild leaders can not leave the guild, use the disband feature instead.', 'error')

	return redirect(url_for('route_community_guild', id=gid))
Esempio n. 12
0
def route_community_guild_ranks_post(id):
	if not is_guild_leader(id):
		return redirect(url_for('route_community_guild', id=id))

	for level in range(1, 4):
		value = request.form.get('rank{}'.format(level), '', type=str)
		error = False

		if not GUILD_NAME_EXPR.match(value):
			flash('{} rank name may only contain latin characters (A-Z, a-z and spaces).'.format(filter_rank(level)), 'error')
			error = True

		if len(value) < 4 or len(value) > 16:
			flash('{} rank name must be between 4 and 16 characters long.'.format(filter_rank(level)), 'error')
			error = True

		if not error:
			rank = GuildRank.query.filter(GuildRank.guild_id == id).filter(GuildRank.level == level).first()
			rank.name = value

			db.session().commit()

			flash('{} rank name has been updated.'.format(filter_rank(level)), 'success')

	return redirect(url_for('route_community_guild_ranks', id=id))
Esempio n. 13
0
def route_community_guild_invite_post(id):
	if not is_guild_vice(id):
		return redirect(url_for('route_community_guild', id=id))

	name = request.form.get('name', '', type=str)
	error = False

	player = Player.query.filter(Player.name == name).first()
	if not player:
		flash('The player you are trying to invite does not exist.', 'error')
		return redirect(url_for('route_community_guild', id=id))

	membership = GuildMembership.query.filter(GuildMembership.guild_id == id).filter(GuildMembership.player_id == player.id).first()
	if membership:
		flash('The player is already a member of your guild.', 'error')
		error = True

	invite = GuildInvite.query.filter(GuildInvite.guild_id == id).filter(GuildInvite.player_id == player.id).first()
	if invite:
		flash('The player is already invited to your guild.', 'error')
		error = True

	if not error:
		invite = GuildInvite()
		invite.player_id = player.id
		invite.guild_id = id

		db.session().add(invite)
		db.session().commit()

		flash('The player has been invited.', 'success')

	return redirect(url_for('route_community_guild', id=id))
Esempio n. 14
0
def route_admin_logs_login_search_post():
	name = request.form.get('name', '', type=str)
	ip = request.form.get('ipAddress', '', type=str)
	history = db.session().query(
		LoginHistory.id, LoginHistory.account, LoginHistory.ip, LoginHistory.platform, 
		LoginHistory.browser, LoginHistory.status, LoginHistory.time
	).order_by(LoginHistory.time.desc())

	if name != '':
		accountName = db.session().query(Account.name).filter(Account.name == name).first()
		if not accountName:
			flash('The account name you are trying to search for does not exist.', 'error')
			return redirect(url_for('route_admin_logs_login'))

		history = history.filter(LoginHistory.account == accountName[0]).all()

		if not history:
			flash('The is no login history for this account name.', 'error')
			return redirect(url_for('route_admin_logs_login'))
	elif ip != '':
		history = history.filter(LoginHistory.ip == ip).all()

		if not history:
			flash('The submitted IP address did not match any records.', 'error')
			return redirect(url_for('route_admin_logs_login'))
	else:
		flash('You must fill out one of the search forms.', 'error')

	return render_template(
		'admin/logs/login.htm',
		history = history
	)
Esempio n. 15
0
def route_admin_forum_board_add():
	name = request.form.get('name', '')
	description = request.form.get('description', '')
	category = request.form.get('category', 0)
	locked = request.form.get('locked', None)
	error = False

	if len(name) == 0:
		flash('Please fill the name field.', 'error')
		error = True

	if len(description) == 0:
		flash('Please fill the description field.', 'error')
		error = True

	if not error:
		board = ForumBoard()
		board.name = name
		board.description = description
		board.category_id = category
		board.locked = 0 if not locked else 1

		db.session().add(board)
		db.session().commit()

		flash('The board has beed added.', 'success')

	return redirect(url_for('route_admin_forum_boards'))
Esempio n. 16
0
def route_community_guild_ranks_post(id):
    if not is_guild_leader(id):
        return redirect(url_for('route_community_guild', id=id))

    for level in range(1, 4):
        value = request.form.get('rank{}'.format(level), '', type=str)
        error = False

        if not GUILD_NAME_EXPR.match(value):
            flash(
                '{} rank name may only contain latin characters (A-Z, a-z and spaces).'
                .format(filter_rank(level)), 'error')
            error = True

        if len(value) < 4 or len(value) > 16:
            flash(
                '{} rank name must be between 4 and 16 characters long.'.
                format(filter_rank(level)), 'error')
            error = True

        if not error:
            rank = GuildRank.query.filter(GuildRank.guild_id == id).filter(
                GuildRank.level == level).first()
            rank.name = value

            db.session().commit()

            flash('{} rank name has been updated.'.format(filter_rank(level)),
                  'success')

    return redirect(url_for('route_community_guild_ranks', id=id))
Esempio n. 17
0
File: logs.py Progetto: diath/pyfsw
def route_admin_logs_login_search_post():
    name = request.form.get('name', '', type=str)
    ip = request.form.get('ipAddress', '', type=str)
    history = db.session().query(
        LoginHistory.id, LoginHistory.account, LoginHistory.ip,
        LoginHistory.platform, LoginHistory.browser, LoginHistory.status,
        LoginHistory.time).order_by(LoginHistory.time.desc())

    if name != '':
        accountName = db.session().query(
            Account.name).filter(Account.name == name).first()
        if not accountName:
            flash(
                'The account name you are trying to search for does not exist.',
                'error')
            return redirect(url_for('route_admin_logs_login'))

        history = history.filter(LoginHistory.account == accountName[0]).all()

        if not history:
            flash('The is no login history for this account name.', 'error')
            return redirect(url_for('route_admin_logs_login'))
    elif ip != '':
        history = history.filter(LoginHistory.ip == ip).all()

        if not history:
            flash('The submitted IP address did not match any records.',
                  'error')
            return redirect(url_for('route_admin_logs_login'))
    else:
        flash('You must fill out one of the search forms.', 'error')

    return render_template('admin/logs/login.htm', history=history)
Esempio n. 18
0
def route_community_guild_leave(gid, pid):
    user = current_user()
    found = False

    for player in user.players:
        if player.id == pid:
            found = True
            break

    if not found:
        return redirect(url_for('route_community_guild', id=gid))

    membership = GuildMembership.query.filter(GuildMembership.guild_id == gid)
    membership = membership.filter(GuildMembership.player_id == pid).first()

    if not membership:
        return redirect(url_for('route_community_guild', id=gid))

    rank = db.session().query(
        GuildRank.level).filter(GuildRank.id == membership.rank_id).first()
    if not rank:
        return redirect(url_for('route_community_guild', id=gid))

    if rank.level < 3:
        db.session().delete(membership)
        db.session().commit()

        flash('You left the guild.', 'success')
    else:
        flash(
            'Guild leaders can not leave the guild, use the disband feature instead.',
            'error')

    return redirect(url_for('route_community_guild', id=gid))
Esempio n. 19
0
def route_forum_post_soft(id):
	post = ForumPost.query.filter(ForumPost.id == id).first()
	if not post:
		return redirect(url_for('route_forum'))

	thread = ForumThread.query.filter(ForumThread.id == post.thread_id).first()
	if post.deleted:
		if thread.deleted == 0:
			character = Player.query.filter(Player.id == post.author_id).first()
			character.postcount = character.postcount + 1

		post.deleted = 0

		flash('The post has been restored.', 'success')
	else:
		if thread.deleted == 0:
			character = Player.query.filter(Player.id == post.author_id).first()
			character.postcount = character.postcount - 1

		post.deleted = 1

		flash('The post has been soft-deleted.', 'success')

	db.session().commit()

	return redirect(url_for('route_forum_thread', thread=post.thread_id, page=1))
Esempio n. 20
0
def route_account_create_post():
    name = request.form.get('name', '', type=str)
    pswd = request.form.get('pswd', '', type=str)
    mail = request.form.get('mail', '', type=str)
    pswdRepeat = request.form.get('pswdRepeat', '', type=str)
    captcha = request.form.get('g-recaptcha-response')
    error = False

    if len(name) < 4 or len(name) > 32:
        flash('The account name length must be between 4 and 32 characters.',
              'error')
        error = True

    if len(pswd) < 5:
        flash('The password must be at least 5 characters long.', 'error')
        error = True

    if pswd != pswdRepeat:
        flash('The passwords do not match.', 'error')
        error = True

    if len(mail) < 6:
        flash('The specified e-mail address is not valid.', 'error')
        error = True

    account = db.session().query(
        Account.id).filter(Account.name == name).first()
    if account:
        flash('The account name is already in use.', 'error')
        error = True

    if check_captcha(captcha) is False:
        flash('You have failed the human verification', 'error')
        error = True

    if error:
        return redirect(url_for('route_account_create', name=name, mail=mail))

    hash = sha1()
    hash.update(pswd.encode('utf-8'))
    pswd = hash.hexdigest()

    account = Account()
    account.name = name
    account.password = pswd
    account.email = mail
    account.creation = int(time())
    account.key = ''

    db.session().add(account)
    db.session().commit()

    session['account'] = account.id
    session['access'] = account.type
    session['web_access'] = account.web_access

    flash('The account has been created. You can create a character now.',
          'success')
    return redirect(url_for('route_account_manage'))
Esempio n. 21
0
def route_account_character_post():
	name = request.form.get('name', '', type=str)
	gender = request.form.get('gender', 0, type=int)
	vocation = request.form.get('vocation', 0, type=int)
	town = request.form.get('town', 1, type=int)
	error = False

	if len(name) < 4:
		flash('The name must be at least 4 characters long.', 'error')
		error = True

	if not CHAR_NAME_EXPR.match(name):
		flash('The name may only contain latin characters (A-Z, a-z and spaces).', 'error')
		error = True

	if len(name.split(' ')) > 3:
		flash('The name may only consist of 3 words.', 'error')
		error = True

	if gender not in NEW_CHARACTER.get('genders'):
		flash('The selected gender is not valid.', 'error')
		error = True

	if vocation not in NEW_CHARACTER.get('vocations'):
		flash('The selected vocation is not valid.', 'error')
		error = True

	if town not in NEW_CHARACTER.get('towns'):
		flash('The selected town is not valid.', 'error')
		error = True

	name = string.capwords(name)
	player = db.session().query(Player.id).filter(Player.name == name).first()
	if player:
		flash('The character name is already in use.', 'error')
		error = True

	if error:
		return redirect(url_for('route_account_character'))

	player = Player()
	player.name = name
	player.sex = gender
	player.vocation = vocation
	player.town_id = town
	player.account_id = current_user().id

	player.looktype = 136 if gender == 0 else 128
	player.lookhead = NEW_CHARACTER.get('outfit')[0]
	player.lookbody = NEW_CHARACTER.get('outfit')[1]
	player.looklegs = NEW_CHARACTER.get('outfit')[2]
	player.lookfeet = NEW_CHARACTER.get('outfit')[3]

	db.session().add(player)
	db.session().commit()

	flash('The character has been created.', 'success')

	return redirect(url_for('route_account_manage'))
Esempio n. 22
0
def route_news_archive():
	news = db.session().query(News).order_by(News.id.desc()).all()
	for entry in news:
		player = db.session().query(Player.name).filter(Player.id == entry.author_id).first()
		if player:
			entry.author = player.name

	return render_template('news/archive.htm', news=news)
Esempio n. 23
0
def route_community_highscores(type, page):
    current = HS_TYPES.get(type)
    if not current:
        return redirect(url_for("route_community_highscores", type="level", page=1))

    total = db.session().query(Player.id).filter(Player.group_id == 1).count()
    perpage = 50

    highscores = db.session().query(
        Player.name,
        Player.vocation,
        Player.level,
        Player.experience,
        Player.maglevel,
        Player.manaspent,
        Player.skill_fist,
        Player.skill_club,
        Player.skill_sword,
        Player.skill_axe,
        Player.skill_dist,
        Player.skill_shielding,
        Player.skill_fishing,
        Player.skill_fist_tries,
        Player.skill_club_tries,
        Player.skill_sword_tries,
        Player.skill_axe_tries,
        Player.skill_dist_tries,
        Player.skill_shielding_tries,
        Player.skill_fishing_tries,
        Player.looktype,
        Player.lookhead,
        Player.lookbody,
        Player.looklegs,
        Player.lookfeet,
        Player.lookaddons,
    )
    highscores = highscores.filter(Player.group_id == 1).order_by(current[1])
    highscores = highscores.offset((page - 1) * perpage)
    highscores = highscores.limit(perpage)
    highscores = highscores.all()

    for player in highscores:
        player.value = getattr(player, current[2])
        player.subvalue = getattr(player, current[3])

    pagination = Pagination(highscores, page, perpage, total, highscores)

    return render_template(
        "community/highscores.htm",
        type=type,
        name=current[0],
        highscores=highscores,
        suffix=current[4],
        pagination=pagination,
        perpage=perpage,
        page=page,
    )
Esempio n. 24
0
def route_admin_forum_board_delete(id):
	board = ForumBoard.query.filter(ForumBoard.id == id).first()

	db.session().delete(board)
	db.session().commit()

	flash('The board has been deleted.', 'success')

	return redirect(url_for('route_admin_forum_boards'))
Esempio n. 25
0
def route_admin_logs_zaypay_delete(id):
	history = ZayPayHistory.query.filter(ZayPayHistory.id == id).first()

	db.session().delete(history)
	db.session().commit()

	flash('The entry has been deleted.', 'success')

	return redirect(url_for('route_admin_logs_zaypay'))
Esempio n. 26
0
def route_admin_library_delete(id):
    page = Library.query.filter(Library.id == id).first()

    db.session().delete(page)
    db.session().commit()

    flash('The library page has been deleted.', 'success')

    return redirect(url_for('route_admin_library'))
Esempio n. 27
0
File: news.py Progetto: diath/pyfsw
def route_news_archive():
    news = db.session().query(News).order_by(News.id.desc()).all()
    for entry in news:
        player = db.session().query(
            Player.name).filter(Player.id == entry.author_id).first()
        if player:
            entry.author = player.name

    return render_template('news/archive.htm', news=news)
Esempio n. 28
0
def route_admin_forum_category_edit_post(id):
    category = ForumCategory.query.filter(ForumCategory.id == id).first()

    category.name = request.form.get('name', '')

    db.session().commit()
    flash('The category name has been changed.', 'success')

    return redirect(url_for('route_admin_forum_categories'))
Esempio n. 29
0
def route_admin_forum_board_delete(id):
    board = ForumBoard.query.filter(ForumBoard.id == id).first()

    db.session().delete(board)
    db.session().commit()

    flash('The board has been deleted.', 'success')

    return redirect(url_for('route_admin_forum_boards'))
Esempio n. 30
0
File: logs.py Progetto: diath/pyfsw
def route_admin_logs_zaypay_delete(id):
    history = ZayPayHistory.query.filter(ZayPayHistory.id == id).first()

    db.session().delete(history)
    db.session().commit()

    flash('The entry has been deleted.', 'success')

    return redirect(url_for('route_admin_logs_zaypay'))
Esempio n. 31
0
def route_admin_forum_category_edit_post(id):
	category = ForumCategory.query.filter(ForumCategory.id == id).first()

	category.name = request.form.get('name', '')

	db.session().commit()
	flash('The category name has been changed.', 'success')

	return redirect(url_for('route_admin_forum_categories'))
Esempio n. 32
0
def route_admin_shop_item_delete(id):
    item = ShopItem.query.filter(ShopItem.id == id).first()

    db.session().delete(item)
    db.session().commit()

    flash('The item has been deleted.', 'success')

    return redirect(url_for('route_admin_shop_items'))
Esempio n. 33
0
def route_admin_shop_item_delete(id):
	item = ShopItem.query.filter(ShopItem.id == id).first()

	db.session().delete(item)
	db.session().commit()

	flash('The item has been deleted.', 'success')

	return redirect(url_for('route_admin_shop_items'))
Esempio n. 34
0
def route_admin_shop_category_delete(id):
    category = ShopCategory.query.filter(ShopCategory.id == id).first()

    db.session().delete(category)
    db.session().commit()

    flash('The category has been deleted.', 'success')

    return redirect(url_for('route_admin_shop_categories'))
Esempio n. 35
0
def route_admin_library_delete(id):
	page = Library.query.filter(Library.id == id).first()

	db.session().delete(page)
	db.session().commit()

	flash('The library page has been deleted.', 'success')

	return redirect(url_for('route_admin_library'))
Esempio n. 36
0
def route_admin_shop_category_delete(id):
	category = ShopCategory.query.filter(ShopCategory.id == id).first()

	db.session().delete(category)
	db.session().commit()

	flash('The category has been deleted.', 'success')

	return redirect(url_for('route_admin_shop_categories'))
Esempio n. 37
0
def route_admin_shop_category_edit_post(id):
	category = ShopCategory.query.filter(ShopCategory.id == id).first()
	category.name = request.form.get('name', '')
	category.enabled = 1 if request.form.get('enabled', None) else 0

	db.session().commit()
	flash('The category has been edited.', 'success')

	return redirect(url_for('route_admin_shop_categories'))
Esempio n. 38
0
def route_admin_shop_category_edit_post(id):
    category = ShopCategory.query.filter(ShopCategory.id == id).first()
    category.name = request.form.get('name', '')
    category.enabled = 1 if request.form.get('enabled', None) else 0

    db.session().commit()
    flash('The category has been edited.', 'success')

    return redirect(url_for('route_admin_shop_categories'))
Esempio n. 39
0
def route_account_create_post():
	name = request.form.get('name', '', type=str)
	pswd = request.form.get('pswd', '', type=str)
	mail = request.form.get('mail', '', type=str)
	pswdRepeat = request.form.get('pswdRepeat', '', type=str)
	captcha = request.form.get('g-recaptcha-response')
	error = False

	if len(name) < 4 or len(name) > 32:
		flash('The account name length must be between 4 and 32 characters.', 'error')
		error = True

	if len(pswd) < 5:
		flash('The password must be at least 5 characters long.', 'error')
		error = True

	if pswd != pswdRepeat:
		flash('The passwords do not match.', 'error')
		error = True

	if len(mail) < 6:
		flash('The specified e-mail address is not valid.', 'error')
		error = True

	account = db.session().query(Account.id).filter(Account.name == name).first()
	if account:
		flash('The account name is already in use.', 'error')
		error = True

	if check_captcha(captcha) is False:
		flash('You have failed the human verification', 'error')
		error = True

	if error:
		return redirect(url_for('route_account_create', name=name, mail=mail))

	hash = sha1()
	hash.update(pswd.encode('utf-8'))
	pswd = hash.hexdigest()

	account = Account()
	account.name = name
	account.password = pswd
	account.email = mail
	account.creation = int(time())
	account.key = ''

	db.session().add(account)
	db.session().commit()

	session['account'] = account.id
	session['access'] = account.type
	session['web_access'] = account.web_access

	flash('The account has been created. You can create a character now.', 'success')
	return redirect(url_for('route_account_manage'))
Esempio n. 40
0
def route_admin_news_compose_post():
	title = request.form.get('title', '')
	content = request.form.get('content', '')
	thread_content = request.form.get('threadContent', '')
	poster_id = request.form.get('poster', 0)
	board_id = request.form.get('board', 0)
	error = False

	if len(title) == 0:
		flash('The news title cannot be empty.', 'error')
		error = True

	if len(content) == 0:
		flash('The news content cannot be empty.', 'error')
		error = True

	if len(thread_content) == 0:
		flash('The thread content cannot be empty.', 'error')
		error = True

	if not error:
		content = content.strip()
		content = ' '.join(content.split())

		timestamp = int(time())

		thread = ForumThread()
		thread.subject = title
		thread.timestamp = timestamp
		thread.board_id = board_id
		thread.locked = 0
		thread.pinned = 0
		thread.lastpost = timestamp
		thread.author_id = poster_id
		thread.content = thread_content

		db.session().add(thread)
		db.session().commit()

		news = News()
		news.timestamp = timestamp
		news.header = title
		news.content = content
		news.author_id = poster_id
		news.thread_id = thread.id

		db.session().add(news)
		db.session().commit()

		author = Player.query.filter(Player.id == poster_id).first()
		author.postcount = author.postcount + 1
		db.session().commit()

		flash('The news has been posted successfully.', 'success')

	return redirect(url_for('route_admin_news_compose'))
Esempio n. 41
0
def route_admin_news_compose_post():
    title = request.form.get('title', '')
    content = request.form.get('content', '')
    thread_content = request.form.get('threadContent', '')
    poster_id = request.form.get('poster', 0)
    board_id = request.form.get('board', 0)
    error = False

    if len(title) == 0:
        flash('The news title cannot be empty.', 'error')
        error = True

    if len(content) == 0:
        flash('The news content cannot be empty.', 'error')
        error = True

    if len(thread_content) == 0:
        flash('The thread content cannot be empty.', 'error')
        error = True

    if not error:
        content = content.strip()
        content = ' '.join(content.split())

        timestamp = int(time())

        thread = ForumThread()
        thread.subject = title
        thread.timestamp = timestamp
        thread.board_id = board_id
        thread.locked = 0
        thread.pinned = 0
        thread.lastpost = timestamp
        thread.author_id = poster_id
        thread.content = thread_content

        db.session().add(thread)
        db.session().commit()

        news = News()
        news.timestamp = timestamp
        news.header = title
        news.content = content
        news.author_id = poster_id
        news.thread_id = thread.id

        db.session().add(news)
        db.session().commit()

        author = Player.query.filter(Player.id == poster_id).first()
        author.postcount = author.postcount + 1
        db.session().commit()

        flash('The news has been posted successfully.', 'success')

    return redirect(url_for('route_admin_news_compose'))
Esempio n. 42
0
def route_forum_thread(thread, page):
    thread = ForumThread.query.filter(ForumThread.id == thread).first()
    if not thread:
        return redirect(url_for('route_forum'))

    if thread.deleted and session.get('access', 0) != ADMIN_ACCOUNT_TYPE:
        return redirect(url_for('route_forum'))

    player = db.session().query(
        Player.name, Player.level, Player.vocation, Player.town_id,
        Player.group_id, Player.postcount, Player.signature, Player.looktype,
        Player.lookhead, Player.lookbody, Player.looklegs, Player.lookfeet,
        Player.lookaddons).filter(Player.id == thread.author_id).first()
    if player:
        thread.player = player

    total = db.session().query(
        ForumPost.id).filter(ForumPost.thread_id == thread.id).count()
    perpage = POSTS_PER_PAGE

    posts = ForumPost.query.filter(ForumPost.thread_id == thread.id)

    if session.get('access', 0) != ADMIN_ACCOUNT_TYPE:
        posts = posts.filter(ForumPost.deleted == 0)

    posts = posts.order_by(ForumPost.timestamp.asc())
    posts = posts.offset((page - 1) * perpage)
    posts = posts.limit(perpage).all()

    for post in posts:
        player = db.session().query(
            Player.name, Player.level, Player.vocation, Player.town_id,
            Player.group_id, Player.postcount, Player.signature,
            Player.looktype, Player.lookhead, Player.lookbody, Player.looklegs,
            Player.lookfeet,
            Player.lookaddons).filter(Player.id == post.author_id).first()
        if player:
            post.player = player

    user = current_user()
    characters = None

    if user:
        characters = db.session().query(
            Player.id, Player.name).filter(Player.account_id == user.id).all()

    pagination = Pagination(posts, page, perpage, total, posts)

    return render_template('forum/thread.htm',
                           thread=thread,
                           posts=posts,
                           characters=characters,
                           pagination=pagination,
                           perpage=perpage,
                           page=page)
Esempio n. 43
0
def route_admin_library_edit_post(id):
	page = Library.query.filter(Library.id == id).first()
	page.uri = request.form.get('uri', '')
	page.name = request.form.get('name', '')
	page.enabled = 1 if request.form.get('enabled', None) else 0
	page.content = request.form.get('content', '')

	db.session().commit()
	flash('The page has been edited.', 'success')

	return redirect(url_for('route_admin_library'))
Esempio n. 44
0
def route_news():
	news = db.session().query(News).order_by(News.id.desc()).limit(5).all()
	for entry in news:
		player = db.session().query(Player.name).filter(Player.id == entry.author_id).first()
		if player:
			entry.author = player.name

		posts = db.session().query(ForumPost.id).filter(ForumPost.thread_id == entry.thread_id).count()
		entry.comments = posts

	return render_template('news/news.htm', news=news)
Esempio n. 45
0
def route_admin_library_edit_post(id):
    page = Library.query.filter(Library.id == id).first()
    page.uri = request.form.get('uri', '')
    page.name = request.form.get('name', '')
    page.enabled = 1 if request.form.get('enabled', None) else 0
    page.content = request.form.get('content', '')

    db.session().commit()
    flash('The page has been edited.', 'success')

    return redirect(url_for('route_admin_library'))
Esempio n. 46
0
def route_account_show(id):
	account = current_user()
	player = db.session().query(Player).filter(Player.id == id).first()
	if player and account.id == player.account_id:
		player.hidden = 0
		db.session().commit()

		flash('The characted is no longer hidden.', 'success')
	else:
		flash('You cannot show a character that does not belong to you.', 'error')

	return redirect(url_for('route_account_manage'))
Esempio n. 47
0
def route_account_restore_post(id):
	account = current_user()
	player = db.session().query(Player).filter(Player.id == id).first()
	if player and account.id == player.account_id:
		player.deletion = 0
		db.session().commit()

		flash('The character has been restored.', 'success')
	else:
		flash('You cannot restore a character that does not belong to you.', 'error')

	return redirect(url_for('route_account_manage'))
Esempio n. 48
0
def route_account_delete_post(id):
	account = current_user()
	player = db.session().query(Player).filter(Player.id == id).first()
	if player and account.id == player.account_id:
		player.deletion = int(time()) + (DELETION_DELAY * 86400)
		db.session().commit()

		flash('The character has been scheduled for deletion.', 'success')
	else:
		flash('You cannot delete a character that does not belong to you.', 'error')

	return redirect(url_for('route_account_manage'))
Esempio n. 49
0
def route_account_edit_post(id):
	account = current_user()
	player = db.session().query(Player).filter(Player.id == id).first()
	if player and account.id == player.account_id:
		player.comment = request.form.get('comment', '', type=str)
		db.session().commit()

		flash('The character comment has been updated.', 'success')
	else:
		flash('You cannot edit the comment of a character that does not belong to you.', 'error')

	return redirect(url_for('route_account_manage'))
Esempio n. 50
0
def route_admin_forum_board_edit_post(id):
    board = ForumBoard.query.filter(ForumBoard.id == id).first()

    board.name = request.form.get('name', '')
    board.description = request.form.get('description', '')
    board.category_id = request.form.get('category', 0)
    board.locked = 0 if not request.form.get('locked', None) else 1

    db.session().commit()
    flash('The board has been edited.', 'success')

    return redirect(url_for('route_admin_forum_boards'))
Esempio n. 51
0
def route_admin_forum_board_edit_post(id):
	board = ForumBoard.query.filter(ForumBoard.id == id).first()

	board.name = request.form.get('name', '')
	board.description = request.form.get('description', '')
	board.category_id = request.form.get('category', 0)
	board.locked = 0 if not request.form.get('locked', None) else 1

	db.session().commit()
	flash('The board has been edited.', 'success')

	return redirect(url_for('route_admin_forum_boards'))
Esempio n. 52
0
def route_news_single(id):
	entry = db.session().query(News).filter(News.id == id).first()
	if not entry:
		return redirect(url_for('route_news'))

	player = db.session().query(Player.name).filter(Player.id == entry.author_id).first()
	if player:
		entry.author = player.name

	posts = db.session().query(ForumPost.id).filter(ForumPost.thread_id == entry.thread_id).count()
	entry.comments = posts

	return render_template('news/single.htm', entry=entry)
Esempio n. 53
0
File: news.py Progetto: diath/pyfsw
def route_news():
    news = db.session().query(News).order_by(News.id.desc()).limit(5).all()
    for entry in news:
        player = db.session().query(
            Player.name).filter(Player.id == entry.author_id).first()
        if player:
            entry.author = player.name

        posts = db.session().query(ForumPost.id).filter(
            ForumPost.thread_id == entry.thread_id).count()
        entry.comments = posts

    return render_template('news/news.htm', news=news)
Esempio n. 54
0
def route_community_guild_disband_post(id):
	if not is_guild_leader(id):
		return redirect(url_for('route_community_guild', id=id))

	guild = Guild.query.filter(Guild.id == id).first()
	db.session().delete(guild)
	db.session().commit()

	logo = os.path.join(UPLOAD_PATH, '{}.png'.format(id))
	if os.path.isfile(logo):
		os.remove(logo)

	return redirect(url_for('route_community_guilds'))
Esempio n. 55
0
def route_community_guild_disband_post(id):
    if not is_guild_leader(id):
        return redirect(url_for('route_community_guild', id=id))

    guild = Guild.query.filter(Guild.id == id).first()
    db.session().delete(guild)
    db.session().commit()

    logo = os.path.join(UPLOAD_PATH, '{}.png'.format(id))
    if os.path.isfile(logo):
        os.remove(logo)

    return redirect(url_for('route_community_guilds'))