Ejemplo n.º 1
0
def invite_decline(inviteid):
    my_id = session['my_id']
    invite = invites.get_invite_by_id(inviteid)
    if not invite:
        abort(404)

    if invite['user_id'] != my_id:
        abort(404)

    invites.del_invite_by_id(inviteid)
    db.get_conn().commit()
    return json.dumps(True)
Ejemplo n.º 2
0
    def run(self):

        alliance_query = alliances.AllianceQuery()
        all_alliances = alliance_query.getAll()
        alliances_names = [item["shortname"] for item in all_alliances]
        users_with_alliance = users.UserQuery().find_name_by_alliances(
            alliances_names)

        query = "SELECT id FROM room_imports WHERE status LIKE 'complete' ORDER BY started_at DESC"
        result = db.find_one(query)
        self.room_import_id = result[0]

        self.conn = get_conn()
        self.start()
        print(self.id)

        for alliance in all_alliances:
            users_with_alliance = self.find_name_by_alliances(alliances_names)
            members = [
                user['name'] for user in users_with_alliance
                if user['alliance'] == alliance['shortname']
            ]
            filtered_members = [
                user for user in members
                if self.get_player_room_count(user) > 0
            ]

            # Not enough members.
            if len(filtered_members) < 2:
                continue

            # Not enough rooms
            if self.get_room_count(alliance['shortname']) < 2:
                continue

            rcl = self.getAllianceRCL(alliance['shortname'])

            combined_gcl = sum(
                self.getUserGCL(user) for user in filtered_members)
            control = sum(
                getUserControlPoints(user) for user in filtered_members)
            alliance_gcl = self.convertGcl(control)

            combined_power = sum(
                self.getUserPowerLevel(user) for user in filtered_members)
            power = sum(getUserPowerPoints(user) for user in filtered_members)
            alliance_power = self.convertPowerToLevel(power)

            spawns = self.getAllianceSpawns(alliance['shortname'])
            print('%s- %s, %s, %s, %s, %s, %s, %s' %
                  (alliance['shortname'],
                   combined_gcl, alliance_gcl, rcl, spawns,
                   len(filtered_members), alliance_power, combined_power))

            self.update(alliance['shortname'],
                        alliance_gcl, combined_gcl, rcl, spawns,
                        len(filtered_members), alliance_power, combined_power)

        self.finish()
        self.conn.commit()
Ejemplo n.º 3
0
def find_by_shortname(name):
    import psycopg2.extras

    conn = db.get_conn()
    cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
    query = "SELECT * FROM alliances where shortname=%s"
    cursor.execute(query, (name, ))
    result = cursor.fetchone()
    return result
Ejemplo n.º 4
0
def auth(token):
    query = "SELECT ign, id, screeps_id FROM users WHERE login_code=%s"
    conn = get_conn()
    cursor = conn.cursor()
    cursor.execute(query, (token, ))
    row = cursor.fetchone()
    if (row is not None):
        session['username'] = row[0]
        session['my_id'] = row[1]
        session['screeps_id'] = row[2]
    return redirect(url_for('index'))
Ejemplo n.º 5
0
def invite_accept(inviteid):

    my_id = session['my_id']

    invite = invites.get_invite_by_id(inviteid)
    if not invite:
        abort(404)
    if invite['user_id'] != my_id:
        abort(404)

    # Add user to appropriate alliance.
    users_model.update_alliance_by_user_id(my_id, invite['alliance'])

    # Remove all pending invites from user.
    invites.del_invites_by_user(my_id)

    db.get_conn().commit()

    # Return true
    return json.dumps(True)
Ejemplo n.º 6
0
 def auth_token(self, name):
     id = self.id_from_name(name)
     token = None
     if id is not None:
         token = self.random_token()
         query = "UPDATE users SET login_code=%s, login_code_created_at=%s WHERE screeps_id=%s"
         conn = get_conn()
         cursor = conn.cursor()
         cursor.execute(query, (token, datetime.datetime.utcnow(), id))
         conn.commit()
     return (id, token)
Ejemplo n.º 7
0
def create_an_alliance(user_id, fullname, shortname, color='#000000'):
    conn = db.get_conn()
    try:
        query = "INSERT INTO alliances(fullname, shortname, color) VALUES(%s, %s, %s)"
        cursor = conn.cursor()
        cursor.execute(query, (fullname, shortname, color))

        query = "UPDATE users SET alliance = %s WHERE id = %s"
        cursor.execute(query, (shortname, user_id))

        conn.commit()
    except (e):
        conn.rollback()
