Ticket #2456: userdir-for-r4673-0.10-stable.diff
| File userdir-for-r4673-0.10-stable.diff, 5.4 kB (added by Brad Anderson <brad@…>, 18 months ago) |
|---|
-
trac/env.py
21 21 from trac.core import Component, ComponentManager, implements, Interface, \ 22 22 ExtensionPoint, TracError 23 23 from trac.db import DatabaseManager 24 from trac.userdir import * 24 25 from trac.versioncontrol import RepositoryManager 25 26 26 27 __all__ = ['Environment', 'IEnvironmentSetupParticipant', 'open_environment'] … … 61 62 * wiki and ticket attachments. 62 63 """ 63 64 setup_participants = ExtensionPoint(IEnvironmentSetupParticipant) 65 userdirs = ExtensionPoint(IUserDirectory) 64 66 65 67 base_url = Option('trac', 'base_url', '', 66 68 """Base URL of the Trac deployment. … … 296 298 self.log = logger_factory(logtype, logfile, self.log_level, self.path, 297 299 format=format) 298 300 299 def get_known_users(self, cnx=None): 300 """Generator that yields information about all known users, i.e. users 301 that have logged in to this Trac environment and possibly set their name 302 and email. 301 def get_known_user_info(self, limit=None): 302 cnx = self.get_db_cnx() 303 304 # should accumulate user_info from all IUserDirectory providers - desirable? 305 for userdir in self.userdirs: 306 for username, name, email in userdir.get_known_user_info(limit): 307 yield username, name, email 303 308 304 This function generates one tuple for every user, of the form 305 (username, name, email) ordered alpha-numerically by username. 309 def get_known_users(self, limit=None): 310 cnx = self.get_db_cnx() 311 312 # should accumulate users from all IUserDirectory providers - desirable? 313 for userdir in self.userdirs: 314 for username in userdir.get_known_users(limit): 315 yield username 306 316 307 @param cnx: the database connection; if ommitted, a new connection is308 retrieved309 """310 if not cnx:311 cnx = self.get_db_cnx()312 cursor = cnx.cursor()313 cursor.execute("SELECT DISTINCT s.sid, n.value, e.value "314 "FROM session AS s "315 " LEFT JOIN session_attribute AS n ON (n.sid=s.sid "316 " and n.authenticated=1 AND n.name = 'name') "317 " LEFT JOIN session_attribute AS e ON (e.sid=s.sid "318 " AND e.authenticated=1 AND e.name = 'email') "319 "WHERE s.authenticated=1 ORDER BY s.sid")320 for username,name,email in cursor:321 yield username, name, email322 323 317 def backup(self, dest=None): 324 318 """Simple SQLite-specific backup of the database. 325 319 -
trac/ticket/api.py
100 100 if self.restrict_owner: 101 101 field['type'] = 'select' 102 102 users = [] 103 103 104 perm = PermissionSystem(self.env) 104 for username , name, email in self.env.get_known_users(db):105 for username in self.env.get_known_users(): 105 106 if perm.get_user_permissions(username).get('TICKET_MODIFY'): 106 107 users.append(username) 107 108 field['options'] = users -
trac/versioncontrol/web_ui/log.py
164 164 if format == 'rss': 165 165 # Get the email addresses of all known users 166 166 email_map = {} 167 for username,name,email in self.env.get_known_user s():167 for username,name,email in self.env.get_known_user_info(): 168 168 if email: 169 169 email_map[username] = email 170 170 for cs in changes.values(): -
trac/Timeline.py
155 155 156 156 # Get the email addresses of all known users 157 157 email_map = {} 158 for username, name, email in self.env.get_known_user s():158 for username, name, email in self.env.get_known_user_info(): 159 159 if email: 160 160 email_map[username] = email 161 161 -
trac/tests/env.py
23 23 """Testing env.get_version""" 24 24 assert self.env.get_version() == db_default.db_version 25 25 26 def test_get_known_user s(self):27 """Testing env.get_known_user s"""26 def test_get_known_user_info(self): 27 """Testing env.get_known_user_info""" 28 28 cursor = self.db.cursor() 29 29 cursor.executemany("INSERT INTO session VALUES (%s,%s,0)", 30 30 [('123', 0),('tom', 1), ('joe', 1), ('jane', 1)]) … … 35 35 ('joe', 1, 'email', 'joe@example.com'), 36 36 ('jane', 1, 'name', 'Jane')]) 37 37 users = {} 38 for username,name,email in self.env.get_known_user s(self.db):38 for username,name,email in self.env.get_known_user_info(): 39 39 users[username] = (name, email) 40 40 41 41 assert not users.has_key('anonymous')
