""" open/dulcinea/lib/ui/user/profile.qpy """ from dulcinea.common import format_user from dulcinea.ui.permission import UserPermissionUI from dulcinea.ui.user.password import change_password_form from dulcinea.ui.user.password import change_user_password_form from dulcinea.ui.user.password import new_password_form from dulcinea.ui.user.register import contact_edit_form from dulcinea.ui.user.mailman import edit_mailing_lists from dulcinea.ui.user.util import ensure_create_users_access from dulcinea.ui.user.util import allow_act_as from dulcinea.ui.util import format_history from dulcinea.ui.util import none_quote, format_address from qp.fill.directory import Directory from qp.fill.html import href from qp.pub.common import get_user, get_session, redirect, page, get_request from qp.pub.common import get_users, get_publisher, ensure_signed_in class Profile (Directory): def __init__(self, user=None): self.user = user def get_user(self): return self.user or get_user() def get_exports(self): ensure_signed_in() realname = self.get_user().format_realname() yield ('', 'index', 'Profile', "%s's Personal Profile" % realname) yield ('edit', 'edit', 'Edit Profile', "Edit %s's Profile" % realname) if get_publisher().get_mailman_list_names(): yield ('mailing_lists', 'mailing_lists', 'Mailing Lists', "Manage %s's mailing list membership" % self.get_user().get_id()) yield ('history', 'history', 'Login History', "View the record of login activity for %s." % realname) yield ('change_password', 'change_password', 'Password Change', 'Change your password') if get_user().is_admin(): yield ( 'reset_password', 'reset_password', 'Password Reset', 'Mail a new random password to %s.' % self.get_user().get_id()) if get_user().can_manage_permissions(): yield ('permission', None, 'Permissions', 'Manage permissions') if allow_act_as(): yield ('act_as', 'act_as', 'Act as', 'Act as %s' % realname) yield ('un_act_as', 'un_act_as', None, None) def format_user_profile(self): return get_publisher().format_user_profile(self.get_user()) def index:xml(self): page("%s's Personal Profile" % (self.get_user().format_realname() or self.get_user().get_id()), self.format_user_profile()) def edit:xml(self): return contact_edit_form(self.get_user()) def mailing_lists:xml(self): edit_mailing_lists(self.get_user()) def history:xml(self): page('Login History for %s' % self.get_user().format(), format_history(self.get_user().get_history())) def change_password:xml(self): if get_user() is self.get_user(): change_password_form() else: change_user_password_form(self.get_user()) def reset_password:xml(self): return new_password_form(self.get_user()) def un_act_as(self): session = get_session() owner = session.get_owner() if session.get_effective_user() is not owner: session.set_effective_user(owner) url = get_request().get_field('url', ".") redirect(url) def act_as(self): session = get_session() session.set_effective_user(self.get_user()) url = get_request().get_field('url', ".") redirect(url) def _q_lookup(self, component): if component == 'permission': return UserPermissionUI(self.get_user(), True, 'Global') class ProfileDirectory (Directory): profile_class = Profile def get_exports(self): return [] def _q_lookup(self, component): user = get_users().get(component) if user: return self.profile_class(user) def format_user_profile:xml(user): if get_user() is not user: ensure_create_users_access() dulcinea_user_profile(user) def dulcinea_user_profile:xml(user): email = user.get_email() if email: email = href('mailto:%s' % email, email) '' '' % format_user(user) '' % none_quote( user.get_company_name()) '' % format_address(user.get_address()) '' % none_quote(user.get_phone()) '' % email if user.is_disabled(): '' '
Name%s
Organization%s
Address%s
Phone%s
Email%s
Disabled PasswordYes
'