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
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
def getAllGroups(): r = [] for row in DB.get().execute(""" SELECT idx,name,immutable FROM groups ORDER BY name """): r.append(Group(*row)) return r
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()
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)
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
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"
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()
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()
def add_user(name, steamid): c = DB.get() c.execute('INSERT INTO users (name,steamid) VALUES (?, ?)', [name, steamid]) c.commit()
def add_group(name): DB.get().execute('INSERT INTO groups(name) VALUES (?)', [name]) DB.get().commit()