def render_timeline_event(self, context, field, event): bp_resource, bp, bc = event[3] compat_format_0_11_2 = 'oneliner' if hasattr(context, '_hints'): compat_format_0_11_2 = None if bc: # A blog comment if field == 'url': return context.href.blog(bp.name) + '#comment-%d' % bc.number elif field == 'title': return tag('Blog: ', tag.em(bp.title), ' comment added') elif field == 'description': comment = compat_format_0_11_2 and shorten_line(bc.comment) \ or bc.comment return format_to(self.env, compat_format_0_11_2, context(resource=bp_resource), comment) else: # A blog post if field == 'url': return context.href.blog(bp.name) elif field == 'title': return tag('Blog: ', tag.em(bp.title), bp.version > 1 and ' edited' or ' created') elif field == 'description': comment = compat_format_0_11_2 and shorten_line(bp.version_comment) \ or bp.version_comment return format_to(self.env, compat_format_0_11_2, context(resource=bp_resource), comment)
def process_request(self, req): # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that # the client has at least some permission). Additionally, allow GET # requests from TRAC_ADMIN for testing purposes. if req.method != 'POST': req.perm.require('TRAC_ADMIN') # @todo: Embed "tips" within the rendered output for the editor # (recognize TracLinks, table-stuff, macros, processors) # @todo: Save the content in server-side user-specific field for recovery realm = req.args.get('realm', 'wiki') id = req.args.get('id') version = req.args.get('version') if version is not None: try: version = int(version) except ValueError: version = None text = req.args.get('text', '') flavor = req.args.get('flavor') options = {} if 'escape_newlines' in req.args: options['escape_newlines'] = bool(int(req.args['escape_newlines'] or 0)) if 'shorten' in req.args: options['shorten'] = bool(int(req.args['shorten'] or 0)) resource = Resource(realm, id=id, version=version) context = Context.from_request(req, resource) rendered = format_to(self.env, flavor, context, text, **options) req.send(rendered.encode('utf-8'))
def process_request(self, req): # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that # the client has at least some permission). Additionally, allow GET # requests from TRAC_ADMIN for testing purposes. if req.method != 'POST': req.perm.require('TRAC_ADMIN') realm = req.args.get('realm', 'wiki') id = req.args.get('id') version = req.args.get('version') if version is not None: try: version = int(version) except ValueError: version = None text = req.args.get('text', '') flavor = req.args.get('flavor') options = {} if 'escape_newlines' in req.args: options['escape_newlines'] = bool(int(req.args['escape_newlines'] or 0)) if 'shorten' in req.args: options['shorten'] = bool(int(req.args['shorten'] or 0)) resource = Resource(realm, id=id, version=version) context = Context.from_request(req, resource) rendered = format_to(self.env, flavor, context, text, **options) req.send(rendered.encode('utf-8'))
def process_request(self, req): # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that # the client has at least some permission). Additionally, allow GET # requests from TRAC_ADMIN for testing purposes. if req.method != 'POST': req.perm.require('TRAC_ADMIN') realm = req.args.get('realm', 'wiki') id = req.args.get('id') version = req.args.get('version') if version is not None: try: version = int(version) except ValueError: version = None text = req.args.get('text', '') flavor = req.args.get('flavor') options = {} if 'escape_newlines' in req.args: options['escape_newlines'] = bool( int(req.args['escape_newlines'] or 0)) if 'shorten' in req.args: options['shorten'] = bool(int(req.args['shorten'] or 0)) resource = Resource(realm, id=id, version=version) context = Context.from_request(req, resource) rendered = format_to(self.env, flavor, context, text, **options) req.send(rendered.encode('utf-8'))
def render_timeline_event(self, context, field, event): milestone, description = event[3] if field == 'url': return context.href.milestone(milestone.id) elif field == 'title': return tag('Milestone ', tag.em(milestone.id), ' completed') elif field == 'description': return format_to(self.env, None, context(resource=milestone), description)
def render_timeline_event(self, context, field, event): milestone, verb, status, description, comment = event[3] if field == 'url': return context.href.milestone(milestone.id) elif field == 'title': return tag('Milestone ', tag.em(milestone.id), ' ', verb) elif field == 'description': return format_to(self.env, None, context(resource=milestone), status=='comment' and comment or description)
def render_timeline_event(self, context, field, event): milestone, verb, status, description, comment = event[3] if field == 'url': return context.href.milestone(milestone.id) elif field == 'title': return tag('Milestone ', tag.em(milestone.id), ' ', verb) elif field == 'description': return format_to(self.env, None, context(resource=milestone), status == 'comment' and comment or description)
def render_timeline_event(self, context, field, event): milestone, description = event[3] if field == 'url': return context.href.milestone(milestone.id) elif field == 'title': return tag_("Milestone %(name)s completed", name=tag.em(milestone.id)) elif field == 'description': child_resource = context.child(resource=milestone) return format_to(self.env, None, child_resource, description)
def render_timeline_event(self, context, field, event): (start, sprint) = event[3] if field == 'url': return context.href.sprint(sprint.name) elif field == 'title': if start: return tag('Sprint ', tag.em(sprint.name), ' started') return tag('Sprint ', tag.em(sprint.name), ' finished') elif field == 'description': return format_to(self.env, None, context(resource=sprint), sprint.description)
def render_timeline_event(self, context, field, event): attachment, descr = event[3] if field == 'url': return self.get_resource_url(attachment, context.href) elif field == 'title': name = get_resource_name(self.env, attachment.parent) title = get_resource_summary(self.env, attachment.parent) return tag(tag.em(os.path.basename(attachment.id)), _(" attached to "), tag.em(name, title=title)) elif field == 'description': return format_to(self.env, None, context(attachment.parent), descr)
def render_timeline_event(self, context, field, event): bp_resource, bp, bc = event[3] compat_format_0_11_2 = "oneliner" if hasattr(context, "_hints"): compat_format_0_11_2 = None if bc: # A blog comment if field == "url": return context.href.blog(bp.name) + "#comment-%d" % bc.number elif field == "title": return tag("Blog: ", tag.em(bp.title), " comment added") elif field == "description": comment = compat_format_0_11_2 and shorten_line(bc.comment) or bc.comment return format_to(self.env, compat_format_0_11_2, context(resource=bp_resource), comment) else: # A blog post if field == "url": return context.href.blog(bp.name) elif field == "title": return tag("Blog: ", tag.em(bp.title), bp.version > 1 and " edited" or " created") elif field == "description": comment = compat_format_0_11_2 and shorten_line(bp.version_comment) or bp.version_comment return format_to(self.env, compat_format_0_11_2, context(resource=bp_resource), comment)
def render_timeline_event(self, context, field, event): attachment, descr = event[3] if field == 'url': return self.get_resource_url(attachment, context.href) elif field == 'title': name = get_resource_name(self.env, attachment.parent) title = get_resource_summary(self.env, attachment.parent) return tag_("%(attachment)s attached to %(resource)s", attachment=tag.em(os.path.basename(attachment.id)), resource=tag.em(name, title=title)) elif field == 'description': return format_to(self.env, None, context.child(attachment.parent), descr)
def render_timeline_event(self, context, field, event): wiki_page, comment = event[3] if field == 'url': return context.href.wiki(wiki_page.id, version=wiki_page.version) elif field == 'title': return tag(tag.em(get_resource_name(self.env, wiki_page)), wiki_page.version > 1 and ' edited' or ' created') elif field == 'description': markup = format_to(self.env, None, context(resource=wiki_page), comment) if wiki_page.version > 1: diff_href = context.href.wiki( wiki_page.id, version=wiki_page.version, action='diff') markup = tag(markup, ' ', tag.a('(diff)', href=diff_href)) return markup
def render_timeline_event(self, context, field, event): wiki_page, comment = event[3] if field == 'url': return context.href.wiki(wiki_page.id, version=wiki_page.version) elif field == 'title': name = tag.em(get_resource_name(self.env, wiki_page)) if wiki_page.version > 1: return tag_("%(page)s edited", page=name) else: return tag_("%(page)s created", page=name) elif field == 'description': markup = format_to(self.env, None, context.child(resource=wiki_page), comment) if wiki_page.version > 1: diff_href = context.href.wiki( wiki_page.id, version=wiki_page.version, action='diff') markup = tag(markup, " (", tag.a(_("diff"), href=diff_href), ")") return markup
def render_timeline_event(self, context, field, event): wiki_page, comment = event[3] if field == 'url': return context.href.wiki(wiki_page.id, version=wiki_page.version) elif field == 'title': name = tag.em(get_resource_name(self.env, wiki_page)) if wiki_page.version > 1: return tag_('%(page)s edited', page=name) else: return tag_('%(page)s created', page=name) elif field == 'description': markup = format_to(self.env, None, context.child(resource=wiki_page), comment) if wiki_page.version > 1: diff_href = context.href.wiki( wiki_page.id, version=wiki_page.version, action='diff') markup = tag(markup, ' (', tag.a(_('diff'), href=diff_href), ')') return markup
def process_request(self, req): # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that # the client has at least some permission). Additionally, allow GET # requests from TRAC_ADMIN for testing purposes. if req.method != 'POST': req.perm.require('TRAC_ADMIN') realm = req.args.get('realm', WikiSystem.realm) id = req.args.get('id') version = req.args.getint('version') text = req.args.get('text', '') flavor = req.args.get('flavor') options = {} if 'escape_newlines' in req.args: options['escape_newlines'] = \ req.args.getbool('escape_newlines', False) if 'shorten' in req.args: options['shorten'] = req.args.getbool('shorten', False) resource = Resource(realm, id=id, version=version) context = web_context(req, resource) rendered = format_to(self.env, flavor, context, text, **options) + \ chrome_info_script(req) req.send(rendered.encode('utf-8'))
def process_request(self, req): # Allow all POST requests (with a valid __FORM_TOKEN, ensuring that # the client has at least some permission). Additionally, allow GET # requests from TRAC_ADMIN for testing purposes. if req.method != 'POST': req.perm.require('TRAC_ADMIN') realm = req.args.get('realm', WikiSystem.realm) id = req.args.get('id') version = as_int(req.args.get('version'), None) text = req.args.get('text', '') flavor = req.args.get('flavor') options = {} if 'escape_newlines' in req.args: options['escape_newlines'] = bool(int(req.args['escape_newlines'] or 0)) if 'shorten' in req.args: options['shorten'] = bool(int(req.args['shorten'] or 0)) resource = Resource(realm, id=id, version=version) context = web_context(req, resource) rendered = format_to(self.env, flavor, context, text, **options) + \ chrome_info_script(req) req.send(rendered.encode('utf-8'))
def render_item(self, req, model, pagename): creators = model.get_creators(pagename) field_value = model.get_item_all_fields_values(pagename) known_columns = ['volume', 'issue', 'publicationTitle', 'pages','title','date','abstractNote'] field_value_dic_known = {} field_value_dic_other = [] for iid, fid, value, itid, order, fn in field_value: if fn in known_columns: field_value_dic_known[fn] = [iid, fid, value, itid, order] else: field_value_dic_other.append([iid, fid, value, itid, order, fn]) item = [] date_columns = ['dateAdded','dateModified','key','firstCreator','year'] item_date = model.get_item_columns_by_iids([pagename],date_columns) item_date = item_date[0] key = {} key['name'] = 'Cite Key:' cite_key = '[[ZotCite(' + item_date[3] + '(' +item_date[4]+item_date[5]+'))]]' key['value'] = cite_key.replace(' ', '') item.append(key) # for author author = {} author['name'] = 'Authors:' author['value'] = '' if creators: value = [] for id, cid, f, l in creators: v = tag.a( l + ' ' + f, href = req.href.zotero('qjump',author=str(cid) ) ) value.append(v) value.append(tag.span('; ')) value.pop() author['value'] = tag.span( value ) item.append(author) # title title = {} title['name'] = 'Title:' title['value'] = '' if field_value_dic_known.has_key('title'): title['value'] = field_value_dic_known['title'][2] item.append(title) # publisher publisher = {} publisher['name'] = 'Publication:' value = [] if field_value_dic_known.has_key('publicationTitle'): publicationTitle = field_value_dic_known['publicationTitle'][2] value.append(tag.a(publicationTitle, href=req.href.zotero('qjump',publisher=publicationTitle ))) if field_value_dic_known.has_key('date'): year = field_value_dic_known['date'][2] year = year[0:4] value.append(tag.span('. ')) value.append(tag.a(year, href=req.href.zotero('qjump',year=year ))) if field_value_dic_known.has_key('volume'): value.append( tag.span(', '+field_value_dic_known['volume'][2])) if field_value_dic_known.has_key('issue'): value.append( tag.span(' ('+field_value_dic_known['issue'][2], ')')) if field_value_dic_known.has_key('pages'): value.append( tag.span(': '+field_value_dic_known['pages'][2])) publisher['value'] = tag.span(value) item.append(publisher) # abstract if field_value_dic_known.has_key('abstractNote'): abstract = {} abstract['name'] = 'Abstract:' abstract['value'] = format_to(self.env, [], Context.from_request(req, 'zotero'), field_value_dic_known['abstractNote'][2]) item.append(abstract) # other columns for iid, fid, value, itid, order, fn in field_value_dic_other: field = {} if zotero_fields_mapping_name.has_key(fn): field['name'] = zotero_fields_mapping_name[fn]['label'] + ':' else: field['name'] = fn + ':' if fn == 'url': field['value'] = tag.a(value, href=value) elif fn == 'DOI': field['value'] = tag.a(value, href='http://dx.doi.org/'+value) else: wiki_tag = format_to_oneliner(self.env,Context.from_request(req, 'zotero'), value) field['value'] = wiki_tag item.append(field) # for added and modified time # for added time add_date = {} add_date['name'] = 'Date Added:' add_date['value'] = item_date[1] item.append(add_date) # for modified time modified_date = {} modified_date['name'] = 'Modified:' modified_date['value'] = item_date[2] item.append(modified_date) # For attachment altype = self.env.config.get('zotero', 'attachmentlink','web' ) att = model.get_items_attachments([pagename]) if att: attachment = {} attachment['name'] = 'Attachment:' a_value = [] for a in att: file_name = a[3] file_name = file_name[8:] href = 'zotero://attachment/'+ a[1]+'/' if altype == 'web': path = self.env.config.get('zotero', 'path' ) href = req.href.chrome('site',path,'storage',a[4],file_name) if 'ZOTERO_ATTACHMENT' in req.perm: a_value.append(tag.a(file_name, href = href)) a_value.append(tag.br()) else: a_value.append(tag.span(file_name)) a_value.append(tag.br()) a_value.pop() attachment['value'] = tag.span( a_value ) item.append(attachment) return item
def render_timeline_event(self, context, field, event): changesets, message, show_location, show_files = event[3] rev_b, rev_a = changesets[0].rev, changesets[-1].rev if field == 'url': if rev_a == rev_b: return context.href.changeset(rev_a) else: return context.href.log(rev=rev_b, stop_rev=rev_a) elif field == 'description': if self.wiki_format_messages: markup = '' if self.timeline_long_messages: # override default flavor context = context() context.set_hints(wiki_flavor='html', preserve_newlines=True) else: markup = message message = None if 'BROWSER_VIEW' in context.perm: files = [] if show_location: filestats = self._prepare_filestats() for c in changesets: for chg in c.get_changes(): filestats[chg[2]] += 1 files.append(chg[0]) stats = [(tag.div(class_=kind), tag.span(count, ' ', count > 1 and (kind == 'copy' and 'copies' or kind + 's') or kind)) for kind in Changeset.ALL_CHANGES for count in (filestats[kind],) if count] markup = tag.ul( tag.li(stats, ' in ', tag.strong(self._get_location(files) or '/')), markup, class_="changes") elif show_files: for c in changesets: for chg in c.get_changes(): if show_files > 0 and len(files) > show_files: break files.append(tag.li(tag.div(class_=chg[2]), chg[0] or '/')) if show_files > 0 and len(files) > show_files: files = files[:show_files] + [tag.li(u'\u2026')] markup = tag(tag.ul(files, class_="changes"), markup) if message: markup += format_to(self.env, None, context, message) return markup if rev_a == rev_b: title = tag('Changeset ', tag.em('[%s]' % rev_a)) else: title = tag('Changesets ', tag.em('[', rev_a, '-', rev_b, ']')) if field == 'title': return title elif field == 'summary': return '%s: %s' % (title, shorten_line(message))