コード例 #1
0
ファイル: group.py プロジェクト: last-resort-gaming/LRG-YAINA
    def members(self, expand=False):
        r = []

        for row in DB.get().execute(
                """
            SELECT users.name,users.steamid,zeus_trained
            FROM members
            JOIN users
            ON members.steamid = users.steamid
            WHERE members.groupid=?
            ORDER BY users.name
        """, [self.id]):
            r.append(User(*row))

        for row in DB.get().execute(
                """
            SELECT groups.idx,groups.name,groups.immutable
            FROM members_group
            JOIN groups
            ON members_group.groupid_c = groups.idx
            WHERE members_group.groupid_p =?
            ORDER BY groups.name
        """, [self.id]):
            g = Group(*row)
            if expand:
                for member in g.members(expand):
                    r.append(member)
            else:
                r.append(g)

        return r
コード例 #2
0
ファイル: user.py プロジェクト: last-resort-gaming/LRG-YAINA
 def getAllUsers():
     r = []
     for row in DB.get().execute("""
         SELECT name,steamid,zeus_trained
         FROM users
         ORDER BY lower(name)
     """):
         r.append(User(*row))
     return r
コード例 #3
0
ファイル: group.py プロジェクト: last-resort-gaming/LRG-YAINA
 def getAllGroups():
     r = []
     for row in DB.get().execute("""
         SELECT idx,name,immutable
         FROM groups
         ORDER BY name
     """):
         r.append(Group(*row))
     return r
コード例 #4
0
ファイル: group.py プロジェクト: last-resort-gaming/LRG-YAINA
    def delete(self):
        if self.immutable:
            raise RuntimeError('Unable to delete immutable group')

        c = DB.get()
        c.execute('DELETE FROM members WHERE groupid=?', [self.id])
        c.execute('DELETE FROM permissions_map WHERE groupid=?', [self.id])
        c.execute('DELETE FROM groups WHERE idx=?', [self.id])
        c.commit()
コード例 #5
0
ファイル: user.py プロジェクト: last-resort-gaming/LRG-YAINA
    def getUser(steamid):
        row = DB.get().execute(
            """
            SELECT name,steamid,zeus_trained
            FROM users
            WHERE steamid=?
        """, [steamid]).fetchone()

        if row is None:
            return

        return User(*row)
コード例 #6
0
ファイル: group.py プロジェクト: last-resort-gaming/LRG-YAINA
    def permissions(self):
        perms = []
        for row in DB.get().execute(
                """
            SELECT providers.idx, providers.name, permissions.permission
            FROM permissions_map
            JOIN permissions
                ON permissions_map.permission = permissions.idx
            JOIN providers
                ON permissions.provider = providers.idx
            WHERE permissions_map.groupid = ?
        """, [self.id]):
            perms.append(Permission(*row))

        return perms
コード例 #7
0
    def write(self):
        """
        Write output files
        """
        print "Updating Outputs"

        # First we get all the groups, then iterate the members and bundle our permissions
        build = dict()
        for g in Group.getAllGroups():
            perms = g.permissions()

            for n in g.members(True):

                # Append all the permissions
                steamid = str(n.steamid)
                if steamid not in build:
                    build[steamid] = {
                        'name': n.name,
                        'beguid': n.beguid,
                        'providers': {}
                    }

                for p in perms:
                    provider = str(p.provider).lower()
                    if provider not in build[steamid]['providers']:
                        build[steamid]['providers'][provider] = []
                    build[steamid]['providers'][provider].append(
                        str(p.permission))

        outputs = dict()
        for row in DB.get().execute('SELECT id,path FROM paths'):
            outputs[row[0]] = row[1]

        if 'yaina_ini' in outputs:
            self.write_yaina_ini(outputs['yaina_ini'], build)
        else:
            print "yaina_ini path not set"

        # We need both the groups + admin file for BEC
        if 'bec_admins' in outputs:
            self.write_bec_files(outputs['bec_admins'], build)
        else:
            print "I need both teh BEC admins and groups file to be set to build outputs"
コード例 #8
0
ファイル: user.py プロジェクト: last-resort-gaming/LRG-YAINA
 def delete(self):
     c = DB.get()
     c.execute('DELETE FROM members WHERE steamid=?', [self.steamid])
     c.execute('DELETE FROM users WHERE steamid=?', [self.steamid])
     c.commit()
コード例 #9
0
ファイル: user.py プロジェクト: last-resort-gaming/LRG-YAINA
 def _update(self, k, v):
     print 'UPDATE users SET %s=%s WHERE steamid=%s' % (k, v, self.steamid)
     DB.get().execute('UPDATE users SET %s=? WHERE steamid=?' % k,
                      (v, self.steamid))
     DB.get().commit()
コード例 #10
0
ファイル: user.py プロジェクト: last-resort-gaming/LRG-YAINA
 def add_user(name, steamid):
     c = DB.get()
     c.execute('INSERT INTO users (name,steamid) VALUES (?, ?)',
               [name, steamid])
     c.commit()
コード例 #11
0
ファイル: group.py プロジェクト: last-resort-gaming/LRG-YAINA
 def add_group(name):
     DB.get().execute('INSERT INTO groups(name) VALUES (?)', [name])
     DB.get().commit()