Ejemplo n.º 1
0
    acc.disabled = status
    db.session.commit()
    return "OK"


@bp.route("/api/account/<int:acc_id>", methods=["DELETE"])
@login_required
@perm_manager.require('admin')
def api_account_delete(acc_id: int) -> Response:
    db.session.query(Account).filter(Account.id == acc_id).delete()
    db.session.commit()
    return flask.jsonify(status="OK")


add_menu_entry('accounts.accounts', lazy_gettext('Accounts'),
               perm_manager.get_permission('accounts_edit').can)
add_menu_entry('accounts.account_self', lazy_gettext('Own Settings'),
               lambda: True)


@login_required
@perm_manager.require('settings_access')
def alt_verification_handler(code: str) -> None:
    # this throws exception and exists this function
    if current_user.type != 'account':
        flask.abort(403, "You are not on an account.")

    auth = authorize(code)

    access_token = auth['access_token']
    refresh_token = auth['refresh_token']
Ejemplo n.º 2
0
    db.session.commit()

    flash(gettext("Thank You for your feedback!"), "info")

    return flask.redirect(url_for('.index'))


@feedback.route("/settings", methods=["GET"])
@perm_view.require(http_exception=401)
def settings() -> Response:
    # only give tickets that are not "closed" and not older then 90 days
    time_90days_ago = datetime.utcnow() - timedelta(90)
    tickets = db.session.query(Ticket).filter((Ticket.time > time_90days_ago) & (Ticket.state == "new"))\
        .order_by(desc(Ticket.time)).all()
    return render_template("feedback/settings.html", tickets=tickets)


@feedback.route("/settings", methods=["POST"])
@perm_edit.require(http_exception=401)
def change_status() -> Response:
    ticket_id = int(request.form.get('ticketID'))
    new_status = request.form.get('ticketStatus')
    ticket = db.session.query(Ticket).get(ticket_id)
    ticket.state = new_status
    db.session.commit()
    return make_response("OK")


add_menu_entry('feedback.settings', lazy_gettext('Feedback'), perm_view.can)
Ejemplo n.º 3
0
    return render_template("settings/mail/index.html", mails=mails)


@bp.route("/change/<string:type_>", methods=["POST"])
@login_required
@perm_edit.require()
def change(type_):
    if type_ == "tbadge":
        mail = request.form.get('mail')
        topic = request.form.get('topic')
        sset_tbadge_mail(mail)
        sset_tbadge_topic(topic)
        flash(gettext("T-Badge mail set!"), 'success')
    elif type_ == "resident":
        mail = request.form.get('mail')
        topic = request.form.get('topic')
        sset_resident_mail(mail)
        sset_resident_topic(topic)
        flash(gettext("Resident mail set!"), 'success')
    elif type_ == "default":
        mail = request.form.get('mail')
        topic = request.form.get('topic')
        sset_other_mail(mail)
        sset_other_topic(topic)
        flash(gettext("Other mail set!"), 'success')
    return redirect(url_for('settings_mail.index'))


add_menu_entry('settings_mail.index', lazy_gettext('IG Mail Settings'),
               lambda: perm_edit.can())
Ejemplo n.º 4
0
    group: WaitlistGroup = db.session.query(WaitlistGroup).get(gid)
    logger.info("%s cleared waitlist %s", current_user.username,
                group.displayName)

    waitlist_ids = []
    for wl in group.waitlists:
        waitlist_ids.append(wl.id)

    db.session.query(WaitlistEntry)\
        .filter(WaitlistEntry.waitlist_id.in_(waitlist_ids))\
        .delete(synchronize_session=False)

    db.session.commit()
    flash(gettext("Waitlists were cleared!"), "danger")
    return redirect(url_for('.fleet'))


