Changeset 4195
- Timestamp:
- 08/29/08 03:11:07 (3 months ago)
- Files:
-
- screenshotsplugin/0.11/tracscreenshots/api.py (modified) (1 diff)
- screenshotsplugin/0.11/tracscreenshots/core.py (modified) (3 diffs)
- screenshotsplugin/0.11/tracscreenshots/tags.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
screenshotsplugin/0.11/tracscreenshots/api.py
r3161 r4195 13 13 when screenshots are created, modified, or deleted.""" 14 14 15 def screenshot_created( screenshot):15 def screenshot_created(req, screenshot): 16 16 """Called when a screenshot is created. Only argument `screenshot` is 17 17 a dictionary with screenshot field values.""" 18 18 19 def screenshot_changed( screenshot, old_screenshot):19 def screenshot_changed(req, screenshot, old_screenshot): 20 20 """Called when a screenshot is modified. 21 21 `old_screenshot` is a dictionary containing the previous values of the 22 22 fields and `screenshot` is a dictionary with new values. """ 23 23 24 def screenshot_deleted( screenshot):24 def screenshot_deleted(req, screenshot): 25 25 """Called when a screenshot is deleted. `screenshot` argument is 26 26 a dictionary with values of fields of just deleted screenshot.""" screenshotsplugin/0.11/tracscreenshots/core.py
r4192 r4195 336 336 # Notify change listeners. 337 337 for listener in self.change_listeners: 338 listener.screenshot_created( screenshot)338 listener.screenshot_created(context.req, screenshot) 339 339 340 340 # Clear ID to prevent display of edit and delete button. … … 387 387 # Notify change listeners. 388 388 for listener in self.change_listeners: 389 listener.screenshot_changed(screenshot, old_screenshot) 389 listener.screenshot_changed(context.req, screenshot, 390 old_screenshot) 390 391 391 392 # Clear id to prevent display of edit and delete button. … … 424 425 # Notify change listeners. 425 426 for listener in self.change_listeners: 426 listener.screenshot_deleted( screenshot)427 listener.screenshot_deleted(context.req, screenshot) 427 428 428 429 # Clear id to prevent display of edit and delete button. screenshotsplugin/0.11/tracscreenshots/tags.py
r3140 r4195 3 3 import sets 4 4 5 from tracscreenshots.api import * 5 6 from trac.core import * 6 from trac.mimeview import Context 7 from trac.util.html import html 8 from trac.wiki.formatter import format_to_html, format_to_oneliner 7 from trac.resource import * 9 8 10 from tractags.api import ITaggingSystemProvider, DefaultTaggingSystem, \ 11 TagEngine 9 from tractags.api import DefaultTagProvider, TagSystem 12 10 13 from tracscreenshots.api import * 11 class ScreenshotsTagProvider(DefaultTagProvider): 12 """ 13 Tag provider for screenshots. 14 """ 15 realm = 'screenshots' 14 16 15 class ScreenshotsTaggingSystem(DefaultTaggingSystem): 16 """ 17 Tagging system which returns tags of all created screenshots. 18 """ 19 def __init__(self, env, req): 20 # Create context object. 21 self.context = Context.from_request(req)('screenshots-tags') 17 def check_permission(self, perm, operation): 18 #Â Permission table for screenshot tags. 19 permissions = {'view' : 'WIKI_VIEW', 'modify' : 'WIKI_ADMIN'} 22 20 23 DefaultTaggingSystem.__init__(self, env, 'screenshots') 24 25 def name_details(self, name): 26 # Get database access. 27 db = self.env.get_db_cnx() 28 self.context.cursor = db.cursor() 29 30 # Get tagged screenshots. 31 api = self.env[ScreenshotsApi] 32 screenshot = api.get_screenshot(self.context, name) 33 34 # Return a tuple of (href, wikilink, title) 35 defaults = DefaultTaggingSystem.name_details(self, name) 36 if screenshot: 37 return (defaults[0], html.a(screenshot['name'], href = 38 self.env.href.screenshots(screenshot['id']), title = 39 screenshot['description']), screenshot['description']) 40 else: 41 return defaults 21 # First check permissions in default provider then for screenshots. 22 return super(ScreenshotsTagProvider, self).check_permission(perm, 23 operation) and permissions[operation] in perm 42 24 43 25 class ScreenshotsTags(Component): … … 46 28 to screenshots. 47 29 """ 48 implements(ITaggingSystemProvider, IScreenshotChangeListener) 49 50 # ITaggingSystemProvider methods. 51 52 def get_tagspaces_provided(self): 53 yield 'screenshots' 54 55 def get_tagging_system(self, tagspace): 56 return ScreenshotsTaggingSystem(self.env, None) 30 implements(IScreenshotChangeListener) 57 31 58 32 #Â IScreenshotChangeListener methods. 59 33 60 def screenshot_created(self, screenshot):61 # Add tags to screenshot.62 tags = TagEngine(self.env).tagspace.screenshots63 tag_names = self._get_tags(screenshot)64 tags.replace_tags(None, screenshot['id'], list(sets.Set(tag_names)))34 def screenshot_created(self, req, screenshot): 35 # Create temporary resource. 36 resource = Resource() 37 resource.realm = 'screenshots' 38 resource.id = screenshot['id'] 65 39 66 def screenshot_changed(self, screenshot, old_screenshot): 67 # Add tags to screenshot. 68 self.log.debug(screenshot['components']) 40 # Delete tags of screenshot with same ID for sure. 41 tag_system = TagSystem(self.env) 42 tag_system.delete_tags(req, resource) 43 44 #Â Add tags of new screenshot. 45 new_tags = self._get_tags(screenshot) 46 tag_system.add_tags(req, resource, new_tags) 47 48 def screenshot_changed(self, req, screenshot, old_screenshot): 49 # Update old screenshot with new values. 69 50 old_screenshot.update(screenshot) 70 tags = TagEngine(self.env).tagspace.screenshots71 tag_names = self._get_tags(old_screenshot)72 tags.replace_tags(None, old_screenshot['id'], list(sets.Set(tag_names)))73 51 74 def screenshot_deleted(self, screenshot): 75 # Add tags to screenshot. 76 tags = TagEngine(self.env).tagspace.screenshots 77 tag_names = self._get_tags(screenshot) 78 tags.remove_tags(None, screenshot['id'], list(sets.Set(tag_names))) 52 # Create temporary resource. 53 resource = Resource() 54 resource.realm = 'screenshots' 55 resource.id = old_screenshot['id'] 56 57 # Delete old tags. 58 tag_system = TagSystem(self.env) 59 tag_system.delete_tags(req, resource) 60 61 # Add new ones. 62 new_tags = self._get_tags(old_screenshot) 63 tag_system.add_tags(req, resource, new_tags) 64 65 def screenshot_deleted(self, req, screenshot): 66 # Create temporary resource. 67 resource = Resource() 68 resource.realm = 'screenshots' 69 resource.id = screenshot['id'] 70 71 # Delete tags of screenshot. 72 tag_system = TagSystem(self.env) 73 tag_system.delete_tags(req, resource) 79 74 80 75 def _get_tags(self, screenshot): … … 89 84 if screenshot['tags']: 90 85 tags += screenshot['tags'].split() 91 self.log.debug(tags) 92 return tags 86 return sorted(tags) 87 88 def _get_stored_tags(self, req, screenshot_id): 89 tag_system = TagSystem(self.env) 90 resource = Resource('screenshots', screenshot_id) 91 tags = tag_system.get_tags(req, resource) 92 return sorted(tags)
