~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:38:33 UTC
  • Revision ID: grantw@unimelb.edu.au-20100224013833-u3hff23a3wbwsa9q
Refactor UserEditView 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(XHTMLView):
 
52
class UserEditView(BaseFormView):
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
 
    def filter(self, stream, ctx):
59
 
        return stream | HTMLFormFiller(data=ctx['data'])
 
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
60
72
 
61
73
    def populate(self, 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
 
 
 
74
        super(UserEditView, self).populate(req, ctx)
80
75
        ctx['format_datetime'] = ivle.date.make_date_nice
81
76
        ctx['format_datetime_short'] = ivle.date.format_datetime_for_paragraph
82
77
 
83
 
        ctx['req'] = req
84
 
        ctx['user'] = self.context
85
 
        ctx['data'] = data
86
 
        ctx['errors'] = errors
87
78
 
88
79
class UserAdminSchema(formencode.Schema):
89
80
    admin = formencode.validators.StringBoolean(if_missing=False)
129
120
                                 if data['studentid'] else None
130
121
        return self.context
131
122
 
132
 
 
133
123
    def populate(self, req, ctx):
134
124
        super(UserAdminView, self).populate(req, ctx)
135
125