changeset 2353:ef71d7e63806 beta

highly improved performance of my_account page by removing super heavy htmlfill call on whole page
author Marcin Kuzminski <marcin@python-works.com>
date Mon, 28 May 2012 16:51:22 +0200
parents 90e06f53af8c
children f3417f0d54b5
files rhodecode/controllers/admin/settings.py rhodecode/templates/admin/users/user_edit_my_account.html rhodecode/templates/admin/users/user_edit_my_account_form.html
diffstat 3 files changed, 93 insertions(+), 89 deletions(-) [+]
line wrap: on
line diff
--- a/rhodecode/controllers/admin/settings.py	Mon May 28 16:26:47 2012 +0200
+++ b/rhodecode/controllers/admin/settings.py	Mon May 28 16:51:22 2012 +0200
@@ -338,12 +338,14 @@
             return redirect(url('users'))
 
         defaults = c.user.get_dict()
-        return htmlfill.render(
-            render('admin/users/user_edit_my_account.html'),
+
+        c.form = htmlfill.render(
+            render('admin/users/user_edit_my_account_form.html'),
             defaults=defaults,
             encoding="UTF-8",
             force_defaults=False
         )
+        return render('admin/users/user_edit_my_account.html')
 
     def my_account_update(self):
         """PUT /_admin/my_account_update: Update an existing item"""
@@ -373,12 +375,13 @@
                 .all()
             c.user_repos = ScmModel().get_repos(all_repos)
 
-            return htmlfill.render(
-                render('admin/users/user_edit_my_account.html'),
+            c.form = htmlfill.render(
+                render('admin/users/user_edit_my_account_form.html'),
                 defaults=errors.value,
                 errors=errors.error_dict or {},
                 prefix_error=False,
                 encoding="UTF-8")
+            return render('admin/users/user_edit_my_account.html')
         except Exception:
             log.error(traceback.format_exc())
             h.flash(_('error occurred during update of user %s') \
--- a/rhodecode/templates/admin/users/user_edit_my_account.html	Mon May 28 16:26:47 2012 +0200
+++ b/rhodecode/templates/admin/users/user_edit_my_account.html	Mon May 28 16:51:22 2012 +0200
@@ -21,91 +21,7 @@
         ${self.breadcrumbs()}
     </div>
     <!-- end box / title -->
-    <div>
-    ${h.form(url('admin_settings_my_account_update'),method='put')}
-	    <div class="form">
-
-             <div class="field">
-                <div class="gravatar_box">
-                    <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email)}"/></div>
-                    <p>
-                    %if c.use_gravatar:
-                    <strong>${_('Change your avatar at')} <a href="http://gravatar.com">gravatar.com</a></strong>
-                    <br/>${_('Using')} ${c.user.email}
-                    %else:
-                    <br/>${c.user.email}
-                    %endif
-                    </p>
-                </div>
-             </div>
-	        <div class="field">
-	            <div class="label">
-	                <label>${_('API key')}</label> ${c.user.api_key}
-	            </div>
-	        </div>
-	        <div class="fields">
-	             <div class="field">
-	                <div class="label">
-	                    <label for="username">${_('Username')}:</label>
-	                </div>
-	                <div class="input">
-	                    ${h.text('username',class_="medium")}
-	                </div>
-	             </div>
-
-	             <div class="field">
-	                <div class="label">
-	                    <label for="new_password">${_('New password')}:</label>
-	                </div>
-	                <div class="input">
-	                    ${h.password('new_password',class_="medium",autocomplete="off")}
-	                </div>
-	             </div>
-
-                 <div class="field">
-                    <div class="label">
-                        <label for="password_confirmation">${_('New password confirmation')}:</label>
-                    </div>
-                    <div class="input">
-                        ${h.password('password_confirmation',class_="medium",autocomplete="off")}
-                    </div>
-                 </div>
-
-	             <div class="field">
-	                <div class="label">
-	                    <label for="name">${_('First Name')}:</label>
-	                </div>
-	                <div class="input">
-	                    ${h.text('name',class_="medium")}
-	                </div>
-	             </div>
-
-	             <div class="field">
-	                <div class="label">
-	                    <label for="lastname">${_('Last Name')}:</label>
-	                </div>
-	                <div class="input">
-	                    ${h.text('lastname',class_="medium")}
-	                </div>
-	             </div>
-
-	             <div class="field">
-	                <div class="label">
-	                    <label for="email">${_('Email')}:</label>
-	                </div>
-	                <div class="input">
-	                    ${h.text('email',class_="medium")}
-	                </div>
-	             </div>
-
-	            <div class="buttons">
-	              ${h.submit('save',_('Save'),class_="ui-button")}
-	              ${h.reset('reset',_('Reset'),class_="ui-button")}
-	            </div>
-	    	</div>
-	    </div>
-    ${h.end_form()}
-    </div>
+    ${c.form|n}
 </div>
 
 <div class="box box-right">
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rhodecode/templates/admin/users/user_edit_my_account_form.html	Mon May 28 16:51:22 2012 +0200
@@ -0,0 +1,85 @@
+<div>
+    ${h.form(url('admin_settings_my_account_update'),method='put')}
+        <div class="form">
+
+             <div class="field">
+                <div class="gravatar_box">
+                    <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(c.user.email)}"/></div>
+                    <p>
+                    %if c.use_gravatar:
+                    <strong>${_('Change your avatar at')} <a href="http://gravatar.com">gravatar.com</a></strong>
+                    <br/>${_('Using')} ${c.user.email}
+                    %else:
+                    <br/>${c.user.email}
+                    %endif
+                    </p>
+                </div>
+             </div>
+            <div class="field">
+                <div class="label">
+                    <label>${_('API key')}</label> ${c.user.api_key}
+                </div>
+            </div>
+            <div class="fields">
+                 <div class="field">
+                    <div class="label">
+                        <label for="username">${_('Username')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.text('username',class_="medium")}
+                    </div>
+                 </div>
+
+                 <div class="field">
+                    <div class="label">
+                        <label for="new_password">${_('New password')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.password('new_password',class_="medium",autocomplete="off")}
+                    </div>
+                 </div>
+
+                 <div class="field">
+                    <div class="label">
+                        <label for="password_confirmation">${_('New password confirmation')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.password('password_confirmation',class_="medium",autocomplete="off")}
+                    </div>
+                 </div>
+
+                 <div class="field">
+                    <div class="label">
+                        <label for="name">${_('First Name')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.text('name',class_="medium")}
+                    </div>
+                 </div>
+
+                 <div class="field">
+                    <div class="label">
+                        <label for="lastname">${_('Last Name')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.text('lastname',class_="medium")}
+                    </div>
+                 </div>
+
+                 <div class="field">
+                    <div class="label">
+                        <label for="email">${_('Email')}:</label>
+                    </div>
+                    <div class="input">
+                        ${h.text('email',class_="medium")}
+                    </div>
+                 </div>
+
+                <div class="buttons">
+                  ${h.submit('save',_('Save'),class_="ui-button")}
+                  ${h.reset('reset',_('Reset'),class_="ui-button")}
+                </div>
+            </div>
+        </div>
+    ${h.end_form()}
+    </div>
\ No newline at end of file