Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- # $Id$
- # Basic implementation of FlexibleAssignTo ValidOwnerProvider for trac,
- # that uses trac users but displays their fullname in the assign <select>
- ## trac imports
- from trac.core import *
- from trac.util.compat import sorted
- ## FlexibleAssignTo imports
- from flexibleassignto import IValidOwnerProvider, SimpleUser
- __version__ = '0.1'
- __revision__ = "2"
- version = __version__
- fullversion = ".".join([__version__, __revision__])
- class BasicFullNameOwnerProvider(Component):
- implements(IValidOwnerProvider)
- def getUsers(self, next_action_obj):
- known_users = list(self.env.get_known_users())
- # get_known_users() returns a list of tuples with:
- # [(u'username', u'Full Name', u'email'), (u'username', u'Full Name', u'email')... ]
- user_objs = []
- for userinfo in known_users:
- u = BasicFullNameUser()
- u.username = u.userlogin = userinfo[0]
- try:
- u.firstname, u.lastname = userinfo[1].split(' ', 1)
- except (ValueError, AttributeError):
- u.firstname = userinfo[1]
- u.lastname = ""
- u.email = userinfo[2]
- u.setOptionValue("%s" % u.username)
- u.setOptionDisplay("%s %s (%s)" % (u.firstname, u.lastname, u.username))
- user_objs.append(u)
- return [EmptyFullNameUser()] + sorted(user_objs)
- class BasicFullNameUser(SimpleUser):
- def __cmp__(self, other):
- return cmp(self.lastname, other.lastname)
- class EmptyFullNameUser(BasicFullNameUser):
- def __init__(self):
- self.firstname = ""
- self.lastname = ""
- self.fullname = ""
- self.userlogin = ""
- self.email = ""
- self.username = ""
- self.option_value = ""
- self.option_display = ""
Add Comment
Please, Sign In to add comment