Merge pull request #89 from nabinhait/master

dt mapper and post render in pv
diff --git a/home/doctype/company_control/company_control.py b/home/doctype/company_control/company_control.py
index cab8e7c..246b07e 100644
--- a/home/doctype/company_control/company_control.py
+++ b/home/doctype/company_control/company_control.py
@@ -53,6 +53,15 @@
 			pr.role = r
 			pr.parentfield = 'userroles'
 			pr.save(1)
+		
+		# Update Membership Type at Gateway
+		if cint(webnotes.conn.get_value('Control Panel', None, 'sync_with_gateway')):
+			if 'System Manager' in role_list : membership_type = 'Administrator'
+			else : membership_type = 'Member'
+
+			import server_tools.gateway_utils
+			server_tools.gateway_utils.update_membership_type(cstr(arg['usr']), membership_type)
+
 		sql("delete from __SessionCache where user=%s", cstr(arg['usr']))
 
 	# Save profile
diff --git a/home/page/my_company/my_company.js b/home/page/my_company/my_company.js
index 9da7e9b..40bf155 100644
--- a/home/page/my_company/my_company.js
+++ b/home/page/my_company/my_company.js
@@ -322,7 +322,7 @@
 	
 	// show securty settings
 	this.set_security = function() {
-		var d = new wn.widgets.Dialog({
+		var sd = new wn.widgets.Dialog({
 			title: 'Set User Security',
 			width: 500,
 			fields: [
@@ -362,30 +362,72 @@
 				}
 			]
 		});
-		d.onshow = function() {
-			d.set_values({
+
+		me.sec_dialog = sd
+
+		sd.onshow = function() {
+			me.sec_dialog.set_values({
 				restrict_ip: me.profile.restrict_ip || '',
 				login_before: me.profile.login_before || '',
 				login_after: me.profile.login_after || '',
 				new_password: ''
-			})
-		}
-		d.fields_dict.update.input.onclick = function() {
+			});
+		};
+		sd.fields_dict.update.input.onclick = function() {
 			var btn = this;
 			this.set_working();
-			var args = d.get_values();
+			var args = me.sec_dialog.get_values();
 			args.user = me.profile.name;
-			$c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
-				if(r.exc) {
-					msgprint(r.exc);
+
+			if (args.new_password) {
+				var pass_d = new wn.widgets.Dialog({
+					title: 'Your Password',
+					width: 300,
+					fields: [
+						{
+							label: 'Please Enter Your Password',
+							description: "Your password is required to update the concerned user's password",
+							fieldtype: 'Password',
+							fieldname: 'sys_admin_pwd',
+							reqd: 1		
+						},
+
+						{
+							label: 'Continue',
+							fieldtype: 'Button',
+							fieldname: 'continue'
+						}
+					]
+				});
+
+				pass_d.fields_dict.continue.input.onclick = function() {
+					btn.pwd_dialog.hide();					
+					args.sys_admin_pwd = btn.pwd_dialog.get_values().sys_admin_pwd;					
+					btn.set_working();					
+					me.update_security(args);
 					btn.done_working();
-					return;
 				}
-				$.extend(me.profile, d.get_values());
-				d.hide();
-			});
-		}
-		d.show();
+
+				pass_d.show();
+				btn.pwd_dialog = pass_d;
+				btn.done_working();
+			} else {
+				btn.done_working();
+				me.update_security(args);
+			}			
+		};
+		sd.show();		
+	}
+
+	this.update_security = function(args) {
+		$c_page('home', 'my_company', 'update_security', JSON.stringify(args), function(r,rt) {
+			if(r.exc) {
+				msgprint(r.exc);				
+				return;
+			}
+			me.sec_dialog.hide();
+			$.extend(me.profile, me.sec_dialog.get_values());
+		});
 	}
 	
 	// delete user
diff --git a/home/page/my_company/my_company.py b/home/page/my_company/my_company.py
index 5d5ed80..3ff1482 100644
--- a/home/page/my_company/my_company.py
+++ b/home/page/my_company/my_company.py
@@ -140,8 +140,7 @@
 	if 'new_password' in args:
 		if cint(webnotes.conn.get_value('Control Panel',None,'sync_with_gateway')):
 			import server_tools.gateway_utils
-			webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'])['message'])
+			webnotes.msgprint(server_tools.gateway_utils.change_password('', args['new_password'], args['user'], args['sys_admin_pwd'])['message'])
 		else:
 			webnotes.conn.sql("update tabProfile set password=password(%s) where name=%s", (args['new_password'], args['user']))
-
-	webnotes.msgprint('Settings Updated')
\ No newline at end of file
+	else: webnotes.msgprint('Settings Updated')
\ No newline at end of file