def get(self, package_type: str, id: str, data: Optional[dict[str, Any]] = None, errors: Optional[dict[str, Any]] = None, error_summary: Optional[dict[str, Any]] = None) -> str: # get resources for sidebar context = cast( Context, { u'model': model, u'session': model.Session, u'user': g.user, u'auth_user_obj': g.userobj }) try: pkg_dict = get_action(u'package_show')(context, {u'id': id}) except NotFound: return base.abort( 404, _(u'The dataset {id} could not be found.').format(id=id)) try: check_access(u'resource_create', context, {u"package_id": pkg_dict["id"]}) except NotAuthorized: return base.abort( 403, _(u'Unauthorized to create a resource for this package')) package_type = pkg_dict[u'type'] or package_type errors = errors or {} error_summary = error_summary or {} extra_vars: dict[str, Any] = { u'data': data, u'errors': errors, u'error_summary': error_summary, u'action': u'new', u'resource_form_snippet': _get_pkg_template(u'resource_form', package_type), u'dataset_type': package_type, u'pkg_name': id, u'pkg_dict': pkg_dict } template = u'package/new_resource_not_draft.html' if pkg_dict[u'state'].startswith(u'draft'): extra_vars[u'stage'] = ['complete', u'active'] template = u'package/new_resource.html' return base.render(template, extra_vars)
def get(self, package_type, id, resource_id, data=None, errors=None, error_summary=None): context = self._prepare(id) pkg_dict = get_action(u'package_show')(context, {u'id': id}) try: resource_dict = get_action(u'resource_show')(context, { u'id': resource_id }) except NotFound: return base.abort(404, _(u'Resource not found')) if pkg_dict[u'state'].startswith(u'draft'): return CreateView().get(package_type, id, data=resource_dict) # resource is fully created resource = resource_dict # set the form action form_action = h.url_for(u'{}_resource.edit'.format(package_type), resource_id=resource_id, id=id) if not data: data = resource_dict package_type = pkg_dict[u'type'] or package_type errors = errors or {} error_summary = error_summary or {} extra_vars = { u'data': data, u'errors': errors, u'error_summary': error_summary, u'action': u'edit', u'resource_form_snippet': _get_pkg_template(u'resource_form', package_type), u'dataset_type': package_type, u'resource': resource, u'pkg_dict': pkg_dict, u'form_action': form_action } return base.render(u'package/resource_edit.html', extra_vars)
def get( self, package_type, id, resource_id, data=None, errors=None, error_summary=None ): context = self._prepare(id) pkg_dict = get_action(u'package_show')(context, {u'id': id}) try: resource_dict = get_action(u'resource_show')( context, { u'id': resource_id } ) except NotFound: return base.abort(404, _(u'Resource not found')) if pkg_dict[u'state'].startswith(u'draft'): return CreateView().get(package_type, id, data=resource_dict) # resource is fully created resource = resource_dict # set the form action form_action = h.url_for( u'resource.edit', resource_id=resource_id, id=id ) if not data: data = resource_dict package_type = pkg_dict[u'type'] or package_type errors = errors or {} error_summary = error_summary or {} extra_vars = { u'data': data, u'errors': errors, u'error_summary': error_summary, u'action': u'edit', u'resource_form_snippet': _get_pkg_template( u'resource_form', package_type ), u'dataset_type': package_type, u'resource': resource, u'pkg_dict': pkg_dict, u'form_action': form_action } return base.render(u'package/resource_edit.html', extra_vars)
def get( self, package_type, id, data=None, errors=None, error_summary=None ): # get resources for sidebar context = { u'model': model, u'session': model.Session, u'user': g.user, u'auth_user_obj': g.userobj } try: pkg_dict = get_action(u'package_show')(context, {u'id': id}) except NotFound: return base.abort( 404, _(u'The dataset {id} could not be found.').format(id=id) ) try: check_access( u'resource_create', context, {u"package_id": pkg_dict["id"]} ) except NotAuthorized: return base.abort( 403, _(u'Unauthorized to create a resource for this package') ) package_type = pkg_dict[u'type'] or package_type errors = errors or {} error_summary = error_summary or {} extra_vars = { u'data': data, u'errors': errors, u'error_summary': error_summary, u'action': u'new', u'resource_form_snippet': _get_pkg_template( u'resource_form', package_type ), u'dataset_type': package_type, u'pkg_name': id, u'pkg_dict': pkg_dict } template = u'package/new_resource_not_draft.html' if pkg_dict[u'state'].startswith(u'draft'): extra_vars[u'stage'] = ['complete', u'active'] template = u'package/new_resource.html' return base.render(template, extra_vars)
def get(self, package_type, data=None, errors=None, error_summary=None): self._check_auth() data = data or self._clean_request_form() errors = errors or {} error_summary = error_summary or {} data['group_id'] = toolkit.request.params.get('group') or\ toolkit.request.form.get('groups__0__id') stage = ['active'] if data.get('state', '').startswith('draft'): stage = ['active', 'complete'] form_snippet = self.package_form form_vars = { 'data': data, 'errors': errors, 'error_summary': error_summary, 'action': 'new', 'stage': stage, 'dataset_type': package_type, } toolkit.c.pkg = None toolkit.c.pkg_dict = None context = self._get_context() _setup_template_variables(context, {}, package_type=package_type) new_template = _get_pkg_template(u'new_template', package_type) return toolkit.render( new_template, extra_vars={ u'form_vars': form_vars, u'form_snippet': form_snippet, u'dataset_type': package_type, u'resources_json': json.dumps(data.get('resources', [])), u'errors_json': json.dumps(errors), }, )
def read(package_type, id, resource_id): context = { u'model': model, u'session': model.Session, u'user': g.user, u'auth_user_obj': g.userobj, u'for_view': True } try: package = get_action(u'package_show')(context, {u'id': id}) except (NotFound, NotAuthorized): return base.abort(404, _(u'Dataset not found')) activity_id = request.params.get(u'activity_id') if activity_id: # view an 'old' version of the package, as recorded in the # activity stream current_pkg = package try: package = context['session'].query( model.Activity).get(activity_id).data['package'] except AttributeError: base.abort(404, _(u'Dataset not found')) if package['id'] != current_pkg['id']: log.info( u'Mismatch between pkg id in activity and URL {} {}'.format( package['id'], current_pkg['id'])) # the activity is not for the package in the URL - don't allow # misleading URLs as could be malicious base.abort(404, _(u'Activity not found')) # The name is used lots in the template for links, so fix it to be # the current one. It's not displayed to the user anyway. package['name'] = current_pkg['name'] # Don't crash on old (unmigrated) activity records, which do not # include resources or extras. package.setdefault(u'resources', []) resource = None for res in package.get(u'resources', []): if res[u'id'] == resource_id: resource = res break if not resource: return base.abort(404, _(u'Resource not found')) # get package license info license_id = package.get(u'license_id') try: package[u'isopen'] = model.Package.get_license_register( )[license_id].isopen() except KeyError: package[u'isopen'] = False resource_views = get_action(u'resource_view_list')(context, { u'id': resource_id }) resource[u'has_views'] = len(resource_views) > 0 current_resource_view = None view_id = request.args.get(u'view_id') if resource[u'has_views']: if view_id: current_resource_view = [ rv for rv in resource_views if rv[u'id'] == view_id ] if len(current_resource_view) == 1: current_resource_view = current_resource_view[0] else: return base.abort(404, _(u'Resource view not found')) else: current_resource_view = resource_views[0] # required for nav menu pkg = context[u'package'] dataset_type = pkg.type or package_type # TODO: remove g.package = package g.resource = resource g.pkg = pkg g.pkg_dict = package extra_vars = { u'resource_views': resource_views, u'current_resource_view': current_resource_view, u'dataset_type': dataset_type, u'pkg_dict': package, u'package': package, u'resource': resource, u'pkg': pkg, # NB it is the current version of the dataset, so ignores # activity_id. Still used though in resource views for # backward compatibility u'is_activity_archive': bool(activity_id), } template = _get_pkg_template(u'resource_template', dataset_type) return base.render(template, extra_vars)
def read(package_type, id, resource_id): context = { u'model': model, u'session': model.Session, u'user': g.user, u'auth_user_obj': g.userobj, u'for_view': True } try: package = get_action(u'package_show')(context, {u'id': id}) except (NotFound, NotAuthorized): return base.abort(404, _(u'Dataset not found')) resource = None for res in package.get(u'resources', []): if res[u'id'] == resource_id: resource = res break if not resource: return base.abort(404, _(u'Resource not found')) # get package license info license_id = package.get(u'license_id') try: package[u'isopen'] = model.Package.get_license_register( )[license_id].isopen() except KeyError: package[u'isopen'] = False resource_views = get_action(u'resource_view_list')(context, { u'id': resource_id }) resource[u'has_views'] = len(resource_views) > 0 current_resource_view = None view_id = request.args.get(u'view_id') if resource[u'has_views']: if view_id: current_resource_view = [ rv for rv in resource_views if rv[u'id'] == view_id ] if len(current_resource_view) == 1: current_resource_view = current_resource_view[0] else: return base.abort(404, _(u'Resource view not found')) else: current_resource_view = resource_views[0] # required for nav menu pkg = context[u'package'] dataset_type = pkg.type or package_type # TODO: remove g.package = package g.resource = resource g.pkg = pkg g.pkg_dict = package extra_vars = { u'resource_views': resource_views, u'current_resource_view': current_resource_view, u'dataset_type': dataset_type, u'pkg_dict': package, u'package': package, u'resource': resource, u'pkg': pkg } template = _get_pkg_template(u'resource_template', dataset_type) return base.render(template, extra_vars)
def read(package_type, id, resource_id): context = { u'model': model, u'session': model.Session, u'user': g.user, u'auth_user_obj': g.userobj, u'for_view': True } try: package = get_action(u'package_show')(context, {u'id': id}) except (NotFound, NotAuthorized): return base.abort(404, _(u'Dataset not found')) resource = None for res in package.get(u'resources', []): if res[u'id'] == resource_id: resource = res break if not resource: return base.abort(404, _(u'Resource not found')) # get package license info license_id = package.get(u'license_id') try: package[u'isopen'] = model.Package.get_license_register()[license_id ].isopen() except KeyError: package[u'isopen'] = False resource_views = get_action(u'resource_view_list')( context, { u'id': resource_id } ) resource[u'has_views'] = len(resource_views) > 0 current_resource_view = None view_id = request.args.get(u'view_id') if resource[u'has_views']: if view_id: current_resource_view = [ rv for rv in resource_views if rv[u'id'] == view_id ] if len(current_resource_view) == 1: current_resource_view = current_resource_view[0] else: return base.abort(404, _(u'Resource view not found')) else: current_resource_view = resource_views[0] # required for nav menu pkg = context[u'package'] dataset_type = pkg.type or package_type # TODO: remove g.package = package g.resource = resource g.pkg = pkg g.pkg_dict = package extra_vars = { u'resource_views': resource_views, u'current_resource_view': current_resource_view, u'dataset_type': dataset_type, u'pkg_dict': package, u'package': package, u'resource': resource, u'pkg': pkg } template = _get_pkg_template(u'resource_template', dataset_type) return base.render(template, extra_vars)