[IMP]Implement preferences functionality.

bzr revid: vja@vja-desktop-20110819131007-0o2pxuvrvh9q5cc3
This commit is contained in:
vishmita 2011-08-19 18:40:07 +05:30
parent 7e80e928fb
commit 9c465bb106
4 changed files with 137 additions and 4 deletions

View File

@ -278,7 +278,7 @@ class Database(openerpweb.Controller):
except xmlrpclib.Fault, e:
if e.faultCode and e.faultCode.split(':')[0] == 'AccessDenied':
return {'error': e.faultCode, 'title': 'Change Password'}
return {'error': 'Error, password not changed !', 'title': 'Change Password'}
return {'error': 'Error, password not changed !', 'title': 'Change Password'}
class Session(openerpweb.Controller):
_cp_path = "/base/session"
@ -293,7 +293,19 @@ class Session(openerpweb.Controller):
"uid": req.session._uid,
"context": ctx
}
@openerpweb.jsonrequest
def change_password (self,req,fields):
old_password, new_password,confirm_password = operator.itemgetter('old_pwd', 'new_pwd','confirm_pwd')(
dict(map(operator.itemgetter('name', 'value'), fields)))
try:
if req.session.model('res.users').change_password(
old_password, new_password):
req.session.password = new_password
return dict(changed=True)
raise redirect('/')
except xmlrpclib.Fault, e:
return {'error': 'Original password incorrect, your password was not changed.', 'title': 'Change Password'}
@openerpweb.jsonrequest
def sc_list(self, req):
return req.session.model('ir.ui.view_sc').get_sc(

View File

@ -572,6 +572,7 @@ openerp.base.Header = openerp.base.Widget.extend({
do_update: function () {
this.$element.html(QWeb.render("Header", this));
this.$element.find(".logout").click(this.on_logout);
this.$element.find("a.preferences").click(this.on_preferences);
return this.shortcut_load();
},
shortcut_load :function(){
@ -621,9 +622,98 @@ openerp.base.Header = openerp.base.Widget.extend({
});
});
},
on_action: function(action) {
},
on_preferences: function(){
var self = this;
var action_manager = new openerp.base.ActionManager(this);
this.rpc('/base/dataset/call', {model: 'res.users',method:"action_get",args: []},function(result){
self.rpc('/base/action/load', { action_id: result}, function(result){
result['result']['res_id'] = self.session.uid;
result['result']['res_model']= 'res.users';
result['result']['view_id']=result['result']['views'][0][0];
result['result']['flags']['action_buttons']=false;
result['result']['flags']['search_view']=false;
result['result']['flags']['sidebar']=false;
result['result']['view_mode']="form";
result['result']['flags']['views_switcher']=false;
result['result']['flags']['pager']=false;
action_manager.do_action(result['result']);
});
});
this.dialog = new openerp.base.Dialog(this,{
modal: true,
title: 'Preferences',
width: 600,
height: 500,
buttons: {
"Change password": function(){
self.change_password();
},
Cancel: function(){
$(this).dialog('destroy');
},
Save: function(){
var inner_viewmanager = action_manager.inner_viewmanager;
inner_viewmanager.views[inner_viewmanager.active_view].controller.do_save(function(){
inner_viewmanager.start();
});
$(this).dialog('destroy');
},
},
});
this.dialog.start();
this.dialog.open();
action_manager.appendTo(this.dialog);
action_manager.render(this.dialog);
},
change_password :function() {
var self = this;
this.dialog = new openerp.base.Dialog(this,{
modal : true,
title : 'Change Password',
width : 'auto',
height : 'auto',
});
this.dialog.start();
this.dialog.open();
this.dialog.$element.html(QWeb.render("Change_Pwd", self));
this.dialog.$element.find("form[name=change_password_form]").validate({
messages: {
old_password: "Please enter your previous password",
new_password: "Please enter your new password",
confirm_password: {
required: "Please confirm your new password",
equalTo: "The confirmation does not match the password"
},
},
submitHandler: function (form) {
self.rpc("/base/session/change_password",{
'fields': $("form[name=change_password_form]").serializeArray()
}, function(result) {
if (result.error) {
self.display_error(result);
return;
}
self.notification.notify("Changed Password", "Password has been changed successfully");
self.dialog.close();
});
},
});
},
display_error: function (error) {
return $('<div>').dialog({
modal: true,
title: error.title,
buttons: {
Ok: function() {
$(this).dialog("close");
}
}
}).html(error.error);
},
on_logout: function() {
this.$element.find('.oe-shortcuts ul').empty();
}

View File

@ -66,7 +66,6 @@ openerp.base.FormView = openerp.base.View.extend( /** @lends openerp.base.FormVi
var self = this;
this.fields_view = data.fields_view;
var frame = new (this.registry.get_object('frame'))(this, this.fields_view.arch);
this.$element.html(QWeb.render(this.template, { 'frame': frame, 'view': this }));
_.each(this.widgets, function(w) {
w.start();
@ -578,6 +577,7 @@ openerp.base.form.Widget = openerp.base.Widget.extend({
this.$element = $('#' + this.element_id);
},
stop: function() {
this.$element = $('#' + this.element_id);
this.$element.remove();
},
process_modifiers: function() {

View File

@ -1307,4 +1307,35 @@
<td><button class="oe_export_button_export" id="delete_export_list">Delete</button></td>
</tr>
</t>
<t t-name="Change_Pwd">
<form name="change_password_form" class="oe_forms" method="POST">
<table width="100%">
<tr>
<td class="option_string">
CHANGE PASSWORD
</td>
</tr>
</table>
<table align="center" class="db_option_table">
<tr>
<td><label for="old_pwd">Old Password:</label></td>
<td><input type="password" name="old_pwd" class="required"
minlength="1" autofocus="autofocus"/></td>
</tr>
<tr>
<td><label for="new_pwd">New Password:</label></td>
<td><input type="password" name="new_pwd" class="required"
minlength="1"/></td>
</tr>
<tr>
<td><label for="confirm_pwd">Confirm Password:</label></td>
<td><input type="password" name="confirm_pwd" class="required"
equalTo="input[name=new_pwd]" minlength="1"/></td>
</tr>
<tr>
<td colspan="2" align="right"><input type="submit" value="Change Password"/></td>
</tr>
</table>
</form>
</t>
</templates>