root / snf-astakos-app / astakos / im / management / commands / user-list.py @ def409e0
History | View | Annotate | Download (4.7 kB)
1 | 2a6fc999 | Giorgos Korfiatis | # Copyright 2012, 2013 GRNET S.A. All rights reserved.
|
---|---|---|---|
2 | df48dd1b | Giorgos Verigakis | #
|
3 | df48dd1b | Giorgos Verigakis | # Redistribution and use in source and binary forms, with or
|
4 | df48dd1b | Giorgos Verigakis | # without modification, are permitted provided that the following
|
5 | df48dd1b | Giorgos Verigakis | # conditions are met:
|
6 | df48dd1b | Giorgos Verigakis | #
|
7 | df48dd1b | Giorgos Verigakis | # 1. Redistributions of source code must retain the above
|
8 | df48dd1b | Giorgos Verigakis | # copyright notice, this list of conditions and the following
|
9 | df48dd1b | Giorgos Verigakis | # disclaimer.
|
10 | df48dd1b | Giorgos Verigakis | #
|
11 | df48dd1b | Giorgos Verigakis | # 2. Redistributions in binary form must reproduce the above
|
12 | df48dd1b | Giorgos Verigakis | # copyright notice, this list of conditions and the following
|
13 | df48dd1b | Giorgos Verigakis | # disclaimer in the documentation and/or other materials
|
14 | df48dd1b | Giorgos Verigakis | # provided with the distribution.
|
15 | df48dd1b | Giorgos Verigakis | #
|
16 | df48dd1b | Giorgos Verigakis | # THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
|
17 | df48dd1b | Giorgos Verigakis | # OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
18 | df48dd1b | Giorgos Verigakis | # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
19 | df48dd1b | Giorgos Verigakis | # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
|
20 | df48dd1b | Giorgos Verigakis | # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
21 | df48dd1b | Giorgos Verigakis | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
22 | df48dd1b | Giorgos Verigakis | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
23 | df48dd1b | Giorgos Verigakis | # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
|
24 | df48dd1b | Giorgos Verigakis | # AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
25 | df48dd1b | Giorgos Verigakis | # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
26 | df48dd1b | Giorgos Verigakis | # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
27 | df48dd1b | Giorgos Verigakis | # POSSIBILITY OF SUCH DAMAGE.
|
28 | df48dd1b | Giorgos Verigakis | #
|
29 | df48dd1b | Giorgos Verigakis | # The views and conclusions contained in the software and
|
30 | df48dd1b | Giorgos Verigakis | # documentation are those of the authors and should not be
|
31 | df48dd1b | Giorgos Verigakis | # interpreted as representing official policies, either expressed
|
32 | df48dd1b | Giorgos Verigakis | # or implied, of GRNET S.A.
|
33 | df48dd1b | Giorgos Verigakis | |
34 | df48dd1b | Giorgos Verigakis | from optparse import make_option |
35 | df48dd1b | Giorgos Verigakis | |
36 | fc5138f0 | Sofia Papagiannaki | from astakos.im.models import AstakosUser |
37 | 7cfc0cef | Christos Stavrakakis | from snf_django.management.commands import ListCommand |
38 | df48dd1b | Giorgos Verigakis | |
39 | df48dd1b | Giorgos Verigakis | |
40 | ffb5cca1 | Sofia Papagiannaki | def get_providers(user): |
41 | ffb5cca1 | Sofia Papagiannaki | return ','.join( |
42 | ffb5cca1 | Sofia Papagiannaki | [unicode(auth) for auth in user.auth_providers.filter(active=True)] |
43 | ffb5cca1 | Sofia Papagiannaki | ) |
44 | ffb5cca1 | Sofia Papagiannaki | |
45 | ffb5cca1 | Sofia Papagiannaki | |
46 | ffb5cca1 | Sofia Papagiannaki | def get_groups(user): |
47 | ffb5cca1 | Sofia Papagiannaki | return ','.join(user.groups.all().values_list('name', flat=True)) |
48 | ffb5cca1 | Sofia Papagiannaki | |
49 | ffb5cca1 | Sofia Papagiannaki | |
50 | fc5138f0 | Sofia Papagiannaki | class Command(ListCommand): |
51 | df48dd1b | Giorgos Verigakis | help = "List users"
|
52 | 5ce3ce4f | Sofia Papagiannaki | |
53 | fc5138f0 | Sofia Papagiannaki | object_class = AstakosUser |
54 | fc5138f0 | Sofia Papagiannaki | |
55 | fc5138f0 | Sofia Papagiannaki | FIELDS = { |
56 | fc5138f0 | Sofia Papagiannaki | 'id': ('id', ('The id of the user')), |
57 | fc5138f0 | Sofia Papagiannaki | 'real name': ('realname', 'The name of the user'), |
58 | fc5138f0 | Sofia Papagiannaki | 'active': ('is_active', 'Whether the user is active or not'), |
59 | e7cb4085 | Kostas Papadimitriou | 'verified':
|
60 | e7cb4085 | Kostas Papadimitriou | ('email_verified', 'Whether the user has a verified email address'), |
61 | e7cb4085 | Kostas Papadimitriou | 'moderated':
|
62 | e7cb4085 | Kostas Papadimitriou | ('moderated', 'Account moderated'), |
63 | fc5138f0 | Sofia Papagiannaki | 'admin': ('is_superuser', 'Whether the user is admin or not'), |
64 | fc5138f0 | Sofia Papagiannaki | 'uuid': ('uuid', 'The uuid of the user'), |
65 | fc5138f0 | Sofia Papagiannaki | 'providers': (get_providers,
|
66 | fc5138f0 | Sofia Papagiannaki | 'The authentication providers of the user'),
|
67 | fc5138f0 | Sofia Papagiannaki | 'activation_sent': ('activation_sent', |
68 | fc5138f0 | Sofia Papagiannaki | 'The date activation sent to the user'),
|
69 | fc5138f0 | Sofia Papagiannaki | 'displayname': ('username', 'The display name of the user'), |
70 | fc5138f0 | Sofia Papagiannaki | 'groups': (get_groups, 'The groups of the user') |
71 | fc5138f0 | Sofia Papagiannaki | } |
72 | fc5138f0 | Sofia Papagiannaki | |
73 | e7cb4085 | Kostas Papadimitriou | fields = ['id', 'real name', 'active', 'verified', 'moderated', 'admin', |
74 | e7cb4085 | Kostas Papadimitriou | 'uuid']
|
75 | fc5138f0 | Sofia Papagiannaki | |
76 | fc5138f0 | Sofia Papagiannaki | option_list = ListCommand.option_list + ( |
77 | 9d20fe23 | Kostas Papadimitriou | make_option('--auth-providers',
|
78 | 9d20fe23 | Kostas Papadimitriou | action='store_true',
|
79 | 9d20fe23 | Kostas Papadimitriou | dest='auth_providers',
|
80 | 9d20fe23 | Kostas Papadimitriou | default=False,
|
81 | 9d20fe23 | Kostas Papadimitriou | help="Display user authentication providers"),
|
82 | 9d20fe23 | Kostas Papadimitriou | make_option('--group',
|
83 | 9d20fe23 | Kostas Papadimitriou | action='append',
|
84 | 9d20fe23 | Kostas Papadimitriou | dest='groups',
|
85 | 9d20fe23 | Kostas Papadimitriou | default=None,
|
86 | 9d20fe23 | Kostas Papadimitriou | help="Only show users that belong to the specified goups"),
|
87 | 56b9989a | Giorgos Korfiatis | make_option('--active',
|
88 | 56b9989a | Giorgos Korfiatis | action='store_true',
|
89 | 56b9989a | Giorgos Korfiatis | dest='active',
|
90 | 56b9989a | Giorgos Korfiatis | default=False,
|
91 | 56b9989a | Giorgos Korfiatis | help="Display only active users"),
|
92 | e7cb4085 | Kostas Papadimitriou | make_option('--pending-moderation',
|
93 | e7cb4085 | Kostas Papadimitriou | action='store_true',
|
94 | e7cb4085 | Kostas Papadimitriou | dest='pending_moderation',
|
95 | e7cb4085 | Kostas Papadimitriou | default=False,
|
96 | e7cb4085 | Kostas Papadimitriou | help="Display unmoderated users"),
|
97 | e7cb4085 | Kostas Papadimitriou | make_option('--pending-verification',
|
98 | e7cb4085 | Kostas Papadimitriou | action='store_true',
|
99 | e7cb4085 | Kostas Papadimitriou | dest='pending_verification',
|
100 | e7cb4085 | Kostas Papadimitriou | default=False,
|
101 | e7cb4085 | Kostas Papadimitriou | help="Display unverified users"),
|
102 | fc5138f0 | Sofia Papagiannaki | make_option("--displayname",
|
103 | fc5138f0 | Sofia Papagiannaki | dest="displayname",
|
104 | fc5138f0 | Sofia Papagiannaki | action="store_true",
|
105 | fc5138f0 | Sofia Papagiannaki | default=False,
|
106 | fc5138f0 | Sofia Papagiannaki | help="Display user displayname")
|
107 | 5ce3ce4f | Sofia Papagiannaki | ) |
108 | 5ce3ce4f | Sofia Papagiannaki | |
109 | fc5138f0 | Sofia Papagiannaki | def handle_args(self, *args, **options): |
110 | fc5138f0 | Sofia Papagiannaki | if options['active']: |
111 | fc5138f0 | Sofia Papagiannaki | self.filters['is_active'] = True |
112 | 56b9989a | Giorgos Korfiatis | |
113 | e7cb4085 | Kostas Papadimitriou | if options['pending_moderation']: |
114 | e7cb4085 | Kostas Papadimitriou | self.filters['email_verified'] = True |
115 | e7cb4085 | Kostas Papadimitriou | self.filters['moderated'] = False |
116 | e7cb4085 | Kostas Papadimitriou | |
117 | e7cb4085 | Kostas Papadimitriou | if options['pending_verification']: |
118 | e7cb4085 | Kostas Papadimitriou | self.filters['email_verified'] = False |
119 | e7cb4085 | Kostas Papadimitriou | |
120 | fc5138f0 | Sofia Papagiannaki | if options['auth_providers']: |
121 | fc5138f0 | Sofia Papagiannaki | self.fields.extend(['providers']) |
122 | 56b9989a | Giorgos Korfiatis | |
123 | fc5138f0 | Sofia Papagiannaki | if options['displayname']: |
124 | fc5138f0 | Sofia Papagiannaki | self.fields.extend(['displayname']) |