def get_datapreview_recombinant(resource_name, res_id): from ckanext.recombinant.tables import get_chromo chromo = get_chromo(resource_name) default_preview_args = {} lc = ckanapi.LocalCKAN(username=c.user) results = lc.action.datastore_search( resource_id=res_id, limit=0, ) priority = len(chromo['datastore_primary_key']) pk_priority = 0 fields = [] for f in chromo['fields']: out = { 'type': f['datastore_type'], 'id': f['datastore_id'], 'label': h.recombinant_language_text(f['label'])} if out['id'] in chromo['datastore_primary_key']: out['priority'] = pk_priority pk_priority += 1 else: out['priority'] = priority priority += 1 fields.append(out) return h.snippet('package/wet_datatable.html', resource_name=resource_name, resource_id=res_id, ds_fields=fields)
def recombinant_description_to_markup(text): """ Return text as HTML escaped strings joined with '<br/>, links enabled' """ # very lax, this is trusted text defined in a schema not user-provided url_pattern = r'(https?:[^)\s"]{20,})' markup = [] for i, part in enumerate(re.split(url_pattern, h.recombinant_language_text(text))): if i % 2: markup.append(jinja2.Markup('<a href="{0}">{1}</a>'.format(part, jinja2.escape(part)))) else: markup.extend(jinja2.Markup('<br/>'.join( jinja2.escape(t) for t in part.split('\n') ))) # extra dict because language text expected and language text helper # will cause plain markup to be escaped return {'en': jinja2.Markup(''.join(markup))}