Cleaning up the code and renaming some classes to better reflect what it is
[ckanext-datagovau.git] / ckanext / example / controller_plugin.py
blob:a/ckanext/example/controller_plugin.py -> blob:b/ckanext/example/controller_plugin.py
--- a/ckanext/example/controller_plugin.py
+++ b/ckanext/example/controller_plugin.py
@@ -28,38 +28,20 @@
 
 log = logging.getLogger(__name__)
 
-geographic_granularity = [('', ''),
-                          ('national', 'national'),
-                          ('regional', 'regional'),
-                          ('local authority', 'local authority'),
-                          ('ward', 'ward'),
-                          ('point', 'point'),
-                          ('other', 'other - please specify')]
-
-update_frequency = [('', ''),
-                    ('never', 'never'),
-                    ('discontinued', 'discontinued'),
-                    ('annual', 'annual'),
-                    ('quarterly', 'quarterly'),
-                    ('monthly', 'monthly'),
-                    ('other', 'other - please specify')]
-
-temporal_granularity = [("",""),
-                       ("year","year"),
-                       ("quarter","quarter"),
-                       ("month","month"),
-                       ("week","week"),
-                       ("day","day"),
-                       ("hour","hour"),
-                       ("point","point"),
-                       ("other","other - please specify")]
 
 
-class ExamplePackageController(SingletonPlugin):
+class ExampleDatasetForm(SingletonPlugin):
+    """
+
+    """
 
     implements(IDatasetForm, inherit=True)
 
     def package_form(self):
+        """
+        Returns a string representing the location of the template to be
+        rendered.  e.g. "package/new_package_form.html".
+        """        
         return 'controller/package_plugin.html'
 
     def is_fallback(self):
@@ -85,14 +67,12 @@
         """
         return ["example"]
 
-    def _setup_template_variables(self, context, data_dict=None):
+    def setup_template_variables(self, context, data_dict=None):
+        """
+        Add variables to c just prior to the template being rendered.
+        """        
         c.licences = [('', '')] + model.Package.get_license_options()
-        c.geographic_granularity = geographic_granularity
-        c.update_frequency = update_frequency
-        c.temporal_granularity = temporal_granularity 
-
         c.publishers = self.get_publishers()
-
         c.is_sysadmin = Authorizer().is_sysadmin(c.user)
         c.resource_columns = model.Resource.get_columns()
 
@@ -102,8 +82,11 @@
             c.auth_for_change_state = Authorizer().am_authorized(
                 c, model.Action.CHANGE_STATE, pkg)
 
-    def _form_to_db_schema(self):
-
+    def form_to_db_schema(self):
+        """
+        Returns the schema for mapping package data from a form to a format
+        suitable for the database.
+        """
         schema = {
             'title': [not_empty, unicode],
             'name': [not_empty, unicode, val.name_validator, val.package_name_validator],
@@ -112,16 +95,6 @@
             'date_released': [date_to_db, convert_to_extras],
             'date_updated': [date_to_db, convert_to_extras],
             'date_update_future': [date_to_db, convert_to_extras],
-            'update_frequency': [use_other, unicode, convert_to_extras],
-            'update_frequency-other': [],
-            'precision': [unicode, convert_to_extras],
-            'geographic_granularity': [use_other, unicode, convert_to_extras],
-            'geographic_granularity-other': [],
-            'geographic_coverage': [ignore_missing, convert_geographic_to_db, convert_to_extras],
-            'temporal_granularity': [use_other, unicode, convert_to_extras],
-            'temporal_granularity-other': [],
-            'temporal_coverage-from': [date_to_db, convert_to_extras],
-            'temporal_coverage-to': [date_to_db, convert_to_extras],
             'url': [unicode],
             'taxonomy_url': [unicode, convert_to_extras],
 
@@ -144,18 +117,16 @@
         }
         return schema
     
-    def _db_to_form_schema(data):
+    def db_to_form_schema(data):
+        """
+        Returns the schema for mapping package data from the database into a
+        format suitable for the form (optional)
+        """
         schema = {
             'date_released': [convert_from_extras, ignore_missing, date_to_form],
             'date_updated': [convert_from_extras, ignore_missing, date_to_form],
             'date_update_future': [convert_from_extras, ignore_missing, date_to_form],
-            'update_frequency': [convert_from_extras, ignore_missing, extract_other(update_frequency)],
             'precision': [convert_from_extras, ignore_missing],
-            'geographic_granularity': [convert_from_extras, ignore_missing, extract_other(geographic_granularity)],
-            'geographic_coverage': [convert_from_extras, ignore_missing, convert_geographic_to_form],
-            'temporal_granularity': [convert_from_extras, ignore_missing, extract_other(temporal_granularity)],
-            'temporal_coverage-from': [convert_from_extras, ignore_missing, date_to_form],
-            'temporal_coverage-to': [convert_from_extras, ignore_missing, date_to_form],
             'taxonomy_url': [convert_from_extras, ignore_missing],
 
             'resources': default_schema.default_resource_schema(),
@@ -177,47 +148,16 @@
         }
         return schema
 
-    def _check_data_dict(self, data_dict):
+    def check_data_dict(self, data_dict):
+        """
+        Check if the return data is correct.
+
+        raise a DataError if not.
+        """
         return
 
     def get_publishers(self):
+        """
+        """
         return [('pub1', 'pub2')]
 
-
-def use_other(key, data, errors, context):
-
-    other_key = key[-1] + '-other'
-    other_value = data.get((other_key,), '').strip()
-    if other_value:
-        data[key] = other_value
-
-def extract_other(option_list):
-
-    def other(key, data, errors, context):
-        value = data[key]
-        if value in dict(option_list).keys():
-            return
-        elif value is missing:
-            data[key] = ''
-            return
-        else:
-            data[key] = 'other'
-            other_key = key[-1] + '-other'
-            data[(other_key,)] = value
-    return other
-            
-def convert_geographic_to_db(value, context):
-
-    if isinstance(value, list):
-        regions = value
-    elif value:
-        regions = [value]
-    else:
-        regions = []
-        
-    return GeoCoverageType.get_instance().form_to_db(regions)
-
-def convert_geographic_to_form(value, context):
-
-    return GeoCoverageType.get_instance().db_to_form(value)
-