Changeset 505

Show
Ignore:
Timestamp:
03/19/06 01:34:06 (3 years ago)
Author:
athomas
Message:

TracHacksPlugin:

  • Deprecated getDependencies() in favour of getDetails().
Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trachacksplugin/0.10/trachacks/trachacks.py

    r500 r505  
    22from trac.core import * 
    33from trac.wiki.api import IWikiMacroProvider 
    4 from acct_mgr.htfile import HtPasswdStore 
    5 from acct_mgr.api import IPasswordStore 
    64from tracrpc.api import IXMLRPCHandler 
    7 from tractags.api import TagEngine 
    85import sys, inspect 
    96 
     
    2421        from trac.wiki.model import WikiPage 
    2522        from trac.util import Markup 
     23        from tractags.api import TagEngine 
    2624        import re 
    2725 
     
    5856        return out.getvalue() 
    5957 
    60 class TracHacksAccountManager(HtPasswdStore): 
    61     """ Do some basic validation on new users, and create a new user page. """ 
    62     implements(IPasswordStore) 
     58try: 
     59    from acct_mgr.htfile import HtPasswdStore 
     60    from acct_mgr.api import IPasswordStore 
     61    class TracHacksAccountManager(HtPasswdStore): 
     62        """ Do some basic validation on new users, and create a new user page. """ 
     63        implements(IPasswordStore) 
    6364 
    64     # IPasswordStore 
    65     def config_key(self): 
    66         return 'trachacks-htpasswd' 
     65        # IPasswordStore 
     66        def config_key(self): 
     67            return 'trachacks-htpasswd' 
    6768 
    68     def set_password(self, user, password): 
    69         import re 
    70         if len(user) < 3: 
    71             raise TracError('user name must be at least 3 characters long') 
    72         if not re.match(r'^\w+$', user): 
    73             raise TracError('user name must consist only of alpha-numeric characters') 
    74         if user not in self.get_users(): 
    75             from trac.wiki.model import WikiPage 
    76             db = self.env.get_db_cnx() 
    77             page = WikiPage(self.env, user, db=db) 
    78             # User creation with existing page 
    79             if page.exists: 
    80                 raise TracError('wiki page "%s" already exists' % user) 
    81             else: 
    82                 tagengine = TagEngine(self.env) 
     69        def set_password(self, user, password): 
     70            import re 
     71            if len(user) < 3: 
     72                raise TracError('user name must be at least 3 characters long') 
     73            if not re.match(r'^\w+$', user): 
     74                raise TracError('user name must consist only of alpha-numeric characters') 
     75            if user not in self.get_users(): 
     76                from trac.wiki.model import WikiPage 
     77                db = self.env.get_db_cnx() 
     78                page = WikiPage(self.env, user, db=db) 
     79                # User creation with existing page 
     80                if page.exists: 
     81                    raise TracError('wiki page "%s" already exists' % user) 
     82                else: 
     83                    tagengine = TagEngine(self.env) 
    8384 
    84                 tagengine.wiki.add_tag(None, user, 'user') 
    85                 page.text = '''= %(user)s =\n\n[[ListTags(%(user)s)]]\n\n[[TagIt(user)]]''' % {'user' : user} 
    86                 page.save(user, 'New user %s registered' % user, None) 
    87                 self.env.log.debug("New user %s registered" % user) 
    88         HtPasswdStore.set_password(self, user, password) 
     85                    tagengine.wiki.add_tag(None, user, 'user') 
     86                    page.text = '''= %(user)s =\n\n[[ListTags(%(user)s)]]\n\n[[TagIt(user)]]''' % {'user' : user} 
     87                    page.save(user, 'New user %s registered' % user, None) 
     88                    self.env.log.debug("New user %s registered" % user) 
     89            HtPasswdStore.set_password(self, user, password) 
    8990 
    90     def delete_user(self, user): 
    91         HtPasswdStore.delete_user(self, user) 
     91        def delete_user(self, user): 
     92            HtPasswdStore.delete_user(self, user) 
     93except ImportError: 
     94    pass 
    9295 
    9396class TracHacksRPC(Component): 
     
    102105        yield ('XML_RPC', ((list,),), self.getReleases) 
    103106        yield ('XML_RPC', ((list,),), self.getTypes) 
    104         yield ('XML_RPC', ((list,str),), self.getDependencies) 
     107        yield ('XML_RPC', ((dict,str),), self.getDetails) 
    105108 
    106109    # Other methods 
    107110    def getReleases(self): 
    108111        """ Return a list of Trac releases TracHacks is aware of. """ 
     112        from tractags.api import TagEngine 
    109113        return TagEngine(self.env).wiki.get_tagged_names('release') 
    110114 
    111115    def getTypes(self): 
    112116        """ Return a list of known Hack types. """ 
     117        from tractags.api import TagEngine 
    113118        return TagEngine(self.env).wiki.get_tagged_names('type') 
    114119 
     
    116121        """ Fetch a list of hacks for Trac release, of type. """ 
    117122        from trac.versioncontrol.api import Node 
     123        from tractags.api import TagEngine 
    118124        repo = self.env.get_repository(req.authname) 
    119125        wikitags = TagEngine(self.env).wiki 
     
    130136            yield (plugin, rev) 
    131137 
    132     def getDependencies(self, req, hack): 
     138    def getDetails(self, req, hack): 
    133139        """ Fetch hack dependencies. """ 
     140        from tractags.api import TagEngine 
    134141        wikitags = TagEngine(self.env).wiki 
    135142        tags = wikitags.get_tags(hack) 
    136143        types = self.getTypes() 
    137144        hacks = wikitags.get_tagged_names(*types) 
    138         return list(hacks.intersection(tags)) 
     145 
     146        dependencies = hacks.intersection(tags) 
     147        href, htmllink, description = wikitags.name_details(hack) 
     148        return {'name': hack, 'dependencies': tuple(dependencies), 
     149                'description': description}