--- a/ckanext/datagovau/plugin.py +++ b/ckanext/datagovau/plugin.py @@ -1,24 +1,35 @@ import logging import ckan.plugins as plugins +import ckan.lib as lib +import ckan.lib.dictization.model_dictize as model_dictize import ckan.plugins.toolkit as tk +import ckan.model as model +from pylons import config +#parse the activity feed for last active non-system user +def get_last_active_user(id): + system_user = lib.helpers.get_action('user_show',{'id': config.get('ckan.site_id', 'ckan_site_user')}) + user_list = [x for x in lib.helpers.get_action('package_activity_list',{'id':id}) if x['user_id'] != system_user['id']] + user = None + if len(user_list) > 0: + user = user_list[0].get('user_id', None) + if user is None: + return system_user + else: + return lib.helpers.get_action('user_show',{'id':user}) -# get_action will be deprecated soon, this is the replacement -def get_user(user): - user_name = unicode(user) - if user_name: - user_obj = model.User.get(id) - context['user_obj'] = user_obj - if user_obj is None: - raise NotFound - else: - raise NotFound +# get user created datasets and those they have edited +def get_user_datasets(user_dict): + created_datasets_list = user_dict['datasets'] + active_datasets_list = [x['data']['package'] for x in + lib.helpers.get_action('user_activity_list',{'id':user_dict['id']}) if x['data'].get('package')] + return created_datasets_list + active_datasets_list - return model_dictize.user_dictize(user_obj,context) +def datastore_search(context, data_dict): + return {'success': True} # allow all datastore search - -class ExampleIDatasetFormPlugin(plugins.SingletonPlugin, +class DataGovAuPlugin(plugins.SingletonPlugin, tk.DefaultDatasetForm): '''An example IDatasetForm CKAN plugin. @@ -28,17 +39,11 @@ plugins.implements(plugins.IConfigurer, inherit=False) plugins.implements(plugins.IDatasetForm, inherit=False) plugins.implements(plugins.ITemplateHelpers, inherit=False) + plugins.implements(plugins.IAuthFunctions) - # These record how many times methods that this plugin's methods are - # called, for testing purposes. - num_times_new_template_called = 0 - num_times_read_template_called = 0 - num_times_edit_template_called = 0 - num_times_search_template_called = 0 - num_times_history_template_called = 0 - num_times_package_form_called = 0 - num_times_check_data_dict_called = 0 - num_times_setup_template_variables_called = 0 + + def get_auth_functions(self): + return {'datastore_search': datastore_search} def update_config(self, config): @@ -53,7 +58,7 @@ # config['licenses_group_url'] = 'http://%(ckan.site_url)/licenses.json' def get_helpers(self): - return {'getuser': get_user} + return {'get_last_active_user': get_last_active_user, 'get_user_datasets': get_user_datasets} def is_fallback(self): # Return True to register this plugin as the default handler for @@ -67,17 +72,17 @@ def create_package_schema(self): - schema = super(ExampleIDatasetFormPlugin, self).create_package_schema() + schema = super(DataGovAuPlugin, self).create_package_schema() schema = self._modify_package_schema(schema) return schema def update_package_schema(self): - schema = super(ExampleIDatasetFormPlugin, self).update_package_schema() + schema = super(DataGovAuPlugin, self).update_package_schema() schema = self._modify_package_schema(schema) return schema def show_package_schema(self): - schema = super(ExampleIDatasetFormPlugin, self).show_package_schema() + schema = super(DataGovAuPlugin, self).show_package_schema() # Don't show vocab tags mixed in with normal 'free' tags # (e.g. on dataset pages, or on the search page) @@ -140,25 +145,25 @@ # called. def setup_template_variables(self, context, data_dict): - return super(ExampleIDatasetFormPlugin, self).setup_template_variables( + return super(DataGovAuPlugin, self).setup_template_variables( context, data_dict) def new_template(self): - return super(ExampleIDatasetFormPlugin, self).new_template() + return super(DataGovAuPlugin, self).new_template() def read_template(self): - return super(ExampleIDatasetFormPlugin, self).read_template() + return super(DataGovAuPlugin, self).read_template() def edit_template(self): - return super(ExampleIDatasetFormPlugin, self).edit_template() + return super(DataGovAuPlugin, self).edit_template() def search_template(self): - return super(ExampleIDatasetFormPlugin, self).search_template() + return super(DataGovAuPlugin, self).search_template() def history_template(self): - return super(ExampleIDatasetFormPlugin, self).history_template() + return super(DataGovAuPlugin, self).history_template() def package_form(self): - return super(ExampleIDatasetFormPlugin, self).package_form() + return super(DataGovAuPlugin, self).package_form()