Exemplo n.º 1
0
def update_rank(uid, rank_name):
    import app.config.ranks as ranks

    #Calculate which ranks need to be set and which shouldn't be set
    passed = False
    set_ranks = []
    unset_ranks = []
    all_ranks = ranks.get_ranks()
    for r in all_ranks:
        if passed: unset_ranks.append(all_ranks[r]['role'])
        else: set_ranks.append(all_ranks[r]['role'])
        if all_ranks[r]['name'] == rank_name: passed = True

    #Generate list of new roles taking into account new rank and existing roles
    has_roles = get_roles(uid)
    patch_roles = set_ranks
    for r in has_roles:
        if not r in unset_ranks and not r in patch_roles:
            patch_roles.append(r)

    #Create JSON for PATCH req
    patch_data = ''
    for r in patch_roles:
        patch_data += '"{}",'.format(ROLES[r])
    patch_data = '{"roles":[%s]}' % (patch_data[:-1])
    _patch('/guilds/{}/members/{}'.format(app.config['GUILD_ID'], uid),
           data=patch_data)
Exemplo n.º 2
0
def view_config(file):
    if file == 'missions':
        from app.config import missions
        return render_template('admin/mission_config.html',
                               missions=missions,
                               categories=missions._categories)
    elif file == 'ranks':
        from app.config import ranks
        return render_template('admin/ranks_config.html',
                               ranks=ranks.get_ranks())
    else:
        flash('Unknow config file: {}'.format(file))
        return redirect(url_for('admin.view_containers'))
Exemplo n.º 3
0
def ranks(api=False):
    from app.config import ranks
    all_ranks = ranks.get_ranks()
    for r in all_ranks:
        all_ranks[r]['count'] = mongo.db.users.find({
            "rank":
            all_ranks[r]['name']
        }).count()

    if api:
        if '_id' in all_ranks: del all_ranks['_id']
        return jsonify({"ranks": all_ranks, "rank_order": all_ranks.keys()})

    return render_template('users/ranks.html',
                           rank_order=reversed(all_ranks),
                           ranks=all_ranks)
Exemplo n.º 4
0
def leaderboard(api=False):
    from app.config import ranks
    tmp_ranks = ranks.get_ranks()
    all_ranks = {}
    for r in tmp_ranks:
        print tmp_ranks[r]
        all_ranks[tmp_ranks[r]['name']] = tmp_ranks[r]
    from pymongo import DESCENDING
    leads = list(
        mongo.db.users.find({
            'is_staff': {
                '$exists': 0
            }
        }).sort("exp", DESCENDING).limit(10))
    staff = list(
        mongo.db.users.find({
            'is_staff': {
                '$exists': 1
            }
        }).sort("exp", DESCENDING))

    if api:
        resp_l = []
        for l in leads:
            resp_l.append({
                'id': l['id'],
                'name': l['name'],
                'rank': l['rank'],
                'exp': l['exp'],
            })
        resp_s = []
        for l in staff:
            resp_s.append({
                'id': l['id'],
                'name': l['name'],
                'rank': l['rank'],
                'exp': l['exp'],
            })
        return jsonify({"leaderboard": resp_l, "staff": resp_s})

    return render_template('users/leaderboard.html',
                           leads=leads,
                           staff=staff,
                           ranks=all_ranks)
Exemplo n.º 5
0
import os, sys
import re, subprocess
BASE_DIR = os.path.abspath(os.path.dirname(__file__) + '/../')
sys.path.insert(0, BASE_DIR)

# This script generates a roughly linear progress between
# Recruit (all noob challenges) and *** General. The *** rank
# is caluclates by taking MAX points and subtracting adv_min
# missing_adv times. Meaing *** is ~MAX - missing_adv adv missions

noob_max = 50  # Max point value for noob challenges
adv_min = 300  # Min points for advanced challenges
missing_adv = 3

from app.config import ranks
ORIGINAL = ranks.get_ranks()
ranks = ORIGINAL.keys()

from app.config import missions
MISSIONS = missions.get_missions()
start = sum([
    int(MISSIONS[m]['exp']) for m in MISSIONS
    if int(MISSIONS[m]['exp']) < noob_max
])
end = sum([int(MISSIONS[m]['exp']) for m in MISSIONS]) - (adv_min * 3)

step = step = (end - start) / (len(ORIGINAL) - 1)
new = []
new.append(start)

for i in range(len(ranks) - 2):
Exemplo n.º 6
0
            gm.extend(last)
        self._log.debug('Got %d members.', len(gm))
        return gm


import app
import sys
import app.config.ranks as ranks
logging.basicConfig(format='[%(asctime)s] [%(levelname)s] %(message)s',
                    datefmt='%H:%M:%S',
                    level=logging.DEBUG)
LOG = logging.getLogger('RerankScript')
with app.app.app_context():
    discord = DiscordClient(app.app.config['BOT_TOKEN'])
    gm = discord.guild_members(app.app.config['GUILD_ID'])
    all_ranks = ranks.get_ranks()

    members = {}
    for m in gm:
        members[m['user']['id']] = m

    #cur = app.mongo.db.users.find({"exp":{"$gt":0}})
    cur = app.mongo.db.users.find({})
    for userinfo in cur:
        needs_update = False
        if not 'rank' in userinfo:
            #Apaprently some acocunts don't even have a rank so give an empty one for now
            app.mongo.db.users.update_one({"_id": userinfo['_id']},
                                          {'$set': {
                                              "rank": ""
                                          }})