Ejemplo n.º 8
0
def get_player_room_count(player):
    query = '''
    SELECT COUNT(DISTINCT rooms.name)
          FROM rooms,users
          WHERE rooms.owner=users.id
              AND users.ign=%s
              AND rooms.import = (SELECT id
                                      FROM room_imports
                                      ORDER BY id desc
                                      LIMIT 1
                                  );
    '''
    conn = get_conn()
    cursor = conn.cursor()
    cursor.execute(query, (player,))
    result = cursor.fetchone()
    return int(result[0])
Ejemplo n.º 9
0
    def update(self, user_id, username, room, level, shard):
        # Store info in db
        query = "SELECT id FROM users WHERE screeps_id = %s"
        conn = get_conn()
        cursor = conn.cursor()
        cursor.execute(query, (user_id, ))
        row = cursor.fetchone()
        if (row is None):
            query = "INSERT INTO users(ign, screeps_id) VALUES (%s, %s) RETURNING id"
            cursor.execute(query, (username, user_id))
            id = cursor.fetchone()[0]
        else:
            id = row[0]

        s = re.search("\d+$", shard)
        shard_id = s.group(0)
        query = "INSERT INTO rooms(import, name, level, owner, shard) VALUES(%s, %s, %s, %s, %s)"
        cursor.execute(query, (self.id, room, level, id, shard_id))
Ejemplo n.º 10
0
    def run(self):
        self.start()
        api = get_client()
        shards = api.get_shards()

        for shard in shards:
            click.echo('Importing from %s' % (shard,))
            queue = []
            user_map = {}
            roomCount = 0
            api_worldsize = api.worldsize(shard)
            maxroom = int((api_worldsize['width']-2)/2)
            for x in range(1, maxroom + 1):
                for y in range(1, maxroom + 1):
                    for horizontal in ['E', 'W']:
                        for vertical in ['N', 'S']:
                            room = "%s%s%s%s" % (horizontal, x, vertical, y)
                            if self.isNPC(room):
                                continue
                            queue.append(room)
                    if len(queue) < self.queueLimit:
                        if y < maxroom or x < maxroom:
                            continue
                    room_statistics = api.map_stats(queue, 'claim0', shard)
                    roomCount += self.queueLimit
                    click.echo(str(roomCount) + " rooms requested")
                    #self.calls = self.calls + 1
                    queue = []

                    for id, user_info in room_statistics['users'].items():
                        username = user_info['username']
                        user_map[id] = username

                    for room, statistics in room_statistics['stats'].items():
                        if 'own' in statistics:
                            if 'user' in statistics['own']:
                                user_id = statistics['own']['user']
                                level = statistics['own']['level']
                                self.update(user_id, user_map[user_id], room, level, shard)

        conn = get_conn()
        self.finish()
        conn.commit()
Ejemplo n.º 11
0
def del_invites_by_alliance(alliance):
    query = "DELETE FROM alliance_invites WHERE alliance=(%s)"
    conn = db.get_conn()
    cursor = conn.cursor()
    return cursor.execute(query, (alliance, ))
Ejemplo n.º 12
0
 def clear(self):
     conn = get_conn()
     cursor = conn.cursor()
     cursor.execute("DELETE FROM rooms;")
Ejemplo n.º 13
0
def insert_username_with_id(name, id):
    query = "INSERT INTO users(ign, screeps_id) VALUES(%s, %s)"
    conn = db.get_conn()
    cursor = conn.cursor()
    cursor.execute(query, (name, id))
    conn.commit()
Ejemplo n.º 14
0
def del_invite_by_id(id):
    query = "DELETE FROM alliance_invites WHERE id=(%s)"
    conn = db.get_conn()
    cursor = conn.cursor()
    return cursor.execute(query, (id, ))
Ejemplo n.º 15
0
def del_invites_by_user(user):
    query = "DELETE FROM alliance_invites WHERE user_id=(%s)"
    conn = db.get_conn()
    cursor = conn.cursor()
    return cursor.execute(query, (user, ))
Ejemplo n.º 16
0
 def finish(self):
     # import, timestamp, status
     query = "UPDATE room_imports SET status='complete' WHERE id=(%s)"
     conn = get_conn()
     cursor = conn.cursor()
     cursor.execute(query, (self.id, ))
Ejemplo n.º 17
0
 def start(self):
     query = "INSERT INTO room_imports(status) VALUES ('in progress') RETURNING id"
     conn = get_conn()
     cursor = conn.cursor()
     cursor.execute(query)
     self.id = cursor.fetchone()[0]