--- a/ckanext/example/controller.py +++ b/ckanext/example/controller.py @@ -1,1 +1,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() +