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

« back to all changes in this revision

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

  • Committer: William Grant
  • Date: 2010-02-24 01:32:50 UTC
  • Revision ID: grantw@unimelb.edu.au-20100224013250-3pfbslg7a5i2eb8g
Refactor UserAdminView to use BaseFormView.

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
    email = formencode.validators.Email(not_empty=False,
50
50
                                        if_missing=None)
51
51
 
52
 
class UserEditView(BaseFormView):
 
52
class UserEditView(XHTMLView):
53
53
    """A form to change a user's details."""
54
54
    template = 'templates/user-edit.html'
55
55
    tab = 'users'
56
56
    permission = 'edit'
57
57
 
58
 
    @property
59
 
    def validator(self):
60
 
        return UserEditSchema()
61
 
 
62
 
    def get_default_data(self, req):
63
 
        return {'nick': self.context.nick,
64
 
                'email': self.context.email
65
 
                }
66
 
 
67
 
    def save_object(self, req, data):
68
 
        self.context.nick = data['nick']
69
 
        self.context.email = unicode(data['email']) if data['email'] \
70
 
                             else None
71
 
        return self.context
 
58
    def filter(self, stream, ctx):
 
59
        return stream | HTMLFormFiller(data=ctx['data'])
72
60
 
73
61
    def populate(self, req, ctx):
74
 
        super(UserEditView, self).populate(req, ctx)
 
62
        if req.method == 'POST':
 
63
            data = dict(req.get_fieldstorage())
 
64
            try:
 
65
                validator = UserEditSchema()
 
66
                data = validator.to_python(data, state=req)
 
67
                self.context.nick = data['nick']
 
68
                self.context.email = unicode(data['email']) if data['email'] \
 
69
                                     else None
 
70
                req.store.commit()
 
71
                req.throw_redirect(req.uri)
 
72
            except formencode.Invalid, e:
 
73
                errors = e.unpack_errors()
 
74
        else:
 
75
            data = {'nick': self.context.nick,
 
76
                    'email': self.context.email
 
77
                   }
 
78
            errors = {}
 
79
 
75
80
        ctx['format_datetime'] = ivle.date.make_date_nice
76
81
        ctx['format_datetime_short'] = ivle.date.format_datetime_for_paragraph
77
82
 
 
83
        ctx['req'] = req
 
84
        ctx['user'] = self.context
 
85
        ctx['data'] = data
 
86
        ctx['errors'] = errors
78
87
 
79
88
class UserAdminSchema(formencode.Schema):
80
89
    admin = formencode.validators.StringBoolean(if_missing=False)
120
129
                                 if data['studentid'] else None
121
130
        return self.context
122
131
 
 
132
 
123
133
    def populate(self, req, ctx):
124
134
        super(UserAdminView, self).populate(req, ctx)
125
135