@bp.route("/fleet/status/set/", methods=["POST"])
@login_required
@perm_management.require(http_exception=401)
def fleet_status_global_set() -> str:
    action = request.form['action']
    if action == "set_name_scramble":
        should_scrable = not (request.form.get('scramble', 'off') == 'off')
        config.scramble_names = should_scrable
    return make_response("OK", 200)


add_menu_entry('fleetoptions.fleet', lazy_gettext('Fleet Settings'),
               perm_management.can)
Ejemplo n.º 5
0
from flask.globals import request
from flask.helpers import flash, url_for
from werkzeug.utils import redirect
from waitlist.permissions import perm_manager

bp = Blueprint('settings_inserts', __name__)
logger = logging.getLogger(__name__)

perm_manager.define_permission('inserts_edit')


@bp.route("/")
@login_required
@perm_manager.require('inserts_edit')
def index() -> Response:
    data = {'header': sget_insert('header')}
    return render_template("settings/inserts.html", inserts=data)


@bp.route("/change/<string:type_>", methods=["POST"])
@login_required
@perm_manager.require('inserts_edit')
def change(type_) -> Response:
    if type_ == "header":
        content = request.form.get('content')
        sset_insert('header', content)
        flash("Header Insert Saved")
    return redirect(url_for('settings_inserts.index'))

add_menu_entry('settings_inserts.index', 'Page Inserts', perm_manager.get_permission('inserts_edit').can)
Ejemplo n.º 6
0
perm = get_permission()


@bp.route("/")
@login_required
@perm.require()
def index():
    motds = {
        'hq': sget_motd_hq(),
        'vg': sget_motd_vg()
        }
    return render_template("settings/fleet_motd/index.html", motds=motds)


@bp.route("/change/<string:type_>", methods=["POST"])
@login_required
@perm.require()
def change(type_):
    if type_ == "hq":
        motd = request.form.get('motd')
        sset_motd_hq(motd)
        flash(gettext("HQ MOTD Saved"), 'success')
    elif type_ == "vg":
        motd = request.form.get('motd')
        sset_motd_vg(motd)
        flash(gettext("VG MOTD Saved"), 'success')
    return redirect(url_for('settings_fmotds.index'))


add_menu_entry('settings_fmotds.index', lazy_gettext('Fleet MOTD'), perm.can)
Ejemplo n.º 7
0
@bp.route("/whitelist_change_single", methods=["POST"])
@login_required
@perm_manager.require('bans_edit')
def whitelist_change_single():
    action = request.form['change']  # whitelist, unwhitelist
    target = request.form['target']  # name of target

    target = target.strip()

    if action == "whitelist":
        reason = request.form['reason']  # reason for ban
        whitelist_by_name(target, reason)
    elif action == "unwhitelist":
        unwhitelist_by_name(target)

    return redirect(url_for(".withelist"))


@bp.route("/whitelist_unlist", methods=["POST"])
@login_required
@perm_manager.require('bans_edit')
def whitelist_unlist():
    target = request.form['target']  # name of target
    target = target.strip()
    unwhitelist_by_name(target)

    return redirect(url_for(".whitelist"))

add_menu_entry('bans.bans', 'Bans', perm_manager.get_permission('bans_edit').can)
add_menu_entry('bans.whitelist', 'Whitelist', perm_manager.get_permission('bans_edit').can)
Ejemplo n.º 8
0
        elif action == "unwhitelist":
            target = int(target)
            unwhitelist_by_id(target)
    except ApiException as e:
        flash(gettext("Could not execute action, ApiException %(ex)s", ex=e),
              'danger')

    return redirect(url_for(".whitelist"))


@bp.route("/whitelist_unlist", methods=["POST"])
@login_required
@perm_manager.require('bans_edit')
def whitelist_unlist():
    target = request.form['target']  # name of target
    target = target.strip()
    try:
        target = int(target)
        unwhitelist_by_id(target)
    except ApiException as e:
        flash(gettext("Could not execute action, ApiException %(ex)s", ex=e),
              'danger')

    return redirect(url_for(".whitelist"))


