Beispiel #1
0
def team_modify():
    if request.method == "POST":
        team_name = request.form["team_name"].strip()
        team_elig = "team_eligibility" in request.form
        affiliation = request.form["affiliation"].strip()
        name_changed = (team_name!=g.team.name)
        affi_changed = (affiliation!=g.team.affiliation)
        elig_changed = (team_elig!=g.team.eligible)
        if not name_changed and not affi_changed and not elig_changed:
            flash("nothing changed!")
            return redirect(url_for('team_dashboard'))
        if name_changed:
            try:
                if (Team.get(Team.name == team_name)):
                    flash("The team name has been used.")
                    return redirect(url_for('team_dashboard'))
            except Team.DoesNotExist:
                pass

            if len(team_name) > 50 or not team_name:
                flash("wrong team name format!")
                return redirect(url_for('team_dashboard'))

        if affi_changed:
            if not affiliation or len(affiliation) > 100:
                affiliation = "No affiliation"

        g.team.name = team_name
        g.team.affiliation = affiliation
        g.team.eligible = team_elig
        g.team.save()
        app.logger.info(g.user.username+" modify team.")
        flash("change successfully.")
        return redirect(url_for('team_dashboard'))
Beispiel #2
0
def team_register():
    if request.method == "GET":
        return redirect(url_for('team_dashboard'))
    else:
        team_name = request.form["team_name"].strip()
        team_elig = "team_eligibility" in request.form
        affiliation = request.form["affiliation"].strip()

        try:
            if (Team.get(Team.name == team_name)):
                flash("The team name has been used.")
                return redirect(url_for('team_dashboard'))
        except Team.DoesNotExist:
            pass

        if len(team_name) > 50 or not team_name:
            flash("wrong team name format!")
            return redirect(url_for('team_dashboard'))
        if not affiliation or len(affiliation) > 100:
            affiliation = "No affiliation"
        team_leader = User.get(User.id == g.user.id)
        team = Team.create(name=team_name, eligible=team_elig, affiliation=affiliation, team_leader=team_leader)
        TeamMember.create(team=team,member=team_leader,member_confirmed=False)
        if not app.debug:
            UserAccess.create(user=g.user, ip=misc.get_ip(), time=datetime.now())
        session["team_id"] = team.id
        app.logger.info(g.user.username+" register a team.")
        flash("The request has send to admin.")
        return redirect(url_for('team_dashboard'))
Beispiel #3
0
def admin_score_adjust(tid):
    value = int(request.form["value"])
    reason = request.form["reason"]

    team = Team.get(Team.id == tid)

    ScoreAdjustment.create(team=team, value=value, reason=reason)
    flash("Score adjusted.")

    return redirect(url_for(".admin_show_team", tid=tid))
Beispiel #4
0
def scoreboard_variables():
    var = dict(config=config)
    var["user_teamed"] = False     #user_teamed用户属于某个队伍
    var["user_requested"] = False   #user_requested用户申请加入某个队伍
    var["team_requested"] = False   #team_requested用户申请创建某个队伍
    if "user_id" in session:
        var["logged_in"] = True
        var["user"] = g.user
        try:
            if (TeamMember.get(TeamMember.member == g.user.id).member_confirmed):
                var["user_teamed"] = True
        except:
            var["user_teamed"] = False
        try:
            if (not TeamMember.get(TeamMember.member == g.user.id).member_confirmed):
                var["user_requested"] = True
        except:
            var["user_requested"] = False
        try:
            if (not Team.get(Team.team_leader == g.user.id).team_confirmed):
                var["team_requested"] = True
        except:
            var["team_requested"] = False
    else:
        var["logged_in"] = False
        var["notifications"] = []

    if "team_id" in session:
        g.team = Team.get(Team.id == session["team_id"])
        var["team"] = g.team
        if (g.user.id == g.team.team_leader.id):
            var["user_leader"] = True        #用户是队长
        else:
            var["user_leader"] = False
        var["notifications"] = Notification.select().where(Notification.team == g.team)
    else:
        var["notifications"] = []
    return var
Beispiel #5
0
def teamconfirm():
    if utils.misc.get_ip() in config.confirm_ip:
        team_name = request.form["team_name"].strip()
        team_key = request.form["team_key"].strip()
        try:
            team = Team.get(Team.name == team_name)
        except Team.DoesNotExist:
            return "invalid", 403
        if team.key == team_key:
            return "ok", 200
        else:
            return "invalid", 403
    else:
        return "unauthorized", 401
Beispiel #6
0
def teamconfirm():
    if utils.misc.get_ip() in config.confirm_ip:
        team_name = request.form["team_name"].strip()
        team_key = request.form["team_key"].strip()
        try:
            team = Team.get(Team.name == team_name)
        except Team.DoesNotExist:
            return "invalid", 403
        if team.key == team_key:
            return "ok", 200
        else:
            return "invalid", 403
    else:
        return "unauthorized", 401
Beispiel #7
0
def login():
    if request.method == "GET":
        return render_template("login.html")
    elif request.method == "POST":
        team_key = request.form["team_key"]

        try:
            team = Team.get(Team.key == team_key)
            TeamAccess.create(team=team, ip=misc.get_ip(), time=datetime.now())
            session["team_id"] = team.id
            flash("Login successful.")
            return redirect(url_for('dashboard'))
        except Team.DoesNotExist:
            flash("Couldn't find your team. Check your team key.", "error")
            return render_template("login.html")
Beispiel #8
0
def login():
    if request.method == "GET":
        return render_template("login.html")
    elif request.method == "POST":
        team_key = request.form["team_key"]

        try:
            team = Team.get(Team.key == team_key)
            TeamAccess.create(team=team, ip=misc.get_ip(), time=datetime.now())
            session["team_id"] = team.id
            flash("Login successful.")
            return redirect(url_for('dashboard'))
        except Team.DoesNotExist:
            flash("Couldn't find your team. Check your team key.", "error")
            return render_template("login.html")
Beispiel #9
0
def team_join():
    if request.method == "POST":
        team_name = request.form["team_name"].strip()
        try:
            team=Team.get(Team.name == team_name)
            if not team.team_confirmed:
                flash("The team has not be agreed by admin.Please wait,or join another team!")
                return redirect(url_for('team_dashboard'))
            else:
                TeamMember.create(team=team.id, member=g.user.id)
                app.logger.info(g.user.username+" want to join "+team_name)
                flash("The request has sent to leader!")
                return redirect(url_for('team_dashboard'))
        except Team.DoesNotExist:
            flash("team name do not exist!")
            return redirect(url_for('team_dashboard'))
Beispiel #10
0
def make_info_available():
    if "user_id" in session:
        g.user = User.get(User.id == session["user_id"])
    if "team_id" in session:
        g.team = Team.get(Team.id == session["team_id"])
        g.team_restricts = g.team.restricts.split(",")
Beispiel #11
0
def make_info_available():
    if "team_id" in session:
        g.team = Team.get(Team.id == session["team_id"])
        g.team_restricts = g.team.restricts.split(",")
Beispiel #12
0
def admin_show_team(tid):
    team = Team.get(Team.id == tid)
    return render_template("admin/team.html", team=team)
Beispiel #13
0
def admin_toggle_eligibility_lock(tid):
    team = Team.get(Team.id == tid)
    team.eligibility_locked = not team.eligibility_locked
    team.save()
    flash("Eligibility lock set to {}".format(team.eligibility_locked))
    return redirect(url_for(".admin_show_team", tid=tid))