[forms] add vocab tags back to dataset view page
[ckanext-datagovau.git] / ckanext / example / forms.py
blob:a/ckanext/example/forms.py -> blob:b/ckanext/example/forms.py
--- a/ckanext/example/forms.py
+++ b/ckanext/example/forms.py
@@ -1,6 +1,5 @@
 import os
 import logging
-from pylons import tmpl_context as c
 from ckan.authz import Authorizer
 from ckan.logic.converters import convert_to_extras,\
     convert_from_extras, convert_to_tags, convert_from_tags, free_tags_only
@@ -10,7 +9,8 @@
 from ckan.plugins import IDatasetForm, IGroupForm, IConfigurer
 from ckan.plugins import IGenshiStreamFilter
 from ckan.plugins import implements, SingletonPlugin
-from ckan.lib.navl.validators import ignore_missing, keep_extras
+from ckan.lib.navl.validators import ignore_missing, keep_extras, not_empty
+import ckan.lib.plugins
 
 log = logging.getLogger(__name__)
 
@@ -29,15 +29,15 @@
       - ``IConfigurer`` allows us to override configuration normally
         found in the ``ini``-file.  Here we use it to specify where the
         form templates can be found.
-        
+
       - ``IGroupForm`` allows us to provide a custom form for a dataset
-        based on the 'type' that may be set for a group.  Where the 
-        'type' matches one of the values in group_types then this 
-        class will be used. 
+        based on the 'type' that may be set for a group.  Where the
+        'type' matches one of the values in group_types then this
+        class will be used.
     """
     implements(IGroupForm, inherit=True)
     implements(IConfigurer, inherit=True)
-    
+
     def update_config(self, config):
         """
         This IConfigurer implementation causes CKAN to look in the
@@ -49,7 +49,7 @@
                                     'example', 'theme', 'templates')
         config['extra_template_paths'] = ','.join([template_dir,
                 config.get('extra_template_paths', '')])
-            
+
     def group_form(self):
         """
         Returns a string representing the location of the template to be
@@ -75,11 +75,11 @@
         Returns true iff this provides the fallback behaviour, when no other
         plugin instance matches a group's type.
 
-        As this is not the fallback controller we should return False.  If 
+        As this is not the fallback controller we should return False.  If
         we were wanting to act as the fallback, we'd return True
         """
-        return False                
-                
+        return False
+
     def form_to_db_schema(self):
         """
         Returns the schema for mapping group data from a form to a format
@@ -93,7 +93,7 @@
         format suitable for the form (optional)
         """
         return {}
-        
+
     def check_data_dict(self, data_dict):
         """
         Check if the return data is correct.
@@ -104,10 +104,10 @@
     def setup_template_variables(self, context, data_dict):
         """
         Add variables to c just prior to the template being rendered.
-        """                
-                
-
-class ExampleDatasetForm(SingletonPlugin):
+        """
+
+
+class ExampleDatasetForm(SingletonPlugin, ckan.lib.plugins.DefaultDatasetForm):
     """This plugin demonstrates how a theme packaged as a CKAN
     extension might extend CKAN behaviour.
 
@@ -122,9 +122,9 @@
         class will be used.
     """
     implements(IDatasetForm, inherit=True)
-    implements(IConfigurer, inherit=True)    
+    implements(IConfigurer, inherit=True)
     implements(IGenshiStreamFilter, inherit=True)
-    
+
     def update_config(self, config):
         """
         This IConfigurer implementation causes CKAN to look in the
@@ -201,7 +201,7 @@
             'composer_tags': [ignore_missing, convert_to_tags(COMPOSER_VOCAB)]
         })
         return schema
-    
+
     def db_to_form_schema(self):
         """
         Returns the schema for mapping package data from the database into a
@@ -219,6 +219,10 @@
                 convert_from_tags(COMPOSER_VOCAB), ignore_missing
             ],
             'published_by': [convert_from_extras, ignore_missing],
+        })
+        schema['groups'].update({
+            'name': [not_empty, unicode],
+            'title': [ignore_missing]
         })
         return schema
 
@@ -249,7 +253,10 @@
                         continue
 
                     html = '<li class="sidebar-section">'
-                    html = html + '<h3>%s</h3>' % vocab['name']
+                    if vocab['name'] == GENRE_VOCAB:
+                        html = html + '<h3>Musical Genre</h3>'
+                    elif vocab['name'] == COMPOSER_VOCAB:
+                        html = html + '<h3>Composer</h3>'
                     html = html + '<ul class="tags clearfix">'
                     for tag in vocab_tags:
                         html = html + '<li>%s</li>' % tag['name']