add_menu_entry('bans.bans', lazy_gettext('Bans'),
               perm_manager.get_permission('bans_edit').can)
add_menu_entry('bans.whitelist', lazy_gettext('Whitelist'),
               perm_manager.get_permission('bans_edit').can)
Ejemplo n.º 9
0
perm = get_permission()


@bp.route("/")
@login_required
@perm.require()
def index():
    motds = {
        'hq': sget_motd_hq(),
        'vg': sget_motd_vg()
        }
    return render_template("settings/fleet_motd/index.html", motds=motds)


@bp.route("/change/<string:type_>", methods=["POST"])
@login_required
@perm.require()
def change(type_):
    if type_ == "hq":
        motd = request.form.get('motd')
        sset_motd_hq(motd)
        flash("HQ MOTD Saved")
    elif type_ == "vg":
        motd = request.form.get('motd')
        sset_motd_vg(motd)
        flash("VG MOTD Saved")
    return redirect(url_for('settings_fmotds.index'))

add_menu_entry('settings_fmotds.index', 'Fleet MOTD', perm.can)
Ejemplo n.º 10
0
from waitlist.blueprints.settings import add_menu_entry
from waitlist.permissions import perm_manager

perm_manager.define_permission('calendar_event_add')

add_menu_entry('calendar_settings.get_index', 'Events',
               perm_manager.get_permission('calendar_event_add').can)
Ejemplo n.º 11
0
    return render_template("settings/mail/index.html", mails=mails)


@bp.route("/change/<string:type_>", methods=["POST"])
@login_required
@perm_edit.require()
def change(type_):
    if type_ == "tbadge":
        mail = request.form.get('mail')
        topic = request.form.get('topic')
        sset_tbadge_mail(mail)
        sset_tbadge_topic(topic)
        flash("T-Badge mail set!")
    elif type_ == "resident":
        mail = request.form.get('mail')
        topic = request.form.get('topic')
        sset_resident_mail(mail)
        sset_resident_topic(topic)
        flash("Resident mail set!")
    elif type_ == "default":
        mail = request.form.get('mail')
        topic = request.form.get('topic')
        sset_other_mail(mail)
        sset_other_topic(topic)
        flash("Other mail set!")
    return redirect(url_for('settings_mail.index'))


add_menu_entry('settings_mail.index', 'IG Mail Settings',
               lambda: perm_edit.can())
Ejemplo n.º 12
0
from flask import Blueprint, render_template
from flask_login import login_required
from flask_babel import lazy_gettext

from waitlist.blueprints.settings import add_menu_entry
from waitlist.permissions import perm_manager
from waitlist.utility.config import overview_show_count_for_approvals

bp = Blueprint('settings_overview', __name__)

perm_manager.define_permission('settings_access')

perm_access = perm_manager.get_permission('settings_access')


@bp.route("/")
@login_required
@perm_access.require(http_exception=401)
def overview():
    return render_template(
        'settings/overview.html',
        show_count_for_approvals=overview_show_count_for_approvals)


add_menu_entry('settings_overview.overview', lazy_gettext('Overview'),
               lambda: True)
Ejemplo n.º 13
0
@bp.route("/add_role", methods=['POST'])
@login_required
@perm_manager.require(StaticPermissions.ADMIN)
def add_role() -> Response:
    role_name: str = request.form['role_name']
    role_display_name: str = request.form['role_display_name']

    PermissionManager.add_role(role_name, role_display_name)
    send_role_created(add_role, current_user.id, role_name, role_display_name)

    return redirect(url_for('.view_permissions'), code=303)


add_menu_entry(
    'settings_permissions.view_permissions', lazy_gettext('Permissions'),
    lambda: perm_manager.get_permission(StaticPermissions.ADMIN).can())


