Changeset 4092
- Timestamp:
- 07/31/08 08:01:17 (4 months ago)
- Files:
-
- pollmacro/0.11 (copied) (copied from pollmacro/0.9)
- pollmacro/0.11/setup.py (modified) (1 diff)
- pollmacro/0.11/tracpoll/tracpoll.py (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
pollmacro/0.11/setup.py
r675 r4092 2 2 3 3 setup(name='TracPoll', 4 version='0. 1',4 version='0.2', 5 5 packages=['tracpoll'], 6 6 entry_points = {'trac.plugins': ['tracpoll = tracpoll']}, pollmacro/0.11/tracpoll/tracpoll.py
r1156 r4092 4 4 from StringIO import StringIO 5 5 from trac.core import * 6 from trac.config import Option 6 7 from trac.perm import IPermissionRequestor 7 8 from trac.util import sorted, escape 8 9 from trac.wiki.formatter import wiki_to_oneliner 10 from trac.wiki.macros import WikiMacroBase 9 11 from trac.web.chrome import ITemplateProvider, add_stylesheet 10 12 … … 22 24 self.votes = {} 23 25 if os.path.isfile(self.store): 24 poll = pickle.load(open(self.store, 'r')) 26 fd = open(self.store, 'r') 27 try: 28 poll = pickle.load(fd) 29 finally: 30 fd.close() 25 31 assert self.title == poll['title'], \ 26 32 'Stored poll is not the same as this one.' … … 33 39 data = {'title': self.title, 34 40 'votes': self.votes} 35 pickle.dump(data, open(self.store, 'w')) 41 if not os.path.exists(os.path.dirname(self.store)): 42 raise TracError('Vote path %s does not exist.' % self.store) 43 fd = open(self.store, 'w') 44 try: 45 pickle.dump(data, fd) 46 finally: 47 fd.close() 36 48 37 49 def populate(self, req): … … 85 97 return out.getvalue() 86 98 87 try:88 from trac.wiki.macros import WikiMacroBase89 except ImportError:90 # TODO Remove this when ported to 0.1091 from trac.wiki.api import IWikiMacroProvider92 93 class WikiMacroBase(Component):94 """Abstract base class for wiki macros."""95 96 implements(IWikiMacroProvider)97 abstract = True98 99 def get_macros(self):100 """Yield the name of the macro based on the class name."""101 name = self.__class__.__name__102 if name.endswith('Macro'):103 name = name[:-5]104 yield name105 106 def get_macro_description(self, name):107 """Return the subclass's docstring."""108 return inspect.getdoc(self.__class__)109 110 def render_macro(self, req, name, content):111 raise NotImplementedError112 99 113 100 class PollMacro(WikiMacroBase): … … 132 119 implements(IPermissionRequestor, ITemplateProvider) 133 120 134 base_dir = property(lambda self: self.env.config.get('poll', 'base_dir', '/tmp')) 121 base_dir = Option('poll', 'base_dir', '/tmp', 122 'Path where poll pickle dumps should be stored.') 135 123 136 124 def render_macro(self, req, name, content): … … 163 151 else: 164 152 all_votes.append(('%08x' % abs(hash(vote)), None, 165 wiki_to_oneliner(vote, self.env )))153 wiki_to_oneliner(vote, self.env, req=req))) 166 154 167 155 # Make tickets look pretty … … 173 161 summary = ticket['summary'] + ' (#%i)' % id 174 162 priority = Priority(self.env, ticket['priority']).value 175 summary = wiki_to_oneliner(summary, self.env )163 summary = wiki_to_oneliner(summary, self.env, req=req) 176 164 177 165 all_votes.append((str(id), "ticket prio%s%s%s" %
