コード例 #1
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def buy_treasure(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('buy treasure', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    treasure = request.GET.get('treasure', None)

    availables = [item['id'] for item in treasures.info]
    if treasure not in availables:
        mgr.log.add('buy treasure', 'no such treasure: %s' % treasure, user, user_ip)
        return HttpResponse(make_json_respond('FAIL'))

    if user.coin < treasures.each[treasure]['price']:
        mgr.log.add('buy treasure', 'treasure: %s, not enough coins: %s' % (treasure, user.coin), user, user_ip)
        return HttpResponse(make_json_respond('FAIL'))

    enableds = mgr.user.enabled_treasures(user)
    if treasure in enableds:
        mgr.log.add('buy treasure', 'treasure: %s, already bought' % treasure, user, user_ip)
        return HttpResponse(make_json_respond('FAIL'))

    mgr.user.buy_treasure(user, treasure)

    mgr.log.add('buy treasure', 'treasure: %s, remaining coins: %s' % (treasure, user.coin), user, user_ip)
    return HttpResponse(make_json_respond('OKAY'), {'coins': user.coin})
コード例 #2
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def info_user(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('info user', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    mgr.log.add('info user', 'name: %s, score: %s, coin: %s' % (user.name, user.score, user.coin), user, user_ip)
    return HttpResponse(make_json_respond('OKAY', {'name': user.name, 'score': user.score, 'coin': user.coin}))
コード例 #3
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def count_notifi(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('count notifi', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    cnt = mgr.notifi.get_count(user)

    return HttpResponse(make_json_respond('OKAY', {'count': cnt}))
コード例 #4
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def get_notifi(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('get notifi', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    notifis = mgr.notifi.get_by_user(user, True)

    mgr.log.add('get notifi', 'got %s notifis' % len(notifis), user, user_ip)
    return HttpResponse(make_json_respond('OKAY', {'notifis': notifis}))
コード例 #5
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def rename_user(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('rename user', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    new_name = request.GET.get('new_name', '')

    mgr.user.rename(user, new_name)
    mgr.log.add('rename user', 'new_name: %s' % new_name, user, user_ip)
    return HttpResponse(make_json_respond('OKAY'))
コード例 #6
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def get_recomm(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('get recomm', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    excl_recomm_ids = request.GET.get('excl_recomm_ids', '').split(',')
    excl_recomm_ids = [int(recomm_id) for recomm_id in excl_recomm_ids if re.match(r'^\d+$', recomm_id)]

    recomms = dictt.get_recomm(gag_id, user, excl_recomm_ids)
    mgr.log.add('get recomm',
                'gag_id: %s, excl_recomm_ids: %s, got %d recomms' % (gag_id, excl_recomm_ids, len(recomms)),
                user, user_ip)
    return HttpResponse(make_json_respond('OKAY', {'recomms': recomms}))
コード例 #7
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def neutral_explain(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('neutral explain', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    expl_id = request.GET.get('expl_id', None)
    expl = mgr.explain.get(expl_id=expl_id)

    success = dictt.neutral_expl(expl, gag_id, user)
    mgr.log.add('neutral explain',
                'gag_id: %s, expl: %s, success: %s' % (gag_id, expl.id if expl else None, bool(success)),
                user, user_ip)
    if not success:
        return HttpResponse(make_json_respond('FAIL'))
    return HttpResponse(make_json_respond('OKAY'))
コード例 #8
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def enable_notifi(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('enable notifi', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    notifi_id = request.GET.get('notifi_id', None)
    notifi = mgr.notifi.get(notifi_id)
    success = mgr.notifi.enable(notifi, user)

    if not success:
        mgr.log.add('enable notifi', 'failed to enable notifi %s' % notifi_id, user, user_ip)
        return HttpResponse(make_json_respond('FAIL'))

    mgr.log.add('enable notifi', 'enabled notifi %s' % notifi_id, user, user_ip)
    return HttpResponse(make_json_respond('OKAY'))
コード例 #9
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def id_recomm(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('id recomm', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    word_str = request.GET.get('word_str', '')

    word = mgr.word.get(word_str=word_str)
    success = word
    mgr.log.add('id recomm',
                'gag_id: %s, word: %s, sucess: %s' % (gag_id, word.id if word else None, bool(success)),
                user, user_ip)
    if not success:
        return HttpResponse(make_json_respond('FAIL'))
    return HttpResponse(make_json_respond('OKAY', {'id': word.id}))
コード例 #10
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def hate_recomm(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('hate recomm', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    word_id = request.GET.get('word_id', None)

    word = mgr.word.get(word_id=word_id)
    success = dictt.delete_recomm(word, gag_id, user)
    mgr.log.add('hate recomm',
                'gag_id: %s, word: %s, sucess: %s' % (gag_id, word.id if word else None, bool(success)),
                user, user_ip)
    if not success:
        return HttpResponse(make_json_respond('FAIL'))
    return HttpResponse(make_json_respond('OKAY'))
コード例 #11
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def provide_explain(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('provide explain', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    word_id = request.GET.get('word_id', None)
    expl_str = request.GET.get('expl_str', '')

    word = mgr.word.get(word_id=word_id)
    expls = dictt.provide_expl(expl_str, word, user)

    success = expls
    mgr.log.add('provide explain',
                'gag_id: %s, expls: %s, success: %s' % (gag_id, [expl['id'] if expl else None for expl in expls], bool(success)),
                user, user_ip)
    if not success:
        return HttpResponse(make_json_respond('FAIL'))
    return HttpResponse(make_json_respond('OKAY'))
コード例 #12
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def info_treasure(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('info treasure', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    enableds = user.treasures.split(',')

    info = []
    for item in treasures.info:
        info.append({
            'id': item['id'],
            'name': item['name'],
            'price': item['price'],
            'enabled': item['id'] in enableds,
        })

    mgr.log.add('info treasure', '#treasures: %s, enableds: %s' % (len(info), user.treasures), user, user_ip)
    return HttpResponse(make_json_respond('OKAY', {'info': info}))
コード例 #13
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def query_explain(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('query explain', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    word_id = request.GET.get('word_id', None)
    word_str = request.GET.get('word_str', '')
    excl_expl_ids = request.GET.get('excl_expl_ids', '').split(',')
    excl_expl_ids = [int(expl_id) for expl_id in excl_expl_ids if re.match(r'^\d+$', expl_id)]

    if word_id is not None:
        word = mgr.word.get(word_id=word_id)
    else:
        word = mgr.word.get(word_str=word_str)

    expls = dictt.get_expls(word, gag_id, user, excl_expl_ids)
    mgr.log.add('query explain',
                'gag_id: %s, word: %s, got %d explains' % (gag_id, word.id if word else None, len(expls)),
                user, user_ip)
    return HttpResponse(make_json_respond('OKAY', {'word_id': word.id, 'expls': expls}))
コード例 #14
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def avatar_image(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('avatar image', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    avatar = user.avatar if user.avatar else 'mario-big'
    fname = 'crowd_lookup/images/avatars/' + avatar + '-man.png'
    fr = open(fname)

    mgr.log.add('avatar image', 'avatar: %s' % user.avatar, user, user_ip)
    return HttpResponse(fr.read(), mimetype='image/png')
コード例 #15
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def use_treasure(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('use treasure', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    treasure = request.GET.get('treasure', None)

    if not treasure:
        mgr.log.add('use treasure', 'no treasure selected', user, user_ip)
        return HttpResponse(make_json_respond('FAIL'))

    enableds = mgr.user.enabled_treasures(user)
    if treasure not in enableds:
        mgr.log.add('use treasure', 'treasure: %s, not in enabled list' % treasure, user, user_ip)
        return HttpResponse(make_json_respond('FAIL'))

    mgr.user.use_treasure(user, treasure)

    mgr.log.add('use treasure', 'treasure: %s' % treasure, user, user_ip)
    return HttpResponse(make_json_respond('OKAY'))
コード例 #16
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def treasure_image(request):
    gag_id, user, user_ip, is_valid = get_basic_info(request)
    if not is_valid:
        mgr.log.add('treasure image', 'invalid', user, user_ip)
        return HttpResponse(make_json_respond('INVALID'))

    treasure = request.GET.get('treasure', None)

    availables = [item['id'] for item in treasures.info]

    if treasure not in availables:
        mgr.log.add('avatar image', 'no such treasure: %s' % treasure, user, user_ip)
        blank = 'R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='
        return HttpResponse(blank.decode('base64'), mimetype='image/gif')

    enableds = mgr.user.enabled_treasures(user)
    suffix = 'enabled' if treasure in enableds else 'disabled'

    fname = 'crowd_lookup/images/treasures/' + treasure + '-treasure-' + suffix + '.png'
    fr = open(fname)
    mgr.log.add('treasure image', 'treasure: %s' % treasure, user, user_ip)
    return HttpResponse(fr.read(), mimetype='image/png')
コード例 #17
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def test(request):
    import browser
    word_str = request.GET.get('word_str', '')
    youtube = browser.YouTube()
    return HttpResponse(make_json_respond('OKAY', [youtube.query(word_str)]))
コード例 #18
0
ファイル: views.py プロジェクト: johnlinp/9gag-lookup-server
def new_user(request):
    user_id, user_key, user_name = gen_user_info()
    mgr.user.create(user_id, user_key, user_name)
    mgr.log.add('generate new user', 'user_id: %s' % user_id, user_ip=get_client_ip(request))
    return HttpResponse(make_json_respond('OKAY', {'id': user_id, 'key': user_key}))