Changeset 505
- Timestamp:
- 03/19/06 01:34:06 (3 years ago)
- Files:
-
- trachacksplugin/0.10/trachacks/trachacks.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trachacksplugin/0.10/trachacks/trachacks.py
r500 r505 2 2 from trac.core import * 3 3 from trac.wiki.api import IWikiMacroProvider 4 from acct_mgr.htfile import HtPasswdStore5 from acct_mgr.api import IPasswordStore6 4 from tracrpc.api import IXMLRPCHandler 7 from tractags.api import TagEngine8 5 import sys, inspect 9 6 … … 24 21 from trac.wiki.model import WikiPage 25 22 from trac.util import Markup 23 from tractags.api import TagEngine 26 24 import re 27 25 … … 58 56 return out.getvalue() 59 57 60 class TracHacksAccountManager(HtPasswdStore): 61 """ Do some basic validation on new users, and create a new user page. """ 62 implements(IPasswordStore) 58 try: 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) 63 64 64 # IPasswordStore65 def config_key(self):66 return 'trachacks-htpasswd'65 # IPasswordStore 66 def config_key(self): 67 return 'trachacks-htpasswd' 67 68 68 def set_password(self, user, password):69 import re70 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 WikiPage76 db = self.env.get_db_cnx()77 page = WikiPage(self.env, user, db=db)78 # User creation with existing page79 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) 83 84 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) 89 90 90 def delete_user(self, user): 91 HtPasswdStore.delete_user(self, user) 91 def delete_user(self, user): 92 HtPasswdStore.delete_user(self, user) 93 except ImportError: 94 pass 92 95 93 96 class TracHacksRPC(Component): … … 102 105 yield ('XML_RPC', ((list,),), self.getReleases) 103 106 yield ('XML_RPC', ((list,),), self.getTypes) 104 yield ('XML_RPC', (( list,str),), self.getDependencies)107 yield ('XML_RPC', ((dict,str),), self.getDetails) 105 108 106 109 # Other methods 107 110 def getReleases(self): 108 111 """ Return a list of Trac releases TracHacks is aware of. """ 112 from tractags.api import TagEngine 109 113 return TagEngine(self.env).wiki.get_tagged_names('release') 110 114 111 115 def getTypes(self): 112 116 """ Return a list of known Hack types. """ 117 from tractags.api import TagEngine 113 118 return TagEngine(self.env).wiki.get_tagged_names('type') 114 119 … … 116 121 """ Fetch a list of hacks for Trac release, of type. """ 117 122 from trac.versioncontrol.api import Node 123 from tractags.api import TagEngine 118 124 repo = self.env.get_repository(req.authname) 119 125 wikitags = TagEngine(self.env).wiki … … 130 136 yield (plugin, rev) 131 137 132 def getDe pendencies(self, req, hack):138 def getDetails(self, req, hack): 133 139 """ Fetch hack dependencies. """ 140 from tractags.api import TagEngine 134 141 wikitags = TagEngine(self.env).wiki 135 142 tags = wikitags.get_tags(hack) 136 143 types = self.getTypes() 137 144 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}
