Esempio n. 1
0
    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)
Esempio n. 2
0
File: group.py Progetto: chepioq/fas
    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)