~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to ivle/webapp/admin/user.py

  • Committer: Matt Giuca
  • Date: 2010-02-04 03:08:35 UTC
  • Revision ID: matt.giuca@gmail.com-20100204030835-epwx6qs5ippwopl5
Tags: 1.0beta1
Added subversion dumps as part of sample data. ivle-loadsampledata loads these dumps, so the sample data now comes with sample files (requiring a checkout).

Show diffs side-by-side

added added

removed removed

Lines of Context:
35
35
class UsersView(XHTMLView):
36
36
    """A list of all IVLE users."""
37
37
    template = 'templates/users.html'
38
 
    tab = 'users'
39
38
    breadcrumb_text = 'Users'
40
39
 
41
40
    def authorize(self, req):
42
 
        return req.user and req.user.admin
 
41
        return req.user.admin
43
42
 
44
43
    def populate(self, req, ctx):
45
44
        ctx['req'] = req
79
78
class UserEditView(XHTMLView):
80
79
    """A form to change a user's details."""
81
80
    template = 'templates/user-edit.html'
82
 
    tab = 'users'
 
81
    tab = 'settings'
83
82
    permission = 'edit'
84
83
 
85
84
    def filter(self, stream, ctx):
114
113
 
115
114
class UserAdminSchema(formencode.Schema):
116
115
    admin = formencode.validators.StringBoolean(if_missing=False)
117
 
    disabled = formencode.validators.StringBoolean(if_missing=False)
118
116
    fullname = formencode.validators.UnicodeString(not_empty=True)
119
117
    studentid = formencode.validators.UnicodeString(not_empty=False,
120
118
                                                    if_missing=None
123
121
class UserAdminView(XHTMLView):
124
122
    """A form for admins to change more of a user's details."""
125
123
    template = 'templates/user-admin.html'
126
 
    tab = 'users'
 
124
    tab = 'settings'
127
125
 
128
126
    def authorize(self, req):
129
127
        """Only allow access if the requesting user is an admin."""
130
 
        return req.user and req.user.admin
 
128
        return req.user.admin
131
129
 
132
130
    def filter(self, stream, ctx):
133
131
        return stream | HTMLFormFiller(data=ctx['data'])
139
137
                validator = UserAdminSchema()
140
138
                data = validator.to_python(data, state=req)
141
139
 
142
 
                if self.context is req.user:
143
 
                    # Admin checkbox is disabled -- assume unchanged
144
 
                    data['admin'] = self.context.admin
145
 
                    data['disabled'] = self.context.state == u'disabled'
146
 
                else:
147
 
                    self.context.admin = data['admin']
148
 
                    if self.context.state in (u'enabled', u'disabled'):
149
 
                        self.context.state = (u'disabled' if data['disabled']
150
 
                                else u'enabled')
 
140
                self.context.admin = data['admin']
151
141
                self.context.fullname = data['fullname'] \
152
142
                                        if data['fullname'] else None
153
143
                self.context.studentid = data['studentid'] \
158
148
                errors = e.unpack_errors()
159
149
        else:
160
150
            data = {'admin': self.context.admin,
161
 
                    'disabled': self.context.state == u'disabled',
162
151
                    'fullname': self.context.fullname,
163
152
                    'studentid': self.context.studentid,
164
153
                   }
166
155
 
167
156
        ctx['req'] = req
168
157
        ctx['user'] = self.context
169
 
        # Disable the Admin checkbox if editing oneself
170
 
        ctx['disable_admin'] = self.context is req.user
171
158
        ctx['data'] = data
172
159
        ctx['errors'] = errors
173
160
 
174
161
class PasswordChangeView(XHTMLView):
175
162
    """A form to change a user's password, with knowledge of the old one."""
176
163
    template = 'templates/user-password-change.html'
177
 
    tab = 'users'
 
164
    tab = 'settings'
178
165
    permission = 'edit'
179
166
 
180
167
    def authorize(self, req):
208
195
class PasswordResetView(XHTMLView):
209
196
    """A form to reset a user's password, without knowledge of the old one."""
210
197
    template = 'templates/user-password-reset.html'
211
 
    tab = 'users'
 
198
    tab = 'settings'
212
199
 
213
200
    def authorize(self, req):
214
201
        """Only allow access if the requesting user is an admin."""
215
 
        return req.user and req.user.admin
 
202
        return req.user.admin
216
203
 
217
204
    def populate(self, req, ctx):
218
205
        error = None
245
232
             (ivle.database.User, '+index', UserRESTView, 'api'),
246
233
             ]
247
234
 
248
 
    tabs = [
249
 
        ('users', 'Users', 'Display and edit all users',
250
 
         'users.png', 'users', 90, True)
251
 
    ]
252
 
 
253
235
    public_forward_routes = forward_routes
254
236
    public_reverse_routes = reverse_routes
255
237