@bp.route("/remove_role", methods=['POST'])
@login_required
@perm_manager.require(StaticPermissions.ADMIN)
def remove_role() -> Response:
    role_id: int = int(request.form['role_id'])
    role: Role = PermissionManager.get_role(role_id)
    if role is None:
        flash(
            gettext('Role with id=%(role_id)d was not found, failed to delete',
                    role_id=role_id), "warning")
    else:
        role_display_name: str = role.displayName
Ejemplo n.º 14
0
        db.session.add(ticket)
    
    db.session.commit()
    
    flash("Thank You for your feedback!", "info")

    return flask.redirect(url_for('.index'))


@feedback.route("/settings", methods=["GET"])
@perm_view.require(http_exception=401)
def settings() -> Response:
    # only give tickets that are not "closed" and not older then 90 days
    time_90days_ago = datetime.utcnow() - timedelta(90)
    tickets = db.session.query(Ticket).filter((Ticket.time > time_90days_ago) & (Ticket.state == "new"))\
        .order_by(desc(Ticket.time)).all()
    return render_template("feedback/settings.html", tickets=tickets)


@feedback.route("/settings", methods=["POST"])
@perm_edit.require(http_exception=401)
def change_status() -> Response:
    ticket_id = int(request.form.get('ticketID'))
    new_status = request.form.get('ticketStatus')
    ticket = db.session.query(Ticket).get(ticket_id)
    ticket.state = new_status
    db.session.commit()
    return make_response("OK")

add_menu_entry('feedback.settings', 'Feedback', perm_view.can)
Ejemplo n.º 15
0
        for type_id in rest_typeids:
            invtype = db.session.query(InvType).get(type_id)
            check.check_rest_types.append(invtype)
        for group_id in rest_invgroupids:
            check.check_rest_groups.append(
                db.session.query(InvGroup).get(group_id))
        for mgroup_id in rest_mgroupids:
            check.check_rest_market_groups.append(
                db.session.query(MarketGroup).get(mgroup_id))

    db.session.commit()
    return redirect(
        url_for('.collection_edit',
                collection_id=check.collection.checkCollectionID))


@bp.route('/check/delete', methods=['POST'])
@login_required
@perm_manager.require('ship_assignment_edit')
def check_delete():
    check_id = int(request.form['check_id'])
    check = db.session.query(ShipCheck).get(check_id)
    db.session.delete(check)
    db.session.commit()
    return redirect(request.referrer)


add_menu_entry('ship_assignment.ship_assignments',
               lazy_gettext('Ship Classification'),
               perm_manager.get_permission('ship_assignment_edit').can)
Ejemplo n.º 16
0
    return redirect(url_for('.sde_settings'))


@bp.route("/sde/update/layouts", methods=["POST"])
@login_required
@perm_access.require(http_exception=401)
def update_layouts():
    f = request.files['file']
    if f and (f.filename.rsplit('.', 1)[1] == "bz2"
              or f.filename.rsplit('.', 1)[1] == "csv"):
        filename = secure_filename(f.filename)
        dest_name = path.join(app.config['UPLOAD_FOLDER'], filename)
        if path.isfile(dest_name):
            os.remove(dest_name)
        f.save(dest_name)
        # start the update
        sde.update_layouts(dest_name)
        flash("Layouts were updated!", "success")

    return redirect(url_for('.sde_settings'))


@bp.route("/sde")
@login_required
@perm_access.require(http_exception=401)
def sde_settings():
    return render_template("settings/sde.html")


add_menu_entry('sde.sde_settings', 'Static Data Import', perm_access.can)
Ejemplo n.º 17
0
        db.session.query(WaitlistEntry).filter(
            (WaitlistEntry.waitlist_id == group.xupwlID)
            | (WaitlistEntry.waitlist_id == group.logiwlID)
            | (WaitlistEntry.waitlist_id == group.dpswlID)
            | (WaitlistEntry.waitlist_id == group.sniperwlID)).delete()
    else:
        db.session.query(WaitlistEntry).filter(
            (WaitlistEntry.waitlist_id == group.xupwlID)
            | (WaitlistEntry.waitlist_id == group.logiwlID)
            | (WaitlistEntry.waitlist_id == group.dpswlID)
            | (WaitlistEntry.waitlist_id == group.sniperwlID)
            | (WaitlistEntry.waitlist_id == group.otherwlID)).delete()

    db.session.commit()
    flash("Waitlists were cleared!", "danger")
    return redirect(url_for('.fleet'))


