Changeset 26
- Timestamp:
- 02/11/12 08:06:13 (16 months ago)
- Location:
- trunk/Snapshot
- Files:
-
- 3 edited
-
setup.py (modified) (1 diff)
-
snapshot/macro.py (modified) (1 diff)
-
snapshot/query.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Snapshot/setup.py
r21 r26 12 12 url='http://trac-hacks.org/wiki/matobaa', 13 13 description='store query result to wiki as static snapshot', 14 zip_safe= False,14 zip_safe=True, 15 15 packages=find_packages(exclude=['*.tests']), 16 16 include_package_data=True, -
trunk/Snapshot/snapshot/macro.py
r25 r26 46 46 for field in ticket_fields: 47 47 fields[field['name']] = {'label': field['label']} # transform list to expected dict 48 # fail safe 49 fields[None] = 'NONE' 50 for group in groups.keys(): 51 if not fields.has_key(group): 52 fields[group] = group 48 53 # 49 54 group_name = 'group' in args and args['group'] or None -
trunk/Snapshot/snapshot/query.py
r24 r26 6 6 from genshi.filters.transform import Transformer 7 7 from trac.core import Component, implements 8 from trac.util.datefmt import format_datetime 8 from trac.resource import get_resource_url, Resource 9 from trac.util.datefmt import format_datetime, format_time, from_utimestamp, \ 10 format_date 9 11 from trac.web.api import ITemplateStreamFilter 10 12 from trac.wiki.model import WikiPage 11 13 12 class SaveToWiki(Component):14 class Query(Component): 13 15 implements (ITemplateStreamFilter) 14 16 … … 33 35 text = '= Snapshot of [%s the query]: =\n' % query_string 34 36 text += '{{{#!QueryResults(group=%s) \n' % data['query'].group 35 text += '||= href =||= ' + ' =||= '.join(cols) 36 text += '\n' 37 text += '||= href =||= %s\n' % ' =||= '.join(cols) 37 38 for (group_name, tickets) in data['groups']: 38 39 text += '|| group: %s\n' % group_name … … 46 47 tag.input(name='page', value=page_name)) 47 48 return stream | Transformer('//div[@id="content"]/div[@class="buttons"]') \ 48 .append(tag.form(div, action='wiki')) 49 .append(tag.form(div, action=get_resource_url(self.env, Resource('wiki'), self.env.href))) 50 51 class Report(Component): 52 implements(ITemplateStreamFilter) 53 54 @classmethod 55 def formatter(self, col, cell_value): 56 if col == 'time': 57 return cell_value != '' and format_time(from_utimestamp(long(cell_value))) or '--' 58 if col in ('date', 'created', 'modified'): 59 return cell_value != '' and format_date(from_utimestamp(long(cell_value))) or '--' 60 if col == 'datetime': 61 return cell_value != '' and format_datetime(from_utimestamp(long(cell_value))) or '--' 62 return cell_value 63 64 #ITemplateStreamFilter methods 65 def filter_stream(self, req, method, filename, stream, data): 66 if filename != 'report_view.html': 67 return stream 68 page_name = 'report:%s' % data['context'].resource.id 69 page_label = data['title'] 70 page = WikiPage(self.env, page_name) 71 if 'WIKI_MODIFY' not in req.perm(page.resource): 72 return stream 73 text = '= Snapshot of [%s %s]: =\n' % (page_name, page_label) 74 text += '{{{#!QueryResults\n' 75 cols = [header['col'] for header in data['header_groups'][0] if not header['hidden']] 76 text += '||= href =||= %s\n' % ' =||= '.join(cols) 77 for groupindex, row_group in data['row_groups']: 78 text += '|| group: %s\n' % groupindex 79 for row in row_group: 80 row = row['cell_groups'][0] 81 ticket = {} 82 for value in row: 83 ticket[value['header']['col']] = value['value'] 84 ticket['href'] = get_resource_url(self.env, Resource('ticket',ticket.get('ticket',0)), self.env.href) 85 text += '|| %s || %s\n' % ( ticket['href'] , 86 ' || '.join([self.formatter(col, ticket[col]) for col in cols])) 87 text += '}}}' 88 div = tag.div(tag.input(value='Save as wiki:', type='submit'), 89 tag.input(name='action', value='edit', type='hidden'), 90 tag.input(name='text', value=text, type='hidden'), 91 tag.input(name='page', value=page_name)) 92 return stream | Transformer('//div[@id="content"]/div[@class="buttons"]') \ 93 .append(tag.form(div, action=get_resource_url(self.env, Resource('wiki'), self.env.href)))
Note: See TracChangeset
for help on using the changeset viewer.