[rhmessaging-commits] rhmessaging commits: r3432 - in mgmt/trunk/cumin/python/cumin: account and 1 other directories.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Mon Jun 8 12:06:37 EDT 2009
Author: eallen
Date: 2009-06-08 12:06:37 -0400 (Mon, 08 Jun 2009)
New Revision: 3432
Added:
mgmt/trunk/cumin/python/cumin/account/
mgmt/trunk/cumin/python/cumin/account/__init__.py
mgmt/trunk/cumin/python/cumin/account/main.py
mgmt/trunk/cumin/python/cumin/account/main.strings
mgmt/trunk/cumin/python/cumin/account/user.py
mgmt/trunk/cumin/python/cumin/account/user.strings
Removed:
mgmt/trunk/cumin/python/cumin/user.py
mgmt/trunk/cumin/python/cumin/user.strings
Modified:
mgmt/trunk/cumin/python/cumin/__init__.py
mgmt/trunk/cumin/python/cumin/messaging/queue.py
mgmt/trunk/cumin/python/cumin/page.py
mgmt/trunk/cumin/python/cumin/page.strings
mgmt/trunk/cumin/python/cumin/widgets.strings
Log:
Added "Your Account" to upper right corner of pages.
Created new AccountPage class
Moved the Account/My Jobs tabs to new page
Modified: mgmt/trunk/cumin/python/cumin/__init__.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/__init__.py 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/__init__.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -16,7 +16,8 @@
from demo import DemoData
from page import MainPage
from stat import StatChartPage, StatStackedPage, SlotMapPage
-from user import LoginPage, UserSession, UserSessionExpireThread
+from account.user import UserSession, UserSessionExpireThread
+from account import LoginPage, AccountPage
from datetime import timedelta
from qpid.util import URL
@@ -46,6 +47,8 @@
self.add_page(self.main_page)
self.set_default_page(self.main_page)
+ self.account_page = AccountPage(self, "account.html")
+ self.add_page(self.account_page)
self.add_page(DevelPage(self, "devel.html"))
self.add_page(ModelPage(self, "model.xml"))
self.add_page(CallPage(self, "call.xml"))
Added: mgmt/trunk/cumin/python/cumin/account/__init__.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/account/__init__.py (rev 0)
+++ mgmt/trunk/cumin/python/cumin/account/__init__.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -0,0 +1 @@
+from main import *
Added: mgmt/trunk/cumin/python/cumin/account/main.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/account/main.py (rev 0)
+++ mgmt/trunk/cumin/python/cumin/account/main.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -0,0 +1,277 @@
+from wooly import *
+from wooly.widgets import *
+from wooly.resources import *
+
+from cumin.widgets import *
+from cumin.util import *
+from cumin.grid.job import JobTab
+from user import UserSession
+
+from wooly import Session
+
+strings = StringCatalog(__file__)
+
+class AccountPage(CuminPage, ModeSet):
+ def __init__(self, app, name):
+ super(AccountPage, self).__init__(app, name)
+
+ self.account = AccountContainerView(app, "account")
+ self.add_mode(self.account)
+ self.set_default_frame(self.account)
+
+ def render_title(self, session):
+ return "MRG Account"
+
+class AccountContainerView(CuminMainView):
+ def __init__(self, app, name):
+ super(AccountContainerView, self).__init__(app, name)
+
+ self.main = AccountFrame(app, "main")
+ self.add_tab(self.main)
+
+ def render_admin_href(self, session):
+ return Session(self.app.main_page).marshal()
+
+class AccountFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(AccountFrame, self).__init__(app, name)
+
+ self.view = AccountView(app, "view")
+ self.add_mode(self.view)
+
+ self.change_password = ChangePasswordForm(app, "password")
+ self.add_mode(self.change_password)
+
+ def render_title(self, session):
+ return "Account"
+
+class AccountView(TabbedModeSet):
+ def __init__(self, app, name):
+ super(AccountView, self).__init__(app, name)
+
+ heading = self.Heading(app, "heading")
+ self.add_child(heading)
+
+ self.add_tab(self.AccountTab(app, "acct"))
+ self.add_tab(self.MyGridJobs(app, "jobs"))
+
+ def render_change_password_href(self, session):
+ branch = session.branch()
+ self.frame.change_password.show(branch)
+ return branch.marshal()
+
+ class Heading(CuminHeading):
+ def render_title(self, session):
+ return "Your Account"
+
+ def render_icon_href(self, session):
+ return "resource?name=action-36.png"
+
+ class AccountTab(ActionSet):
+ def render_title(self, session):
+ return "Account Settings"
+
+ def render_change_password_href(self, session):
+ branch = session.branch()
+ self.frame.change_password.show(branch)
+ return branch.marshal()
+
+ class MyGridJobs(JobTab):
+ def render_title(self, session):
+ return "Your Grid Jobs %s" % fmt_count(self.get_item_count(session))
+
+ def render_sql_where(self, session, *args):
+ if hasattr(session, "user_session"):
+ user = session.user_session.subject.name
+ else:
+ user = ""
+ elems = list()
+ elems.append("b.name like '%s%s'" % (user, "%"))
+ elems.append(self.get_phase_sql(session))
+ return "where %s" % " and ".join(elems)
+
+ def get_sql_values(self, session, *args):
+ pass
+
+ def get_visible_columns(self, session):
+ return self.get_request_visible_columns(session, ["custom_group", "scheduler"])
+
+ def render_user(self, session, *args):
+ if hasattr(session, "user_session"):
+ return session.user_session.subject.name
+
+class LoginPage(HtmlPage):
+ def __init__(self, app, name):
+ super(LoginPage, self).__init__(app, name)
+
+ self.html_class = LoginPage.__name__
+
+ self.logout = BooleanParameter(app, "logout")
+ self.add_parameter(self.logout)
+
+ self.origin = self.Origin(app, "origin")
+ self.add_parameter(self.origin)
+
+ form = LoginForm(app, "form")
+ self.add_child(form)
+
+ def do_process(self, session):
+ if self.logout.get(session):
+ #id = session.get_cookie("session")
+ session.expire_cookie("session")
+
+ super(LoginPage, self).do_process(session)
+
+ def render_title(self, session):
+ return "Log In"
+
+ class Origin(Parameter):
+ def get_default(self, session):
+ return Session(self.app.main_page).marshal()
+
+class LoginForm(FieldForm):
+ def __init__(self, app, name):
+ super(LoginForm, self).__init__(app, name)
+
+ self.__login_invalid = Attribute(app, "login_invalid")
+ self.add_attribute(self.__login_invalid)
+
+ self.__name = self.Name(app, "name")
+ self.add_field(self.__name)
+ self.__name.input.size = 20
+
+ self.__password = self.Password(app, "password")
+ self.add_field(self.__password)
+ self.__password.input.size = 20
+
+ self.__submit = self.Submit(app, "submit")
+ self.add_child(self.__submit)
+
+ def do_process(self, session):
+ if self.__submit.get(session):
+ name = self.__name.get(session)
+ password = self.__password.get(session)
+
+ errors = self.validate(session)
+
+ if not errors:
+ try:
+ user = Subject.selectBy(name=name)[0]
+ except IndexError:
+ self.__login_invalid.set(session, True)
+ return
+
+ crypted = user.password
+
+ if crypted and crypt(password, crypted) == crypted:
+ # You're in!
+
+ usess = UserSession(self.app, user)
+ session.set_cookie("session", usess.id)
+
+ url = self.page.origin.get(session)
+
+ self.page.set_redirect_url(session, url)
+ else:
+ self.__login_invalid.set(session, True)
+
+ def render_operator_link(self, session):
+ email = self.app.config.operator_email
+
+ if email:
+ return "<a href=\"mailto:%s\">site operator</a>" % email
+ else:
+ return "site operator"
+
+ def render_login_invalid(self, session):
+ if self.__login_invalid.get(session):
+ return self.get_string("login_invalid")
+
+ class Name(StringField):
+ def render_title(self, session):
+ return "User Name"
+
+ class Password(PasswordField):
+ def render_title(self, session):
+ return "Password"
+
+ class Submit(FormButton):
+ def render_content(self, session):
+ return "Submit"
+
+class ChangePasswordForm(CuminFieldForm):
+ def __init__(self, app, name):
+ super(ChangePasswordForm, self).__init__(app, name)
+
+ self.__errors = self.Errors(app, "errors")
+ self.add_attribute(self.__errors)
+
+ self.__current = self.Current(app, "current")
+ self.add_field(self.__current)
+ self.__current.input.size = 20
+
+ self.__new0 = self.New0(app, "new0")
+ self.add_field(self.__new0)
+ self.__new0.input.size = 20
+
+ self.__new1 = self.New1(app, "new1")
+ self.add_field(self.__new1)
+ self.__new1.input.size = 20
+
+ def process_cancel(self, session):
+ branch = session.branch()
+ self.page.account.main.view.show(branch)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def process_submit(self, session):
+ curr = self.__current.get(session)
+ new0 = self.__new0.get(session)
+ new1 = self.__new1.get(session)
+
+ errors = self.validate(session)
+
+ subject = session.user_session.subject
+ crypted = subject.password
+
+ if crypt_password(curr, crypted) != crypted:
+ msg = "The current password you entered is incorrect"
+ self.__errors.get(session).append(msg)
+ errors.append(msg)
+
+ if new0 != new1:
+ msg = "The new passwords do not match"
+ self.__errors.get(session).append(msg)
+ errors.append(msg)
+
+ if not errors:
+ subject.password = crypt_password(new0)
+ subject.syncUpdate()
+
+ self.process_cancel(session)
+
+ def render_title(self, session):
+ return "Change Password"
+
+ def render_form_error(self, session):
+ errors = self.__errors.get(session)
+
+ if errors:
+ return "<ul class=\"errors\" style=\"margin:0; float:left;\"><li>" + \
+ ("</li><li>".join(errors)) + \
+ "</li></ul>"
+
+ class Current(PasswordField):
+ def render_title(self, session):
+ return "Current Password"
+
+ class New0(PasswordField):
+ def render_title(self, session):
+ return "New Password"
+
+ class New1(PasswordField):
+ def render_title(self, session):
+ return "Repeat New Password"
+
+ class Errors(Attribute):
+ def get_default(self, session):
+ return list()
Added: mgmt/trunk/cumin/python/cumin/account/main.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/account/main.strings (rev 0)
+++ mgmt/trunk/cumin/python/cumin/account/main.strings 2009-06-08 16:06:37 UTC (rev 3432)
@@ -0,0 +1,128 @@
+[LoginPage.css]
+body.LoginPage {
+ background: #f7f7f7;
+ padding: 4em;
+}
+
+[LoginForm.css]
+form.LoginForm {
+ background: #fff;
+ width: 16em;
+ margin: 0 auto;
+ border: 1px solid #ddd;
+ -moz-border-radius: 0.5em;
+ -webkit-border-radius: 0.5em;
+ padding: 2em;
+}
+
+form.LoginForm > h1 {
+ margin: 0 0 1em 0;
+}
+
+form.LoginForm h1 img {
+ vertical-align: -60%;
+ margin: 0 0.25em 0 0;
+}
+
+form.LoginForm input {
+ width: 12em;
+}
+
+form.LoginForm input.submit {
+ width: auto;
+}
+
+form.LoginForm > div.buttons {
+ margin: 1.5em 0 0 0;
+}
+
+form.LoginForm p.login_invalid {
+ color: red;
+}
+
+[LoginForm.html]
+<form id="{id}" class="LoginForm" method="post" action="?">
+ <h1><img src="resource?name=mrg-36.png"/> MRG Management</h1>
+
+ <p>Enter your user name and password to log in.</p>
+
+ <p>If you do not have an account or have trouble logging in, contact
+ the {operator_link}.</p>
+
+ {login_invalid}
+
+ {fields}
+
+ <div class="buttons">{submit}</div>
+
+ <div>{hidden_inputs}</div>
+</form>
+
+<script type="text/javascript">
+ $("{id}").elements[0].focus();
+
+</script>
+
+[LoginForm.login_invalid]
+<p class="login_invalid">The user name and password you entered do not
+match any account.</p>
+
+[AccountContainerView.html]
+<div id="head">
+ <div id="user">
+ Hi, {user_name}
+ <strong>·</strong>
+ <a id="account" onclick="wooly.clearUpdates()" href="{admin_href}">MRG Management</a>
+ <strong>·</strong>
+ <a id="logout" onclick="wooly.clearUpdates()" href="{logout_href}">Log Out</a>
+ </div>
+
+ <img id="logo" src="resource?name=rhlogo-32.png"/>
+
+</div>
+<div id="body">
+
+<div id="messages" style="display: {action_display};"><p title="close" onclick="cumin.hideActions()">x</p>{actions}</div>
+ {heartbeat}
+
+{content}</div>
+
+<div id="foot"/>
+
+[AccountView.html]
+<div class="oblock">
+ {heading}
+
+ <ul class="TabbedModeSet tabs">{tabs}</ul>
+ <div class="TabbedModeSet mode">{content}</div>
+</div>
+
+[AccountTab.html]
+<ul class="actions">
+ <a class="nav" href="{change_password_href}">Change Password</a>
+</ul>
+
+[MyGridJobs.html]
+<form id="{id}" method="post" action="?">
+<div class="rfloat">{phase}</div>
+Jobs submitted by {user}
+
+ <div class="sactions" style="clear:right;">
+ <h2>Act on Selected Jobs:</h2>
+ {hold} {release} {remove}
+ </div>
+
+ <table class="mobjects">
+ <thead>
+ <tr>
+ <th class="setnav" colspan="{column_count}">
+ <div class="rfloat">{page}</div>
+ {count}
+ </th>
+ </tr>
+ <tr>{headers}</tr>
+ </thead>
+ <tbody>{items}</tbody>
+ </table>
+ <div>{hidden_inputs}</div>
+</form>
Copied: mgmt/trunk/cumin/python/cumin/account/user.py (from rev 3426, mgmt/trunk/cumin/python/cumin/user.py)
===================================================================
--- mgmt/trunk/cumin/python/cumin/account/user.py (rev 0)
+++ mgmt/trunk/cumin/python/cumin/account/user.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -0,0 +1,50 @@
+from wooly import *
+from wooly.widgets import *
+from wooly.resources import *
+from time import sleep
+from threading import Thread, Event
+from datetime import datetime, timedelta
+from crypt import crypt
+from qpid.datatypes import uuid4
+
+from cumin.widgets import *
+from cumin.util import *
+
+strings = StringCatalog(__file__)
+
+log = logging.getLogger("cumin.user")
+
+class UserSession(object):
+ def __init__(self, app, subject):
+ self.app = app
+ self.subject = subject
+ self.id = str(uuid4())
+ self.created = datetime.now()
+
+ self.app.user_sessions_by_id[self.id] = self
+
+ def delete(self):
+ del self.app.user_sessions_by_id[self.id]
+
+class UserSessionExpireThread(Thread):
+ def __init__(self, app):
+ super(UserSessionExpireThread, self).__init__()
+
+ self.app = app
+ self.setDaemon(True)
+
+ def run(self):
+ while True:
+ self.expire_sessions()
+ sleep(60)
+
+ def expire_sessions(self):
+ when = datetime.now() - timedelta(hours=2)
+ count = 0
+
+ for session in self.app.user_sessions_by_id.values():
+ if session.created < when:
+ session.delete()
+ count += 1
+
+ log.info("Expired %i user sessions", count)
Property changes on: mgmt/trunk/cumin/python/cumin/account/user.py
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: mgmt/trunk/cumin/python/cumin/account/user.strings (from rev 3426, mgmt/trunk/cumin/python/cumin/user.strings)
===================================================================
Property changes on: mgmt/trunk/cumin/python/cumin/account/user.strings
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: mgmt/trunk/cumin/python/cumin/messaging/queue.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/messaging/queue.py 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/messaging/queue.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -803,7 +803,7 @@
return self.frame.get_args(session)
def process_submit(self, session, binding):
- log.info("Removing binding %s" % binding)
+ log.info("Removing binding %s", binding)
self.process_cancel(session, binding)
Modified: mgmt/trunk/cumin/python/cumin/page.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/page.py 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/page.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -59,9 +59,6 @@
self.view = HomeView(app, "view")
self.add_mode(self.view)
- self.change_password = ChangePasswordForm(app, "password")
- self.add_mode(self.change_password)
-
self.mservers_add = ManagementServerSetAdd(app, "mserversadd")
self.add_mode(self.mservers_add)
@@ -79,8 +76,6 @@
self.add_child(heading)
self.add_tab(self.OverviewTab(app, "over"))
- self.add_tab(self.MyGridJobs(app, "jobs"))
- self.add_tab(self.AccountTab(app, "acct"))
self.add_tab(ManagementServerSet(app, "servers"))
def render_change_password_href(self, session):
@@ -121,36 +116,3 @@
if count == 0:
return super(HomeView.OverviewTab.ManagementServerNotice,
self).do_render(session)
-
- class AccountTab(ActionSet):
- def render_title(self, session):
- return "Your Account"
-
- def render_change_password_href(self, session):
- branch = session.branch()
- self.frame.change_password.show(branch)
- return branch.marshal()
-
- class MyGridJobs(JobTab):
- def render_title(self, session):
- return "Your Grid Jobs %s" % fmt_count(self.get_item_count(session))
-
- def render_sql_where(self, session, *args):
- if hasattr(session, "user_session"):
- user = session.user_session.subject.name
- else:
- user = ""
- elems = list()
- elems.append("b.name like '%s%s'" % (user, "%"))
- elems.append(self.get_phase_sql(session))
- return "where %s" % " and ".join(elems)
-
- def get_sql_values(self, session, *args):
- pass
-
- def get_visible_columns(self, session):
- return self.get_request_visible_columns(session, ["custom_group", "scheduler"])
-
- def render_user(self, session, *args):
- if hasattr(session, "user_session"):
- return session.user_session.subject.name
Modified: mgmt/trunk/cumin/python/cumin/page.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/page.strings 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/page.strings 2009-06-08 16:06:37 UTC (rev 3432)
@@ -76,11 +76,6 @@
tab above to add a new server.
</div>
-[AccountTab.html]
-<ul class="actions">
- <a class="nav" href="{change_password_href}">Change Password</a>
-</ul>
-
[MessagingView.html]
<div class="oblock">
{heading}
@@ -104,28 +99,3 @@
<ul class="TabbedModeSet tabs">{tabs}</ul>
<div class="TabbedModeSet mode">{content}</div>
</div>
-
-[MyGridJobs.html]
-<form id="{id}" method="post" action="?">
-<div class="rfloat">{phase}</div>
-Jobs submitted by {user}
-
- <div class="sactions" style="clear:right;">
- <h2>Act on Selected Jobs:</h2>
- {hold} {release} {remove}
- </div>
-
- <table class="mobjects">
- <thead>
- <tr>
- <th class="setnav" colspan="{column_count}">
- <div class="rfloat">{page}</div>
- {count}
- </th>
- </tr>
- <tr>{headers}</tr>
- </thead>
- <tbody>{items}</tbody>
- </table>
- <div>{hidden_inputs}</div>
-</form>
Deleted: mgmt/trunk/cumin/python/cumin/user.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/user.py 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/user.py 2009-06-08 16:06:37 UTC (rev 3432)
@@ -1,229 +0,0 @@
-from wooly import *
-from wooly.widgets import *
-from wooly.resources import *
-from time import sleep
-from threading import Thread, Event
-from random import randint
-from datetime import datetime, timedelta
-from crypt import crypt
-from qpid.datatypes import uuid4
-
-from widgets import *
-from util import *
-
-from wooly import Session
-
-strings = StringCatalog(__file__)
-
-log = logging.getLogger("cumin.user")
-
-class UserSession(object):
- def __init__(self, app, subject):
- self.app = app
- self.subject = subject
- self.id = str(uuid4())
- self.created = datetime.now()
-
- self.app.user_sessions_by_id[self.id] = self
-
- def delete(self):
- del self.app.user_sessions_by_id[self.id]
-
-class UserSessionExpireThread(Thread):
- def __init__(self, app):
- super(UserSessionExpireThread, self).__init__()
-
- self.app = app
- self.setDaemon(True)
-
- def run(self):
- while True:
- self.expire_sessions()
- sleep(60)
-
- def expire_sessions(self):
- when = datetime.now() - timedelta(hours=2)
- count = 0
-
- for session in self.app.user_sessions_by_id.values():
- if session.created < when:
- session.delete()
- count += 1
-
- log.debug("Expired %i user sessions", count)
-
-class LoginPage(HtmlPage):
- def __init__(self, app, name):
- super(LoginPage, self).__init__(app, name)
-
- self.html_class = LoginPage.__name__
-
- self.logout = BooleanParameter(app, "logout")
- self.add_parameter(self.logout)
-
- self.origin = self.Origin(app, "origin")
- self.add_parameter(self.origin)
-
- form = LoginForm(app, "form")
- self.add_child(form)
-
- def do_process(self, session):
- if self.logout.get(session):
- #id = session.get_cookie("session")
- session.expire_cookie("session")
-
- super(LoginPage, self).do_process(session)
-
- def render_title(self, session):
- return "Log In"
-
- class Origin(Parameter):
- def get_default(self, session):
- return Session(self.app.main_page).marshal()
-
-class LoginForm(FieldForm):
- def __init__(self, app, name):
- super(LoginForm, self).__init__(app, name)
-
- self.__login_invalid = Attribute(app, "login_invalid")
- self.add_attribute(self.__login_invalid)
-
- self.__name = self.Name(app, "name")
- self.add_field(self.__name)
- self.__name.input.size = 20
-
- self.__password = self.Password(app, "password")
- self.add_field(self.__password)
- self.__password.input.size = 20
-
- self.__submit = self.Submit(app, "submit")
- self.add_child(self.__submit)
-
- def do_process(self, session):
- if self.__submit.get(session):
- name = self.__name.get(session)
- password = self.__password.get(session)
-
- errors = self.validate(session)
-
- if not errors:
- try:
- user = Subject.selectBy(name=name)[0]
- except IndexError:
- self.__login_invalid.set(session, True)
- return
-
- crypted = user.password
-
- if crypted and crypt(password, crypted) == crypted:
- # You're in!
-
- usess = UserSession(self.app, user)
- session.set_cookie("session", usess.id)
-
- url = self.page.origin.get(session)
-
- self.page.set_redirect_url(session, url)
- else:
- self.__login_invalid.set(session, True)
-
- def render_operator_link(self, session):
- email = self.app.config.operator_email
-
- if email:
- return "<a href=\"mailto:%s\">site operator</a>" % email
- else:
- return "site operator"
-
- def render_login_invalid(self, session):
- if self.__login_invalid.get(session):
- return self.get_string("login_invalid")
-
- class Name(StringField):
- def render_title(self, session):
- return "User Name"
-
- class Password(PasswordField):
- def render_title(self, session):
- return "Password"
-
- class Submit(FormButton):
- def render_content(self, session):
- return "Submit"
-
-class ChangePasswordForm(CuminFieldForm):
- def __init__(self, app, name):
- super(ChangePasswordForm, self).__init__(app, name)
-
- self.__errors = self.Errors(app, "errors")
- self.add_attribute(self.__errors)
-
- self.__current = self.Current(app, "current")
- self.add_field(self.__current)
- self.__current.input.size = 20
-
- self.__new0 = self.New0(app, "new0")
- self.add_field(self.__new0)
- self.__new0.input.size = 20
-
- self.__new1 = self.New1(app, "new1")
- self.add_field(self.__new1)
- self.__new1.input.size = 20
-
- def process_cancel(self, session):
- branch = session.branch()
- self.page.main.home.view.show(branch)
- self.page.set_redirect_url(session, branch.marshal())
-
- def process_submit(self, session):
- curr = self.__current.get(session)
- new0 = self.__new0.get(session)
- new1 = self.__new1.get(session)
-
- errors = self.validate(session)
-
- subject = session.user_session.subject
- crypted = subject.password
-
- if crypt_password(curr, crypted) != crypted:
- msg = "The current password you entered is incorrect"
- self.__errors.get(session).append(msg)
- errors.append(msg)
-
- if new0 != new1:
- msg = "The new passwords do not match"
- self.__errors.get(session).append(msg)
- errors.append(msg)
-
- if not errors:
- subject.password = crypt_password(new0)
- subject.syncUpdate()
-
- self.process_cancel(session)
-
- def render_title(self, session):
- return "Change Password"
-
- def render_form_error(self, session):
- errors = self.__errors.get(session)
-
- if errors:
- return "<ul class=\"errors\" style=\"margin:0; float:left;\"><li>" + \
- ("</li><li>".join(errors)) + \
- "</li></ul>"
-
- class Current(PasswordField):
- def render_title(self, session):
- return "Current Password"
-
- class New0(PasswordField):
- def render_title(self, session):
- return "New Password"
-
- class New1(PasswordField):
- def render_title(self, session):
- return "Repeat New Password"
-
- class Errors(Attribute):
- def get_default(self, session):
- return list()
Deleted: mgmt/trunk/cumin/python/cumin/user.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/user.strings 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/user.strings 2009-06-08 16:06:37 UTC (rev 3432)
@@ -1,68 +0,0 @@
-[LoginPage.css]
-body.LoginPage {
- background: #f7f7f7;
- padding: 4em;
-}
-
-[LoginForm.css]
-form.LoginForm {
- background: #fff;
- width: 16em;
- margin: 0 auto;
- border: 1px solid #ddd;
- -moz-border-radius: 0.5em;
- -webkit-border-radius: 0.5em;
- padding: 2em;
-}
-
-form.LoginForm > h1 {
- margin: 0 0 1em 0;
-}
-
-form.LoginForm h1 img {
- vertical-align: -60%;
- margin: 0 0.25em 0 0;
-}
-
-form.LoginForm input {
- width: 12em;
-}
-
-form.LoginForm input.submit {
- width: auto;
-}
-
-form.LoginForm > div.buttons {
- margin: 1.5em 0 0 0;
-}
-
-form.LoginForm p.login_invalid {
- color: red;
-}
-
-[LoginForm.html]
-<form id="{id}" class="LoginForm" method="post" action="?">
- <h1><img src="resource?name=mrg-36.png"/> MRG Management</h1>
-
- <p>Enter your user name and password to log in.</p>
-
- <p>If you do not have an account or have trouble logging in, contact
- the {operator_link}.</p>
-
- {login_invalid}
-
- {fields}
-
- <div class="buttons">{submit}</div>
-
- <div>{hidden_inputs}</div>
-</form>
-
-<script type="text/javascript">
- $("{id}").elements[0].focus();
-
-</script>
-
-[LoginForm.login_invalid]
-<p class="login_invalid">The user name and password you entered do not
-match any account.</p>
Modified: mgmt/trunk/cumin/python/cumin/widgets.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/widgets.strings 2009-06-08 15:28:59 UTC (rev 3431)
+++ mgmt/trunk/cumin/python/cumin/widgets.strings 2009-06-08 16:06:37 UTC (rev 3432)
@@ -163,6 +163,8 @@
<div id="user">
Hi, {user_name}
<strong>·</strong>
+ <a id="account" onclick="wooly.clearUpdates()" href="{account_href}">Your Account</a>
+ <strong>·</strong>
<a id="logout" onclick="wooly.clearUpdates()" href="{logout_href}">Log Out</a>
</div>
More information about the rhmessaging-commits
mailing list