def read(self, id): context = {'model': model, 'session': model.Session, 'user': c.user or c.author, 'extras_as_string': True, 'schema': self._form_to_db_schema()} data_dict = {'id': id} split = id.split('@') if len(split) == 2: data_dict['id'], revision = split try: date = datetime.datetime(*map(int, re.split('[^\d]', revision))) context['revision_date'] = date except ValueError: context['revision_id'] = revision #check if package exists try: c.pkg_dict = get.package_show(context, data_dict) c.pkg = context['package'] except NotFound: abort(404, _('Package not found')) except NotAuthorized: abort(401, _('Unauthorized to read package %s') % id) cache_key = self._pkg_cache_key(c.pkg) etag_cache(cache_key) #set a cookie so we know whether to display the welcome message c.hide_welcome_message = bool(request.cookies.get('hide_welcome_message', False)) response.set_cookie('hide_welcome_message', '1', max_age=3600) #(make cross-site?) # used by disqus plugin c.current_package_id = c.pkg.id if config.get('rdf_packages'): accept_header = request.headers.get('Accept', '*/*') for content_type, exts in negotiate(autoneg_cfg, accept_header): if "html" not in exts: rdf_url = '%s%s.%s' % (config['rdf_packages'], c.pkg.id, exts[0]) redirect(rdf_url, code=303) break PackageSaver().render_package(c.pkg_dict, context) return render('package/read.html')
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'] c.pkg_json = json.dumps(c.pkg_dict) except NotFound: abort(404, _('Dataset not found')) except NotAuthorized: abort(401, _('Unauthorized to read package %s') % id) #set a cookie so we know whether to display the welcome message c.hide_welcome_message = bool(request.cookies.get('hide_welcome_message', False)) response.set_cookie('hide_welcome_message', '1', max_age=3600) #(make cross-site?) # used by disqus plugin c.current_package_id = c.pkg.id # Add the package's activity stream (already rendered to HTML) to the # template context for the package/read.html template to retrieve # later. c.package_activity_stream = \ ckan.logic.action.get.package_activity_list_html(context, {'id': c.current_package_id}) if config.get('rdf_packages'): accept_header = request.headers.get('Accept', '*/*') for content_type, exts in negotiate(autoneg_cfg, accept_header): if "html" not in exts:
_('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'] c.pkg_json = json.dumps(c.pkg_dict) except NotFound: abort(404, _('Package not found')) except NotAuthorized: abort(401, _('Unauthorized to read package %s') % id) #set a cookie so we know whether to display the welcome message c.hide_welcome_message = bool( request.cookies.get('hide_welcome_message', False)) response.set_cookie('hide_welcome_message', '1', max_age=3600) #(make cross-site?) # used by disqus plugin c.current_package_id = c.pkg.id if config.get('rdf_packages'): accept_header = request.headers.get('Accept', '*/*') for content_type, exts in negotiate(autoneg_cfg, accept_header): if "html" not in exts: rdf_url = '%s%s.%s' % (config['rdf_packages'], c.pkg.id, exts[0]) redirect(rdf_url, code=303) break PackageSaver().render_package(c.pkg_dict, context) return render('package/read.html')