[ckan-dev] Reading error after adding a new field in Organization

Nigel Babu nigel.babu at okfn.org
Fri May 9 06:58:17 UTC 2014


Can you please upload your extension onto github so I can try it out. It's
going to be really hard to debug this with just one piece of the puzzle.

Nigel Babu
Developer, Open Knowledge


On 9 May 2014 10:05, <Qifeng.Bai at csiro.au> wrote:

>   Hi, there
>
>
>
> I have been struggling into add a new field into “Organization” for a
> whole week. I have managed add a field “project_leader” into “organization’
>
>
>
> I can use API method to retrieve this project and get the value of
> “project_leader”.  However, when I use CKAN page:
> http://127.0.0.1:5000/organization/project6, it returns me
> “ValidationError: {'name': [u'Missing value']}”
>
>
>
> Any comments are appreciated!
>
>
>
> See below:
>
>
>
> *API method return correct value:*
>
>
>
> http://localhost:5000/api/3/action/organization_show?id=project6 .
>
>
>
> It returns:
>
> {
>
> help: "Return the details of a organization. :param id: the id or name of
> the organization :type id: string :param include_datasets: include a list
> of the organization's datasets (optional, default: ``True``) :type id:
> boolean :rtype: dictionary .. note:: Only its first 1000 datasets are
> returned ",
>
> success: true,
>
> result: {
>
> packages: [ ],
>
> display_name: "project6",
>
> approval_status: "approved",
>
> image_display_url: "",
>
> title: "project6",
>
> name: "project6",
>
> is_organization: true,
>
> image_url: "",
>
> groups: [ ],
>
> users: [
>
> {
>
> capacity: "admin",
>
> name: "baiqif"
>
> }
>
> ],
>
> *project_leader: "p4",*
>
> type: "organization",
>
> id: "e0439ec8-0895-49a1-bc4d-c2df0dce1d54",
>
> tags: [ ],
>
> description: ""
>
> }
>
> }
>
>
>
> *use CKAN page: http://127.0.0.1:5000/organization/project6
> <http://127.0.0.1:5000/organization/project6>  returns error:*
>
>
>
> File '/home/ckan/ckan/lib/default/src/ckan/ckan/controllers/group.py',
> line 187 in read
>
>   c.group_dict = self._action('group_show')(context, data_dict)
>
> File '/home/ckan/ckan/lib/default/src/ckan/ckan/logic/__init__.py', line
> 419 in wrapped
>
>   result = _action(context, data_dict, **kw)
>
> File '/home/ckan/ckan/lib/default/src/ckan/ckan/logic/action/get.py', line
> 1046 in organization_show
>
>   return _group_or_org_show(context, data_dict, is_org=True)
>
> File '/home/ckan/ckan/lib/default/src/ckan/ckan/logic/action/get.py', line
> 989 in _group_or_org_show
>
>   group_dict = model_dictize.group_dictize(group, context)
>
> File
> '/home/ckan/ckan/lib/default/src/ckan/ckan/lib/dictization/model_dictize.py',
> line 379 in group_dictize
>
>   search_results = logic.get_action('package_search')(context, q)
>
> File '/home/ckan/ckan/lib/default/src/ckan/ckan/logic/__init__.py', line
> 419 in wrapped
>
>   result = _action(context, data_dict, **kw)
>
> File '/home/ckan/ckan/lib/default/src/ckan/ckan/logic/action/get.py', line
> 1430 in package_search
>
>   raise ValidationError(errors)
>
> ValidationError: {'name': [u'Missing value']}
>
>
>
>
>
> Here are my codes:
>
>
>
> class
> NlmpProjectFormPlugin(plugins.SingletonPlugin,DefaultOrganizationForm):
>
>
>
>     plugins.implements(plugins.IConfigurer, inherit=True)
>
>     plugins.implements(plugins.IGroupForm, inherit=True)
>
>
>
>     def update_config(self, config):
>
>         # Add this plugin's templates dir to CKAN's extra_template_paths,
> so
>
>         # that CKAN will use this plugin's custom templates.
>
>         tk.add_template_directory(config, 'templates')
>
>
>
>     def group_form(self):
>
>         return 'organization/new_organization_form.html'
>
>
>
>     def setup_template_variables(self, context, data_dict):
>
>         pass
>
>
>
>     def new_template(self):
>
>         return 'organization/new.html'
>
>
>
>     def about_template(self):
>
>         return 'organization/about.html'
>
>
>
>     def index_template(self):
>
>         return 'organization/index.html'
>
>
>
>     def admins_template(self):
>
>         return 'organization/admins.html'
>
>
>
>     def bulk_process_template(self):
>
>         return 'organization/bulk_process.html'
>
>
>
>     def read_template(self):
>
>         return 'organization/read.html'
>
>
>
>     # don't override history_template - use group template for history
>
>
>
>     def edit_template(self):
>
>         return 'organization/edit.html'
>
>
>
>     def activity_template(self):
>
>         return 'organization/activity_stream.html'
>
>
>
>
>
>
>
>
>
>
>
>     def is_fallback(self):
>
>         # Return True to register this plugin as the default handler for
>
>         # package types not handled by any other IDatasetForm plugin.
>
>         return False
>
>
>
>
>
>     def group_types(self):
>
>         # This plugin doesn't handle any special package types, it just
>
>         # registers itself as the default (above).
>
>         return ['organization']
>
>
>
>     def form_to_db_schema_options(self, options):
>
>         ''' This allows us to select different schemas for different
>
>         purpose eg via the web interface or via the api or creation vs
>
>         updating. It is optional and if not available form_to_db_schema
>
>         should be used.
>
>         If a context is provided, and it contains a schema, it will be
>
>         returned.
>
>         '''
>
>         schema = options.get('context', {}).get('schema', None)
>
>         if schema:
>
>             return schema
>
>
>
>         if options.get('api'):
>
>             if options.get('type') == 'create':
>
>                 return self.form_to_db_schema_api_create()
>
>             else:
>
>                 return self.form_to_db_schema_api_update()
>
>         else:
>
>             return self.form_to_db_schema()
>
>
>
>     def form_to_db_schema_api_create(self):
>
>         schema = super(NlmpProjectFormPlugin,
> self).form_to_db_schema_api_create()
>
>         schema = self._modify_group_schema(schema)
>
>         return schema
>
>
>
>     def form_to_db_schema_api_update(self):
>
>         schema = super(NlmpProjectFormPlugin,
> self).form_to_db_schema_api_update()
>
>         schema = self._modify_group_schema(schema)
>
>         return schema
>
>
>
>     def form_to_db_schema(self):
>
>         schema = super(NlmpProjectFormPlugin, self).form_to_db_schema()
>
>         schema = self._modify_group_schema(schema)
>
>         return schema
>
>
>
>     def _modify_group_schema(self, schema):
>
>          #Import core converters and validators
>
>         _convert_to_extras = tk.get_converter('convert_to_extras')
>
>         _ignore_missing = tk.get_validator('ignore_missing')
>
>
>
>
>
>         default_validators = [_ignore_missing, _convert_to_extras]
>
>         schema.update({
>
>                        'project_leader':default_validators
>
>                        })
>
>         return schema
>
>
>
>     def db_to_form_schema(self):
>
>
>
>         # Import core converters and validators
>
>         _convert_from_extras = tk.get_converter('convert_from_extras')
>
>         _ignore_missing = tk.get_validator('ignore_missing')
>
>
>
>         schema = super(NlmpProjectFormPlugin, self).form_to_db_schema()
>
>
>
>         default_validators = [_convert_from_extras, _ignore_missing]
>
>         schema.update({
>
>                        'project_leader':default_validators
>
>                        })
>
>         return schema
>
> _______________________________________________
> ckan-dev mailing list
> ckan-dev at lists.okfn.org
> https://lists.okfn.org/mailman/listinfo/ckan-dev
> Unsubscribe: https://lists.okfn.org/mailman/options/ckan-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.okfn.org/pipermail/ckan-dev/attachments/20140509/7a7b2993/attachment-0003.html>


More information about the ckan-dev mailing list