@bp.route("/fleet/status/set/", methods=["POST"])
@login_required
@perm_management.require(http_exception=401)
def fleet_status_global_set() -> str:
    action = request.form['action']
    if action == "set_name_scramble":
        should_scrable = not (request.form.get('scramble', 'off') == 'off')
        config.scramble_names = should_scrable
    return "OK"


add_menu_entry('fleetoptions.fleet', 'Fleet Settings', perm_management.can)
Ejemplo n.º 18
0
        db.session.add(ts)
        db.session.commit()
        # set as active ts if there was none before
        if sget_active_ts_id() is None:
            sset_active_ts_id(ts.teamspeakID)
            change_connection()
    elif action == "remove" and perm_edit_server.can():
        teamspeak_id = int(request.form['teamspeakID'])
        db.session.query(TeamspeakDatum).filter(
            TeamspeakDatum.teamspeakID == teamspeak_id).delete()
        active_id = sget_active_ts_id()
        if active_id is not None and active_id == teamspeak_id:
            sset_active_ts_id(None)
            change_connection()
        db.session.commit()
    elif action == "set":
        teamspeak_id = int(request.form['teamspeakID'])
        active_id = sget_active_ts_id()
        sset_active_ts_id(teamspeak_id)
        if active_id is None:
            change_connection()
    else:
        flask.abort(400)

    return redirect(url_for("teamspeak.teamspeak"))


if not disable_teamspeak:
    add_menu_entry('teamspeak.teamspeak', lazy_gettext('TS Settings'),
                   perm_view_server.can)
Ejemplo n.º 19
0
        cache_item = __cache.get_cache_item(name)
        if cache_item is None:
            result = []
            row = []
            for idx in range(0, column_count):
                row.append('Calculation In Progress...')
            result.append(row)
        else:
            result = cache_item['data']

        # but trigger a recalculation in a greenlet
        def execute_query(data_name, cc, qq, ct):
            db_result = qq()
            if db_result is None:
                __cache.add_item_to_cache(data_name, __create_cache_item([], ct))
                return

            result_ = []
            for db_row in db_result:
                row_list = []
                for idx_cc in range(0, cc):
                    row_list.append(db_row[idx_cc])
                result_.append(row_list)
            __cache.add_item_to_cache(data_name, __create_cache_item(result_, ct))
            db.session.remove()

        Greenlet.spawn(execute_query, name, column_count, query, cache_time_seconds)
    return result

add_menu_entry('settings_overview.overview', 'Overview', lambda: True)

@bp.route("/sde/update/layouts", methods=["POST"])
@login_required
@perm_access.require(http_exception=401)
def update_layouts():
    f = request.files['file']
    if f and (f.filename.rsplit('.', 1)[1] == "bz2"
              or f.filename.rsplit('.', 1)[1] == "csv"):
        filename = secure_filename(f.filename)
        dest_name = path.join(app.config['UPLOAD_FOLDER'], filename)
        if path.isfile(dest_name):
            os.remove(dest_name)
        f.save(dest_name)
        # start the update
        sde.update_layouts(dest_name)
        flash(gettext("Layouts were updated!"), "success")

    return redirect(url_for('.sde_settings'))


@bp.route("/sde")
@login_required
@perm_access.require(http_exception=401)
def sde_settings():
    return render_template("settings/sde.html")


add_menu_entry('sde.sde_settings', lazy_gettext('Static Data Import'),
               perm_access.can)