def read(self, id, format='html'): if not format == 'html': ctype, extension, loader = \ self._content_type_from_extension(format) if not ctype: # An unknown format, we'll carry on in case it is a # revision specifier and re-constitute the original id id = "%s.%s" % (id, format) ctype, format, loader = "text/html; charset=utf-8", "html", \ MarkupTemplate else: ctype, format, loader = self._content_type_from_accept() response.headers['Content-Type'] = ctype package_type = self._get_package_type(id.split('@')[0]) context = {'model': model, 'session': model.Session, 'user': c.user or c.author, 'for_view': True, 'auth_user_obj': c.userobj} data_dict = {'id': id} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: abort(400, _('Invalid revision format: %r') % e.args)
def read_n3(self, id): base.response.headers['Content-Type'] = "text/n3; charset=utf-8" context = { 'model': model, 'session': model.Session, 'user': base.c.user or base.c.author, 'extras_as_string': True, 'for_view': True } data_dict = {'id': id} split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: abort(400, _('Invalid revision format: %r') % e.args)
def gmd(self, id): format = 'html' # response.headers['Content-Type'] = ctype response.headers[ 'Content-Type'] = 'application/vnd.iso.19139+xml; charset=utf-8'.encode( "ISO-8859-1") response.headers["Content-Disposition"] = ("attachment; filename=" + id + ".xml").encode("ISO-8859-1") package_type = self._get_package_type(id.split('@')[0]) context = { 'model': model, 'session': model.Session, 'user': c.user or c.author, 'for_view': True, 'auth_user_obj': c.userobj } data_dict = {'id': id} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: base.abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: base.abort(400, _('Invalid revision format: %r') % e.args)
def gmd(self, id): format = 'html' # response.headers['Content-Type'] = ctype response.headers['Content-Type'] = 'application/vnd.iso.19139+xml; charset=utf-8'.encode("ISO-8859-1") response.headers["Content-Disposition"] = ("attachment; filename=" + id + ".xml").encode("ISO-8859-1") package_type = self._get_package_type(id.split('@')[0]) context = {'model': model, 'session': model.Session, 'user': c.user or c.author, 'for_view': True, 'auth_user_obj': c.userobj} data_dict = {'id': id} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: base.abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: base.abort(400, _('Invalid revision format: %r') % e.args)
def _get_dataset_name(id_or_name): ''' Returns the dataset name given the id or name ''' if not core_model.is_id(id_or_name): return id_or_name dataset = core_model.Package.get(id_or_name) if not dataset: raise toolkit.ObjectNotFound('Package {} not found'.format(id_or_name)) return dataset.name
def read_n3(self, id): base.response.headers['Content-Type'] = "text/n3; charset=utf-8" context = {'model': model, 'session': model.Session, 'user': base.c.user or base.c.author, 'extras_as_string': True, 'for_view': True} data_dict = {'id': id} split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: abort(400, _('Invalid revision format: %r') % e.args)
def read(self, id): # custom_base.g_analitics() context = {'model': model, 'session': model.Session, 'user': c.user, 'for_view': True, 'auth_user_obj': c.userobj} data_dict = {'id': id, 'include_tracking': True} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: abort(400, _('Invalid revision format: %r') % e.args)
def read(self, id): custom_base.g_analitics() context = {'model': model, 'session': model.Session, 'user': c.user, 'for_view': True, 'auth_user_obj': c.userobj} data_dict = {'id': id, 'include_tracking': True} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: abort(400, _('Invalid revision format: %r') % e.args)
def read(self, id, format='html'): if not format == 'html': ctype, extension, loader = \ self._content_type_from_extension(format) if not ctype: # An unknown format, we'll carry on in case it is a # revision specifier and re-constitute the original id id = "%s.%s" % (id, format) ctype, format, loader = "text/html; charset=utf-8", "html", \ MarkupTemplate else: ctype, format, loader = self._content_type_from_accept() response.headers['Content-Type'] = ctype package_type = self._get_package_type(id.split('@')[0]) context = { 'model': model, 'session': model.Session, 'user': c.user or c.author, 'for_view': True, 'auth_user_obj': c.userobj } data_dict = {'id': id} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError, e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError, e: abort(400, _('Invalid revision format: %r') % e.args)
def read(self, id): '''Overrifing base packe read controller. https://github.com/ckan/ckan/blob/f43d6a572838c792193f3239827d04f9ffea9206/ckan/controllers/package.py#L360 Does exectly the same exapt it also includes info about resource selected. ''' context = { 'model': model, 'session': model.Session, 'user': c.user, 'for_view': True, 'auth_user_obj': c.userobj } data_dict = {'id': id, 'include_tracking': True} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError as e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError as e: abort(400, _('Invalid revision format: %r') % e.args) elif len(split) > 2: abort(400, _('Invalid revision format: %r') % 'Too many "@" symbols') # check if package exists try: c.pkg_dict = get_action('package_show')(context, data_dict) c.pkg = context['package'] except (NotFound, NotAuthorized, toolkit.NotAuthorized): base.abort(404, _('Dataset not found')) resource_id = request.params.get('resource') for resource in c.pkg_dict['resources']: resource_views = get_action('resource_view_list')( context, { 'id': resource['id'] }) resource['has_views'] = len(resource_views) > 0 # Backwards compatibility with preview interface resource['can_be_previewed'] = bool(len(resource_views)) if not resource_id and resource.get('resource_type') != 'doc': resource_id = resource['id'] package_type = c.pkg_dict['type'] or 'dataset' self._setup_template_variables(context, {'id': id}, package_type=package_type) template = self._read_template(package_type) vars = {'dataset_type': package_type} if resource_id: vars = self._resource_read(c.pkg_dict, resource_id, context=context) c.current_package_id = c.pkg.id c.current_resource_id = resource_id try: return render(template, extra_vars=vars) except ckan.lib.render.TemplateNotFound as e: msg = _("Viewing datasets of type \"{package_type}\" is " "not supported ({file_!r}).".format( package_type=package_type, file_=e.message)) abort(404, msg) assert False, "We should never get here"
def read(self, id): context = {'model': model, 'session': model.Session, 'user': c.user, 'for_view': True, 'auth_user_obj': c.userobj} data_dict = {'id': id, 'include_tracking': True} # interpret @<revision_id> or @<date> suffix split = id.split('@') if len(split) == 2: data_dict['id'], revision_ref = split if model.is_id(revision_ref): context['revision_id'] = revision_ref else: try: date = h.date_str_to_datetime(revision_ref) context['revision_date'] = date except TypeError as e: abort(400, _('Invalid revision format: %r') % e.args) except ValueError as e: abort(400, _('Invalid revision format: %r') % e.args) elif len(split) > 2: abort(400, _('Invalid revision format: %r') % 'Too many "@" symbols') # check if package exists try: c.pkg_dict = get_action('package_show')(context, data_dict) c.pkg = context['package'] except NotFound: abort(404, _('Dataset not found')) except NotAuthorized: abort(403, _('Not authorized to see the page')) # used by disqus plugin c.current_package_id = c.pkg.id system_resource = {} active_upload = False # can the resources be previewed? for resource in c.pkg_dict['resources']: # Backwards compatibility with preview interface resource['can_be_previewed'] = self._resource_preview( {'resource': resource, 'package': c.pkg_dict}) # Check if there is a system created resource if resource['resource_type'] == kwh_h.SYSTEM_RESOURCE_TYPE: system_resource = resource # Check if some data resource is not uploaded to the Datastore yet if not active_upload: active_upload = not kwh_h.is_rsc_upload_datastore(resource) resource_views = get_action('resource_view_list')( context, {'id': resource['id']}) resource['has_views'] = len(resource_views) > 0 hide_merge_btn = False try: check_access('package_update', context, data_dict) if (len(c.pkg_dict['resources']) == 1 and system_resource): hide_merge_btn = True except NotAuthorized: hide_merge_btn = True error_message = request.params.get('error_message', u'') package_type = c.pkg_dict['type'] or 'dataset' self._setup_template_variables(context, {'id': id}, package_type=package_type) template = self._read_template(package_type) try: return render(template, extra_vars={ 'dataset_type': package_type, 'error_message': error_message, 'system_resource': system_resource, 'active_upload': active_upload, 'hide_merge_btn': hide_merge_btn}) except TemplateNotFound as e: msg = _( "Viewing datasets of type \"{package_type}\" is " "not supported ({file_!r}).".format( package_type=package_type, file_=e.message ) ) abort(404, msg) assert False, "We should never get here"