コード例 #1
0
ファイル: __init__.py プロジェクト: kzkn/fc
def before_request():
    # TODO: この条件は後で消す
    if os.environ.get('FLASK_ENV') == 'production':
        if re.match(r'^/newfc', request.path):
            path = request.path[len('/newfc'):]
            return redirect(path, code=301)

    g.db = database.connect_db()
    if 'user_id' in session:
        g.user = users.find_by_id(session.get('user_id'))
    elif 'uid' in request.args:
        g.user = users.find_by_id(request.args.get('uid'))
    else:
        g.user = None

    if g.user:
        g.user.update_logged_in()

    if request_from_featurephone() and not request_for_mobile_page():
        return redirect(
                url_for('mobile.index') +
                (('?uid=%d' % g.user.id) if g.user else ''))

    if request_for_mobile_page():
        request.charset = 'Shift_JIS'
コード例 #2
0
ファイル: test_users.py プロジェクト: kzkn/fc
def test_permission():
    u1 = users.find_by_id(1)
    assert not u1.is_admin()
    assert not u1.is_schedule_admin()
    assert not u1.is_member_admin()
    assert not u1.is_notice_admin()
    assert not u1.is_god()

    u2 = users.find_by_id(2)
    assert u2.is_admin()
    assert not u2.is_schedule_admin()
    assert not u2.is_member_admin()
    assert not u2.is_notice_admin()
    assert not u2.is_god()

    u3 = users.find_by_id(3)
    assert u3.is_admin()
    assert u3.is_schedule_admin()
    assert not u3.is_member_admin()
    assert not u3.is_notice_admin()
    assert not u3.is_god()

    u4 = users.find_by_id(4)
    assert u4.is_admin()
    assert u4.is_schedule_admin()
    assert u4.is_member_admin()
    assert not u4.is_notice_admin()
    assert not u4.is_god()

    u5 = users.find_by_id(5)
    assert u5.is_admin()
    assert u5.is_schedule_admin()
    assert u5.is_member_admin()
    assert u5.is_notice_admin()
    assert u5.is_god()
コード例 #3
0
ファイル: admin.py プロジェクト: missundaztood/fc
def edit_member(id):
    if request.method == 'GET':
        user = users.find_by_id(id)
        return render_template('admin/edit_member.html', user=user)
    else:
        logi('edit member')
        try:
            validate_member()
        except ValueError, e:
            user = users.find_by_id(id)
            logi('edit member: validation error uid=%d', id)
            return render_template('admin/edit_member.html', user=user,
                    errors=e.errors)

        u = users.make_obj(request.form, id)
        logi('edit member: update uid=%d', id)
        try:
            users.update(id, u.password, u.sex, u.permission)
        except users.NotUniquePassword:
            user = users.find_by_id(id)
            logi('not unique password')
            return render_template('admin/edit_member.html', user=user,
                    errors=not_unique_password_error())

        if id != g.user.id:
            return redirect(url_for('admin.member'))
        elif u.is_member_admin():
            return redirect(url_for('admin.member'))
        elif u.is_admin():
            return redirect(url_for('admin.index'))
        else:
            return redirect(url_for('general.index'))
コード例 #4
0
ファイル: test_users.py プロジェクト: kzkn/fc
def test_sex():
    u1 = users.find_by_id(1)
    assert u1.is_male()
    assert not u1.is_female()

    u3 = users.find_by_id(3)
    assert not u3.is_male()
    assert u3.is_female()
コード例 #5
0
ファイル: test_entries.py プロジェクト: kzkn/fc
def test_has_permission_to_delete_guest():
    set_user(users.find_by_id(2))  # invited by normal1
    entries.do_guest_entry(1, "name", "comment")
    # check...
    set_user(users.find_by_id(1))  # god
    assert entries.has_permission_to_delete_guest(1)
    set_user(users.find_by_id(2))  # normal1
    assert entries.has_permission_to_delete_guest(1)
    set_user(users.find_by_id(3))  # normal2
    assert not entries.has_permission_to_delete_guest(1)
    set_user(users.find_by_id(4))  # normal3
    assert not entries.has_permission_to_delete_guest(1)
コード例 #6
0
ファイル: __init__.py プロジェクト: missundaztood/fc
def before_request():
    g.db = database.connect_db()
    if 'user_id' in session:
        g.user = users.find_by_id(session.get('user_id'))
    elif 'uid' in request.args:
        g.user = users.find_by_id(request.args.get('uid'))
    else:
        g.user = None

    if request_from_featurephone() and not request_for_mobile_page():
        return redirect(
                url_for('mobile.index') +
                (('?uid=%d' % g.user.id) if g.user else ''))

    if request_for_mobile_page():
        request.charset = 'Shift_JIS'
コード例 #7
0
ファイル: mobile.py プロジェクト: kzkn/fc
 def decorated_function(*args, **kwargs):
     uid = get_userid()
     if uid is None or not users.find_by_id(uid):
         abort(401)
     sid = get_sessionid()
     if sid is None or not users.is_valid_session_id(uid, sid):
         abort(401)
     return f(*args, **kwargs)
コード例 #8
0
ファイル: mobile.py プロジェクト: kzkn/fc
def find_user_and_schedule(sid):
    user = users.find_by_id(get_userid())
    if not user:
        abort(401)
    s = scheds.find_by_id(sid)
    if not s:
        abort(404)
    return (user, scheds.from_row(s))
コード例 #9
0
ファイル: mobile.py プロジェクト: kzkn/fc
def member(id=None):
    if id is None:  # show member list
        males, females = users.find_group_by_sex()
        return render_template("mobile/members.html", males=males, females=females)
    else:
        user = users.find_by_id(id)
        if not user:
            abort(404)
        return render_template("mobile/member.html", user=user)
