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)
Example #2
0
    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)
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
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
Example #6
0
    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)
Example #8
0
    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)
Example #10
0
    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"
Example #11
0
    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"