Mercurial > libervia-web
annotate browser_side/register.py @ 239:b911f2b43fd4
browser_side: added input history in the unibox:
This functionality uses a file from the sat project:
use the -I parameter of pyjsbuild to add sat library
to your PYJSPATH. To ease also possible to use your
sat source directory instead of the library, you just
need to trick pyjsbuild with a symbolic link:
SAT=~/workspace/sat
if [[ ! -e $SAT/sat ]]; then ln -sf $SAT/src $SAT/sat; fi
This will allow you to import like that in libervia.py:
from sat.tools.frontend.misc import InputHistory
And then you can build with:
$PYJS/bin/pyjsbuild libervia --no-compile-inplace -m -I $SAT
author | souliane <souliane@mailoo.org> |
---|---|
date | Mon, 14 Oct 2013 20:54:13 +0200 |
parents | 531b8809d1ab |
children | c24715dcd2f6 |
rev | line source |
---|---|
0 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 """ | |
5 Libervia: a Salut à Toi frontend | |
165 | 6 Copyright (C) 2011, 2012, 2013 Jérôme Poisson <goffi@goffi.org> |
131 | 7 Copyright (C) 2011, 2012 Adrien Vigneron <adrienvigneron@mailoo.org> |
0 | 8 |
9 This program is free software: you can redistribute it and/or modify | |
10 it under the terms of the GNU Affero General Public License as published by | |
11 the Free Software Foundation, either version 3 of the License, or | |
12 (at your option) any later version. | |
13 | |
14 This program is distributed in the hope that it will be useful, | |
15 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 GNU Affero General Public License for more details. | |
18 | |
19 You should have received a copy of the GNU Affero General Public License | |
20 along with this program. If not, see <http://www.gnu.org/licenses/>. | |
21 """ | |
22 | |
23 #This page manage subscription and new account creation | |
24 import pyjd # this is dummy in pyjs | |
25 | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
26 from pyjamas.ui.SimplePanel import SimplePanel |
0 | 27 from pyjamas.ui.VerticalPanel import VerticalPanel |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
28 from pyjamas.ui.HorizontalPanel import HorizontalPanel |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
29 from pyjamas.ui.TabPanel import TabPanel |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
30 from pyjamas.ui.TabBar import TabBar |
0 | 31 from pyjamas.ui.PasswordTextBox import PasswordTextBox |
32 from pyjamas.ui.TextBox import TextBox | |
33 from pyjamas.ui.FormPanel import FormPanel | |
34 from pyjamas.ui.Button import Button | |
46 | 35 from pyjamas.ui.Label import Label |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
36 from pyjamas.ui.PopupPanel import PopupPanel |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
37 from pyjamas.ui.Image import Image |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
38 from pyjamas.ui.Hidden import Hidden |
0 | 39 from pyjamas import Window |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
40 from pyjamas.ui.KeyboardListener import KEY_ESCAPE, KEY_ENTER |
46 | 41 import re |
237
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
42 from pyjamas.Timer import Timer |
0 | 43 |
44 | |
45 class RegisterPanel(FormPanel): | |
46 | |
47 def __init__(self, callback): | |
48 """ | |
49 @param callback: method to call if login successful | |
50 """ | |
51 FormPanel.__init__(self) | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
52 self.setSize('600px', '350px') |
0 | 53 self.callback = callback |
54 self.setMethod(FormPanel.METHOD_POST) | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
55 main_panel = HorizontalPanel() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
56 main_panel.setStyleName('registerPanel_main') |
77 | 57 left_side = Image("media/libervia/register_left.png") |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
58 main_panel.add(left_side) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
59 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
60 ##TabPanel## |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
61 tab_bar = TabBar() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
62 tab_bar.setStyleName('registerPanel_tabs') |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
63 self.right_side = TabPanel(tab_bar) |
67 | 64 self.right_side.setStyleName('registerPanel_right_side') |
65 main_panel.add(self.right_side) | |
66 main_panel.setCellWidth(self.right_side, '100%') | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
67 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
68 ##Login tab## |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
69 login_tab = SimplePanel() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
70 login_tab.setStyleName('registerPanel_content') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
71 login_vpanel = VerticalPanel() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
72 login_tab.setWidget(login_vpanel) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
73 |
161 | 74 self.login_warning_msg = Label('') |
75 self.login_warning_msg.setVisible(False) | |
76 self.login_warning_msg.setStyleName('formWarning') | |
77 login_vpanel.add(self.login_warning_msg) | |
46 | 78 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
79 login_label = Label('Login:') |
46 | 80 self.login_box = TextBox() |
81 self.login_box.setName("login") | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
82 self.login_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
83 login_pass_label = Label('Password:') |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
84 self.login_pass_box = PasswordTextBox() |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
85 self.login_pass_box.setName("login_password") |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
86 self.login_pass_box.addKeyboardListener(self) |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
87 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
88 login_vpanel.add(login_label) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
89 login_vpanel.add(self.login_box) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
90 login_vpanel.add(login_pass_label) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
91 login_vpanel.add(self.login_pass_box) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
92 login_but = Button("Log in", getattr(self, "onLogin")) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
93 login_but.setStyleName('button') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
94 login_but.addStyleName('red') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
95 login_vpanel.add(login_but) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
96 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
97 #The hidden submit_type field |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
98 self.submit_type = Hidden('submit_type') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
99 login_vpanel.add(self.submit_type) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
100 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
101 ##Register tab## |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
102 register_tab = SimplePanel() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
103 register_tab.setStyleName('registerPanel_content') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
104 register_vpanel = VerticalPanel() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
105 register_tab.setWidget(register_vpanel) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
106 |
161 | 107 self.register_warning_msg = Label('') |
108 self.register_warning_msg.setVisible(False) | |
109 self.register_warning_msg.setStyleName('formWarning') | |
110 register_vpanel.add(self.register_warning_msg) | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
111 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
112 register_login_label = Label('Login:') |
67 | 113 self.register_login_box = TextBox() |
114 self.register_login_box.setName("register_login") | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
115 self.register_login_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
116 email_label = Label('E-mail:') |
46 | 117 self.email_box = TextBox() |
118 self.email_box.setName("email") | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
119 self.email_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
120 register_pass_label = Label('Password:') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
121 self.register_pass_box = PasswordTextBox() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
122 self.register_pass_box.setName("register_password") |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
123 self.register_pass_box.addKeyboardListener(self) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
124 register_vpanel.add(register_login_label) |
67 | 125 register_vpanel.add(self.register_login_box) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
126 register_vpanel.add(email_label) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
127 register_vpanel.add(self.email_box) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
128 register_vpanel.add(register_pass_label) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
129 register_vpanel.add(self.register_pass_box) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
130 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
131 register_but = Button("Register", getattr(self, "onRegister")) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
132 register_but.setStyleName('button') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
133 register_but.addStyleName('red') |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
134 register_vpanel.add(register_but) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
135 |
67 | 136 self.right_side.add(login_tab, 'Login') |
137 self.right_side.add(register_tab, 'Register') | |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
138 self.right_side.addTabListener(self) |
67 | 139 self.right_side.selectTab(0) |
161 | 140 login_tab.setWidth(None) |
141 register_tab.setWidth(None) | |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
142 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
143 self.add(main_panel) |
0 | 144 self.addFormHandler(self) |
145 self.setAction('register_api/login') | |
146 | |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
147 def onBeforeTabSelected(self, sender, tabIndex): |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
148 return True |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
149 |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
150 def onTabSelected(self, sender, tabIndex): |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
151 if tabIndex == 0: |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
152 self.login_box.setFocus(True) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
153 elif tabIndex == 1: |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
154 self.register_login_box.setFocus(True) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
155 |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
156 def onKeyPress(self, sender, keycode, modifiers): |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
157 if keycode == KEY_ENTER: |
237
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
158 # Browsers offer an auto-completion feature to any |
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
159 # text box, but the selected value is not set when |
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
160 # the widget looses the focus. Using a timer with |
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
161 # any delay value > 0 would do the trick. |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
162 if sender == self.login_box: |
237
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
163 Timer(10, lambda: self.login_pass_box.setFocus(True)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
164 elif sender == self.login_pass_box: |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
165 self.onLogin(None) |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
166 elif sender == self.register_login_box: |
237
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
167 Timer(10, lambda: self.email_box.setFocus(True)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
168 elif sender == self.email_box: |
237
531b8809d1ab
browser_side: fixed browser built-in auto-completion in login/register panels
souliane <souliane@mailoo.org>
parents:
222
diff
changeset
|
169 Timer(10, lambda: self.register_pass_box.setFocus(True)) |
216
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
170 elif sender == self.register_pass_box: |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
171 self.onRegister(None) |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
172 |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
173 def onKeyUp(self, sender, keycode, modifiers): |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
174 pass |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
175 |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
176 def onKeyDown(self, sender, keycode, modifiers): |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
177 pass |
9827cda1a6b0
browser_side: added key listener to login and register panels
souliane <souliane@mailoo.org>
parents:
173
diff
changeset
|
178 |
62 | 179 def onLogin(self, button): |
173
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
180 if not re.match(r'^[a-z0-9_-]+$',self.login_box.getText(), re.IGNORECASE): |
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
181 self.login_warning_msg.setText('Invalid login, valid characters are a-z A-Z 0-9 _ -') |
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
182 self.login_warning_msg.setVisible(True) |
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
183 else: |
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
184 self.submit_type.setValue('login') |
3d998119237e
browser side: added login characters check in login panel (similar to the one in register panel)
Goffi <goffi@goffi.org>
parents:
165
diff
changeset
|
185 self.submit() |
46 | 186 |
62 | 187 def onRegister(self, button): |
67 | 188 if not re.match(r'^[a-z0-9_-]+$',self.register_login_box.getText(), re.IGNORECASE): |
161 | 189 self.register_warning_msg.setText('Invalid login, valid characters are a-z A-Z 0-9 _ -') |
190 self.register_warning_msg.setVisible(True) | |
46 | 191 elif not re.match(r'^.+@.+\..+', self.email_box.getText(), re.IGNORECASE): |
161 | 192 self.register_warning_msg.setText('Invalid email address') |
193 self.register_warning_msg.setVisible(True) | |
46 | 194 else: |
161 | 195 self.register_warning_msg.setVisible(False) |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
196 self.submit_type.setValue('register') |
46 | 197 self.submit() |
198 | |
0 | 199 def onSubmit(self, event): |
200 pass | |
201 | |
202 def onSubmitComplete(self, event): | |
203 result = event.getResults() | |
204 if result == "AUTH ERROR": | |
121 | 205 Window.alert('Your login and/or password is incorrect. Please try again') |
0 | 206 elif result == "LOGGED": |
207 self.callback() | |
62 | 208 elif result == "SESSION_ACTIVE": |
161 | 209 Window.alert('Session already active, this should not happen, please contact the author to fix it') |
46 | 210 elif result == "ALREADY EXISTS": |
161 | 211 self.register_warning_msg.setText('This login already exists, please choose an other one') |
212 self.register_warning_msg.setVisible(True) | |
213 elif result == "INTERNAL": | |
214 self.register_warning_msg.setText('SERVER ERROR: something went wrong during registration process, please contact the server administrator') | |
215 self.register_warning_msg.setVisible(True) | |
46 | 216 elif result == "REGISTRATION": |
161 | 217 self.login_warning_msg.setVisible(False) |
218 self.register_warning_msg.setVisible(False) | |
67 | 219 self.login_box.setText(self.register_login_box.getText()) |
220 self.register_login_box.setText('') | |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
221 self.register_pass_box.setText('') |
67 | 222 self.email_box.setText('') |
223 self.right_side.selectTab(0) | |
46 | 224 Window.alert('An email has been sent to you with your login informations\nPlease remember that this is ONLY A TECHNICAL DEMO') |
0 | 225 else: |
226 Window.alert('Submit error: %s' % result) | |
227 | |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
228 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
229 class RegisterBox(PopupPanel): |
0 | 230 |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
231 def __init__(self, callback, *args, **kwargs): |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
232 PopupPanel.__init__(self, *args, **kwargs) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
233 self._form = RegisterPanel(callback) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
234 self.setWidget(self._form) |
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
235 |
66
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
236 def onWindowResized(self, width, height): |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
237 super(RegisterBox, self).onWindowResized(width, height) |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
238 self.centerBox() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
239 |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
240 def show(self): |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
241 super(RegisterBox, self).show() |
9d8e79ac4c9c
Login/Register box: integration of Adrien Vigneron's design
Goffi <goffi@goffi.org>
parents:
62
diff
changeset
|
242 self.centerBox() |
222
759fd7386e1e
browser_side: set the focus to the first field when a tab is selected from the register panel
souliane <souliane@mailoo.org>
parents:
216
diff
changeset
|
243 self._form.login_box.setFocus(True) |