""" open/dulcinea/lib/ui/user/user.qpy """ from dulcinea.misc import get_misc_db from dulcinea.ui.user.motd import MotdUI from dulcinea.ui.user.password import new_password_form from dulcinea.ui.user.search import DisabledDulcineaUserSearchForm from dulcinea.ui.user.search import DulcineaUserSearchForm from dulcinea.ui.user.util import can_create_users from dulcinea.ui.util import index_page from dulcinea.user import list_users from qp.fill.directory import Directory from qp.pub.common import get_config_value, get_users from qp.pub.common import get_publisher from qp.pub.common import get_user, get_request, get_session, redirect class UserDirectory (Directory): def get_exports(self): yield ('', 'index', 'User', None) if get_user().is_admin(): yield ('disabled', 'disabled', 'Disabled Users', 'Search for Disabled Users') if get_publisher().is_email_enabled(): yield ('forgot', 'forgot', 'Forgot?', 'Have a new password emailed to the address you ' 'gave when you registered.') if not get_user() and get_config_value('allow_anonymous_registration'): yield ('register', 'register', 'Register', 'Get a username and password for this site.') elif get_user(): yield ('register', 'register', None, None) #success response. if can_create_users(): yield ('register', 'register', 'Full Register', 'Full Registration for a new user') if get_user().is_admin(): yield ('search', 'search', 'Search', 'Search for users') if (get_misc_db() and (get_misc_db().get_motd() or get_user().is_admin())): yield ('motd', 'motd', 'Sign in Message', None) if can_create_users(): yield ('new', 'new', 'Quick Register', 'Quick Registration for a new user') if get_user(): yield ('logout', 'logout', 'Sign out', None) yield ('login', 'login', None, None) # for the success page.? else: yield ('login', 'login', "Sign in", None) yield ('logout', 'logout', None, None) yield ('delete_session', 'delete_session', None, None) def index:xml(self): return index_page(self) def new(self): from dulcinea.ui.user.register import create_contact_form return create_contact_form(get_publisher().create_user(None)) def register(self): from dulcinea.ui.user.register import contact_registration_form return contact_registration_form(get_publisher().create_user(None)) def forgot(self): return new_password_form(get_user()) def search(self): return DulcineaUserSearchForm(list_users()).handle() def disabled(self): users = [user for user in get_users().itervalues() if user.is_disabled() and not (user.is_null() or user.is_system())] return DisabledDulcineaUserSearchForm(users).handle() def login(self): redirect('/my/') def logout(self): if not get_user(): redirect('/') session = get_session() if session.get_owner() is not get_user(): # end impersonation session.set_effective_user(session.get_owner()) redirect('') get_user().record_logout(get_request().get_environ('REMOTE_ADDR')) session.clear_authentication() redirect('/') def delete_session(self): get_publisher().delete_current_session() redirect('/') motd = MotdUI()