def dump(self, groupname=None, role_type=None): if not groupname: stmt = select( [ People.privacy, People.username, People.email, People.human_name, "'user'", 's.sponsored' ], from_obj=PeopleTable.outerjoin( select([ PersonRoles.sponsor_id, func.count(PersonRoles.sponsor_id).label('sponsored') ]).group_by(PersonRoles.sponsor_id).correlate().alias( 's'))).order_by(People.username) else: stmt = select( [ People.privacy, People.username, People.email, People.human_name, PersonRoles.role_type, 's.sponsored' ], from_obj=GroupsTable.join(PersonRolesTable).join( PeopleTable, onclause=PeopleTable.c.id == PersonRolesTable.c.person_id). outerjoin( select([ PersonRoles.sponsor_id, func.count(PersonRoles.sponsor_id).label('sponsored') ]).where( and_(PersonRoles.group_id == Groups.id, Groups.name == groupname)).group_by( PersonRoles.sponsor_id).correlate().alias('s') )).where( and_(Groups.name == groupname, PersonRoles.role_status == 'approved')).order_by( People.username) people = [] if identity.in_any_group(config.get('admingroup', 'accounts'), config.get('systemgroup', 'fas-system')): user = '******' elif identity.current.anonymous: user = '******' else: user = '******' username = identity.current.user_name for row in stmt.execute(): person = list(row[1:]) if not row['sponsored']: person[-1] = 0 if row['privacy'] and user != 'admin' \ and username != row['username']: # filter private data person[2] = u'' people.append(person) return dict(people=people)
def dump(self, groupname=None, role_type=None): if not groupname: stmt = select([People.privacy, People.username, People.email, People.human_name, "'user'", 's.sponsored'], from_obj=PeopleTable.outerjoin(select([PersonRoles.sponsor_id, func.count(PersonRoles.sponsor_id).label('sponsored')] ).group_by(PersonRoles.sponsor_id ).correlate().alias('s') )).order_by(People.username) else: stmt = select([People.privacy, People.username, People.email, People.human_name, PersonRoles.role_type, 's.sponsored'], from_obj=GroupsTable.join(PersonRolesTable).join(PeopleTable, onclause=PeopleTable.c.id==PersonRolesTable.c.person_id ).outerjoin(select([PersonRoles.sponsor_id, func.count(PersonRoles.sponsor_id).label('sponsored')] ).where(and_( PersonRoles.group_id==Groups.id, Groups.name==groupname)).group_by( PersonRoles.sponsor_id).correlate().alias('s') )).where(and_(Groups.name==groupname, PersonRoles.role_status=='approved') ).order_by(People.username) people = [] if identity.in_any_group(config.get('admingroup', 'accounts'), config.get('systemgroup', 'fas-system')): user = '******' elif identity.current.anonymous: user = '******' else: user = '******' username = identity.current.user_name for row in stmt.execute(): person = list(row[1:]) if not row['sponsored']: person[-1] = 0 if row['privacy'] and user != 'admin' \ and username != row['username']: # filter private data person[2] = u'' people.append(person) return dict(people=people)