|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | import sys from ckan.lib.base import request from ckan.lib.base import c, g, h from ckan.lib.base import model from ckan.lib.base import render from ckan.lib.base import _ from ckan.controllers.user import UserController class CustomUserController(UserController): """This controller is an example to show how you might extend or override core CKAN behaviour from an extension package. It duplicates functionality in the core CKAN UserController's register function, but extends it to make an email address mandatory. """ def custom_register(self): if request.method == 'POST': # custom validation that requires an email address error = False c.email = request.params.getone('email') c.login = request.params.getone('login') if not model.User.check_name_available(c.login): error = True h.flash_error(_("That username is not available.")) if not c.email: error = True h.flash_error(_("You must supply an email address.")) try: self._get_form_password() except ValueError, ve: h.flash_error(ve) error = True if error: return render('user/register.html') # now delegate to core CKAN register method return self.register() |