コード例 #10
0
ファイル: mobile.py プロジェクト: kzkn/fc
def bbs(page=1):
    user = users.find_by_id(get_userid())
    if not user:
        abort(401)
    modelpage = max(0, page - 1)
    posts = bbsmodel.find_posts_on_page(modelpage)
    pages = bbsmodel.count_pages()
    begin, end = pagination(page, pages)
    return render_template("mobile/bbs.html", user=user, page=page, pages=pages, posts=posts, begin=begin, end=end)
コード例 #11
0
ファイル: admin.py プロジェクト: missundaztood/fc
def delete_member(id):
    if request.method == 'GET':
        user = users.find_by_id(id)
        return render_template('admin/delete_member.html', user=user)
    else:
        if is_yes():
            logi('delete member: uid=%d', id)
            users.delete_by_id(id)
        else:
            logi('not delete member: uid=%d', id)
        return redirect(url_for('admin.member'))
コード例 #12
0
ファイル: mobile.py プロジェクト: kzkn/fc
def index():
    user = users.find_by_id(get_userid())
    if user.has_not_registered_schedule_yet():
        return redirect(mobile_url_for("mobile.non_registered_practices"))
    ns = notices.find_showing()
    practice_count = scheds.count_schedules(scheds.TYPE_PRACTICE)
    game_count = scheds.count_schedules(scheds.TYPE_GAME)
    event_count = scheds.count_schedules(scheds.TYPE_EVENT)
    return render_template(
        "mobile/index.html",
        user=user,
        notices=ns,
        practice_count=practice_count,
        game_count=game_count,
        event_count=event_count,
    )
コード例 #13
0
ファイル: test_users.py プロジェクト: kzkn/fc
def test_find_by_id():
    u1 = users.find_by_id(1)
    assert u1.name == "foo"
    u2 = users.find_by_id(2)
    assert u2.name == "bar"
    u3 = users.find_by_id(3)
    assert u3.name == "baz"
    u4 = users.find_by_id(4)
    assert u4.name == "qux"
    u5 = users.find_by_id(5)
    assert u5.name == "quux"
    u6 = users.find_by_id(6)
    assert not u6
コード例 #14
0
ファイル: test_stats.py プロジェクト: kzkn/fc
def setup_testdata():
    users.insert("foo",  "passwd1", 1, 0x0)
    u = users.find_by_id(1)
    u.joined = datetime(2011, 1, 1)
    set_user(u)

    d = datetime(2012, 1, 1)
    schedules.insert(schedules.TYPE_PRACTICE, d + timedelta(days=1), "p1")
    schedules.insert(schedules.TYPE_PRACTICE, d + timedelta(days=2), "p2")
    schedules.insert(schedules.TYPE_PRACTICE, d + timedelta(days=3), "p3")
    schedules.insert(schedules.TYPE_PRACTICE, d + timedelta(days=4), "p4")
    schedules.insert(schedules.TYPE_PRACTICE, d + timedelta(days=5), "p5")
    schedules.insert(schedules.TYPE_GAME,     d + timedelta(days=1), "g1")
    schedules.insert(schedules.TYPE_GAME,     d + timedelta(days=2), "g2")
    schedules.insert(schedules.TYPE_GAME,     d + timedelta(days=3), "g3")
    schedules.insert(schedules.TYPE_GAME,     d + timedelta(days=4), "g4")
    schedules.insert(schedules.TYPE_GAME,     d + timedelta(days=5), "g5")
    schedules.insert(schedules.TYPE_EVENT,    d + timedelta(days=1), "e1")
    schedules.insert(schedules.TYPE_EVENT,    d + timedelta(days=2), "e2")
    schedules.insert(schedules.TYPE_EVENT,    d + timedelta(days=3), "e3")
    schedules.insert(schedules.TYPE_EVENT,    d + timedelta(days=4), "e4")
    schedules.insert(schedules.TYPE_EVENT,    d + timedelta(days=5), "e5")
コード例 #15
0
ファイル: mobile.py プロジェクト: kzkn/fc
def practices():
    user = users.find_by_id(get_userid())
    if not user:
        abort(401)
    ps = [scheds.from_row(s) for s in scheds.find(scheds.TYPE_PRACTICE)]
    return render_template("mobile/practices.html", user=user, practices=ps)
コード例 #16
0
ファイル: mobile.py プロジェクト: kzkn/fc
def non_registered_practices():
    user = users.find_by_id(get_userid())
    if not user:
        abort(401)
    ps = [scheds.from_row(s) for s in scheds.find_non_registered(user.id, scheds.TYPE_PRACTICE)]
    return render_template("mobile/practices.html", user=user, practices=ps, info_msg=u"未登録の練習があります。")
コード例 #17
0
ファイル: test_bbs.py プロジェクト: kzkn/fc
 def impl():
     users.insert("foo",  "passwd1", 1, 0x0)
     set_user(users.find_by_id(1))
     for i in range(count):
         bbs.post(u"あいうえお" + str(i))
コード例 #18
0
ファイル: mobile.py プロジェクト: kzkn/fc
def games():
    user = users.find_by_id(get_userid())
    if not user:
        abort(401)
    gs = [scheds.from_row(s) for s in scheds.find(scheds.TYPE_GAME)]
    return render_template("mobile/games.html", user=user, games=gs)
コード例 #19
0
ファイル: mobile.py プロジェクト: kzkn/fc
def events():
    user = users.find_by_id(get_userid())
    if not user:
        abort(401)
    es = [scheds.from_row(s) for s in scheds.find(scheds.TYPE_EVENT)]
    return render_template("mobile/events.html", user=user, events=es)