[refactor][m]: rename extension from exampletheme to example as per new repository name.
[ckanext-datagovau.git] / ckanext / example / controller.py
blob:a/ckanext/example/controller.py -> blob:b/ckanext/example/controller.py
--- 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()
+