All pastes #1463053 Raw Edit

TagPublic trac plugin

public python v1 · immutable
#1463053 ·published 2009-06-17 06:34 UTC
rendered paste body
from trac.core import *from trac.perm import IPermissionPolicytry:    set = setexcept NameError:    from sets import Set as set__all__ = ['TagPublic']class TagPublic(Component):    """Central tasks for the TagPublic plugin."""    implements(IPermissionPolicy)    # IPermissionPolicy(Interface)    def check_permission(self, action, username, resource, perm):#        self.env.log.debug('FFFFFFFOOOOOOOOOOOOOO action=%s username=%s, resource=%s, perm=%s' % (action, username, resource, perm))        if (username != 'anonymous'):            return None        if action not in ['WIKI_VIEW','BLOG_VIEW','TICKET_VIEW','TAGS_VIEW','SEARCH_VIEW','TIMELINE_VIEW']:            return None        if (resource is None):#           self.env.log.debug('precheck1=! -> allow')            return True        if (resource.realm is None):#           self.env.log.debug('precheck2?! -> allow')            return True#       self.env.log.debug('FNORDDDDDDDD resource.id = "%s" resource.realm = "%s"' % (resource.id, resource.realm))        if (resource.id is None):#           self.env.log.debug('resource.id is none -> allow')            return True        tags = self.get_tags(resource)#       self.env.log.debug('BAAAAAR ressource tags ="%s"' % tags)        for bla in self.tags_to_publish:                if (bla in tags):#                       self.env.log.debug('HOOORAY! bla = %s' % bla)                        return True#       self.env.log.debug('FRACK!!')        return None    def get_tags_res(self, resource):        db = self.env.get_db_cnx()        cursor = db.cursor()        if resource.realm == "wiki":                cursor.execute('SELECT tag FROM tags WHERE tagspace=%s AND name=%s',                               (resource.realm, resource.id))        elif resource.realm == "ticket":                cursor.execute('SELECT keywords FROM ticket WHERE id=%s', (resource.id,))        elif resource.realm == "blog":                cursor.execute('SELECT categories,max(version) from fullblog_posts where name=%s', (resource.id,))#       elif resource.realm = "tag":            else:                return        for row in cursor:#               self.env.log.debug(row[0])                yield row[0]    def get_tags(self, resource):        """Get tags for resource."""        return set (self.get_tags_res(resource))~