def app_mond_index(self, request, extra_context=None): #user = request.user app_label = 'Module' user = get_user(request) print >> sys.stdout,request.path has_module_perms = user.has_module_perms(app_label) app_dict = {} #self._registry = admin.site._registry for model, model_admin in self._registry.items(): if app_label == model._meta.app_label: if has_module_perms: perms = model_admin.get_model_perms(request) # Check whether user has any perm for this module. # If so, add the module to the model_list. if True in perms.values(): info = (app_label, model._meta.module_name) model_dict = { 'name': capfirst(model._meta.verbose_name_plural), 'perms': perms, } if perms.get('change', False): try: model_dict['admin_url'] = reverse('customer_admin:%s_%s_changelist' % info, current_app=self.name) except NoReverseMatch: pass if perms.get('add', False): try: model_dict['add_url'] = reverse('customer_admin:%s_%s_add' % info, current_app=self.name) except NoReverseMatch: pass if app_dict: app_dict['models'].append(model_dict), else: # First time around, now that we know there's # something to display, add in the necessary meta # information. app_dict = { 'name': app_label.title(), 'app_url': '', 'has_module_perms': True, 'models': [model_dict], } if not app_dict: raise Http404('The requested admin page does not exist.') # Sort the models alphabetically within each app. app_dict['models'].sort(key=lambda x: x['name']) context = { 'title': _('%s administration') % capfirst(app_label), 'app_list': [app_dict], } extra_context = dict() extra_context['profile'] = get_user(request).get_profile(); context.update(extra_context or {}) return TemplateResponse(request, self.app_index_template or [ 'customer_login/change_form.html' , #'customer_login/app_index.html' ], context, current_app=self.name)
def app_index(self, request, app_label, extra_context=None): #user = request.user user = get_user(request) permission_set = user.get_all_permissions() app_dict = {} #self._registry = admin.site._registry from Components.models import UserModules for module in UserModules.objects.filter(module_name=app_label): app_label = module.module_name has_module_perms = user.has_module_perms(app_label) if has_module_perms: perms = module.get_model_perms(module=module.pk) # Check whether user has any perm for this module. # If so, add the module to the model_list. app_dict = { 'name': app_label.title(), 'app_url': '', 'has_module_perms': has_module_perms, 'models': [], } for prm in perms: if "%s.%s" % (app_label,prm) in permission_set: model_dict = { 'name': capfirst(prm), #'app_url': reverse('customer_admin:%s/%s' % (app_label,prm), kwargs={'app_label': app_label}, current_app=prm), } model_dict['admin_url'] = ('/home/%s/%s' % (app_label,prm)) try: model_dict['admin_url'] = reverse('customer_admin:%s/%s' % (app_label,prm),urlconf=None, kwargs={'app_label': app_label}, current_app=self.name) except NoReverseMatch: pass #print >> sys.stdout,model_dict.name app_dict['models'].append(model_dict) if not app_dict: raise Http404('The requested admin page does not exist.') # Sort the models alphabetically within each app. app_dict['models'].sort(key=lambda x: x['name']) context = { 'title': _('%s administration') % capfirst(app_label), 'app_list': [app_dict], } extra_context = dict() extra_context['profile'] = get_user(request).get_profile(); context.update(extra_context or {}) return TemplateResponse(request, self.app_index_template or [ 'customer_login/%s/app_index.html' % app_label, 'customer_login/app_index.html' ], context, current_app=self.name)
def app_mod_index(self, request, app_label,action, extra_context=None): #user = request.user user = get_user(request) permission_set = user.get_all_permissions() if "%s.%s" % (app_label,action) in permission_set: app_dict = {} app_dict = { 'name': app_label.title(), 'app_url': '', 'has_module_perms': True, 'models': [], } model_dict = { 'name': capfirst(action), #'app_url': reverse('customer_admin:%s/%s' % (app_label,prm), kwargs={'app_label': app_label}, current_app=prm), } model_dict['admin_url'] = ('/home/%s/%s' % (app_label,action)) try: model_dict['admin_url'] = reverse('customer_admin:%s/%s' % (app_label,action),urlconf=None, kwargs={'app_label': app_label}, current_app=self.name) except NoReverseMatch: pass #print >> sys.stdout,model_dict.name app_dict['models'].append(model_dict) if not app_dict: raise Http404('The requested admin page does not exist.') # Sort the models alphabetically within each app. app_dict['models'].sort(key=lambda x: x['name']) context = { 'title': _('%s administration') % capfirst(app_label), 'app_list': [app_dict], } extra_context = dict() extra_context['profile'] = get_user(request).get_profile(); context.update(extra_context or {}) return TemplateResponse(request, self.app_index_template or [ #'customer_login/%s/app_index.html' % app_label, 'customer_login/change_form.html' , #'customer_login/app_index.html', ], context, current_app=self.name) else: raise Http404('!!!permission denied!!!')
def app_mod_index(self, request, app_label,action,object_id=None, extra_context=None): #user = request.user user = get_user(request) permission_set = user.get_all_permissions() if not get_country_from_url(request.get_full_path()).lower() == user.country.iso_code.lower(): context = { 'error':'You cannot access other market information', 'home_url': '/%s/' % (user.country.iso_code) } return error_template('403',request=request,context=context,label='error') #raise Unauthorized("Permission denied") else: if "%s.%s" % (app_label,action) in permission_set: context = { 'title': _('%s administration') % capfirst(app_label), 'add' : True, 'submit_row' : True, 'uid': '69c2bcfd-4bab-43ac-a746-e456bf096a36', 'maxfilesize': '16777216', 'minfilesize': '1024', 'open_tv': u'{{', 'close_tv': u'}}', } extra_context = dict() extra_context['home_url'] = '/%s/' % (user.country.iso_code) extra_context['profile'] = get_user(request).get_profile(); extra_context['action'] = action.lower(); extra_context['object_id'] = object_id; extra_context['path'] = request.path; #print >> sys.stdout,action extra_context['modules'] = get_accessble_modules(request,sel_mod=app_label,sel_action=action) context.update(extra_context or {}) return TemplateResponse(request, self.app_index_template or [ 'base_templates/%s/%s.html' % (app_label,action), #'customer_login/change_form.html' , 'base_templates/app_index.html', ], context, current_app=self.name) else: context = { 'error':'Permission denied', 'home_url': '/%s/' % (user.country.iso_code) } return error_template('403',request=request,context=context,label='error')
def is_authorized(self, request,perm): user = get_user(request) permission_set = user.get_all_permissions() if "%s" % (perm) in permission_set: return True else: return False
def get_object_list(self, request): User = get_user(request) if self.Meta.authorization.is_authorized(request,'Extended.Edit'): user_inputs = (super(GalleryPresetDetail, self).get_object_list(request).filter(pk=request.GET['gid'])) return user_inputs else: raise Unauthorized("Permission denied")
def index(self, request, extra_context=None): """ Displays the main admin index page, which lists all of the installed apps that have been registered in this site. """ #user = request.user user = get_user(request) if not get_country_from_url(request.get_full_path()).lower() == user.country.iso_code.lower(): context = { 'error':'You cannot access other market information', 'home_url': '/%s/' % (user.country.iso_code) } return error_template('403',request=request,context=context,label='error') #return TemplateResponse(request, 'base_templates/403.html', context = {'error':'Permission denied'}, current_app=None) #raise Unauthorized("Permission denied") else: context = { 'title': "Catalogue administartion", } extra_context = dict() extra_context['home_url'] = '/%s/' % (user.country.iso_code) extra_context['profile'] = user.get_profile(); extra_context['modules'] = get_accessble_modules(request,sel_mod='',sel_action='') #print >> sys.stdout, extra_context['modules'] #print >> sys.stdout, 'edit' in [x.lower() for x in modules['users']['models']] #context.url ='/US/' context.update(extra_context or {}) return TemplateResponse(request, [ self.index_template or 'base_templates/index.html', ], context, current_app=self.name,)
def has_permission(self, request): """ Returns True if the given HttpRequest has permission to view *at least one* page in the admin site. """ user = get_user(request); return user.is_active
def password_change(self, request): """ Handles the "change password" task -- both form display and validation. """ from UserManagement.views import password_change user = get_user(request) country = get_country_from_url(request.get_full_path()) url = '/%s/' % (country) extra_context = { 'country' : '%s' % (country), 'home_url' : url } extra_context['profile'] = user.get_profile(); extra_context['modules'] = get_accessble_modules(request,sel_mod='Users',sel_action='') defaults = { 'current_app': self.name, 'extra_context' : extra_context, 'post_change_redirect': url + 'password_change/done/' } #import pdb #pdb.set_trace() if self.password_change_template is not None: defaults['template_name'] = self.password_change_template return password_change(request, **defaults)
def get_object_list(self, request): #if self.Meta.authorization.is_authorized(request,'Users.Create') or self.Meta.authorization.is_authorized(request,'Users.List'): LUSER = get_user(request) if self.Meta.authorization.is_authorized_collection(request=request,permission=['Users.Create','Users.List','Users.Edit'],atleast_one=True): from django.db.models import Q try: if not LUSER.is_superuser: return super(CRUDUser, self).get_object_list(request).filter(country=LUSER.country).filter(groups=request.GET['gid']).filter(is_active=True).filter(~Q(pk=LUSER.id)).filter(~Q(groups=1)) else: return super(CRUDUser, self).get_object_list(request).filter(country=LUSER.country).filter(groups=request.GET['gid']).filter(~Q(pk=LUSER.id)).filter(~Q(groups=1)) except: if not LUSER.is_superuser: return super(CRUDUser, self).get_object_list(request).filter(country=LUSER.country).filter(is_active=True).filter(~Q(pk=LUSER.id)).filter(~Q(groups=1)) else: return super(CRUDUser, self).get_object_list(request).filter(country=LUSER.country).filter(~Q(pk=LUSER.id)).filter(~Q(groups=1)) else: #raise Unauthorized("Permission denied") errors = {'error':['Permission denied']} options = { 'R':request, 'A':"/Users/User/Update/Access violation(user list)/", 'U':LUSER, 'L_T':'app', 'E':errors, 'C':401, } handle_errors(options)
def hydrate_m2m(self,bundle): User = get_user(bundle.request) #print >> sys.stdout,bundle.obj.countries try : country = WorldCountries.objects.get(country_name=User.country) bundle.obj.countries.add(country) #bundle.data.countries.add(country) except: pass
def dehydrate(self, bundle): bundle = super(CRUDUser,self).dehydrate(bundle) LUSER = get_user(bundle.request) if not LUSER.is_superuser: del bundle.data['is_superuser'] del bundle.data['is_active'] bundle.data['groups'] = bundle.data['groups'].replace('/api/v1/groups/limit/','').replace('/','') del bundle.data['country'] return bundle
def homepage(request): User = get_user(request) if User.is_authenticated(): from django.shortcuts import redirect return HttpResponseRedirect("/%s/" % User.country.iso_code) context = {} from Countries.models import WorldCountries from django.db.models import Q context["countries"] = WorldCountries.objects.filter(~Q(pk=1000)) # context['form']=AuthenticationForm return TemplateResponse(request, "base_templates/home_page.html", context)
def get_object_list(self, request): if self.Meta.authorization.is_authorized(request,'Groups.Create'): return super(Permissions, self).get_object_list(request) else: errors = {'error':['Permission denied']} options = { 'R':request, 'A':"/Users/Permission/list/Permission denied/", 'U':get_user(request), 'L_T':'app', 'E':errors, 'C':401, } handle_errors(options)
def get_object_list(self, request): User = get_user(request) if self.Meta.authorization.is_authorized(request,'Groups.Create'): gid = None try: gid = request.GET['gid'] except: pass if gid is not None: return super(GroupsList, self).get_object_list(request).filter(countries=User.country).filter(pk=gid) else: return super(GroupsList, self).get_object_list(request).filter(countries=User.country) else: raise Unauthorized("Permission denied")
def _wrapped_view(request, *args, **kwargs): if test_func(get_user(request)): return view_func(request, *args, **kwargs) path = request.build_absolute_uri() # If the login url is the same scheme and net location then just # use the path as the "next" url. login_scheme, login_netloc = urlparse.urlparse(login_url or settings.LOGIN_URL)[:2] current_scheme, current_netloc = urlparse.urlparse(path)[:2] if (not login_scheme or login_scheme == current_scheme) and ( not login_netloc or login_netloc == current_netloc ): path = request.get_full_path() from UserManagement.views import redirect_to_login return redirect_to_login(path, login_url, redirect_field_name)
def alter_detail_data_to_serialize(self, request, data): data.data['all_permission'] = {'modules':[]} User = get_user(request) Groups ={} if User.is_superuser: Groups = UserGroups.objects.get(pk=1) else: Groups = UserGroups.objects.get(pk=User.groups.pk) for module in Groups.modules.all(): data.data['all_permission']['modules'].append({'name':module,'privilege_id':module.privilege_id,'module':module.module.pk,'friendly_name':module.friendly_name}) data.data['all_modules'] = [] for module in UserModules.objects.filter(is_active=True): data.data['all_modules'].append({'name':module,'id':module.id}) return data
def get_object_list(self, request): User = get_user(request) if self.Meta.authorization.is_authorized_collection(request=request,permission=['Groups.Create','Groups.Edit'],atleast_one=True): return super(CRUDGroup, self).get_object_list(request).filter(countries=User.country) else: #raise Unauthorized("Permission denied") errors = {'error':['Permission denied']} options = { 'R':request, 'A':"/Users/Groups/Permission/Access violation/", 'U':User, 'L_T':'app', 'E':errors, 'C':401, } handle_errors(options)
def get_accessble_modules(request,sel_mod='',sel_action=''): #print >> sys.stdout,sel_mod user = get_user(request) country = user.country.iso_code modules = {'mod':[],'selected':[],'menus':[]} from Components.models import UserModules,UserPrivileges,UserActions for s in user.get_all_permissions(): modules['perm_'+s.replace('.','_').lower()]={'opt':['true']} for module in UserModules.objects.all(): app_label = module.module_name permission_set = user.get_all_permissions() has_module_perms = user.has_module_perms(app_label) if has_module_perms: groups = '' if module.groups.title().lower() == "none": groups = '' else: groups = '%s/' % module.groups.title() selected = False if sel_mod.lower() == app_label.lower(): modules['mod'].append({'name':app_label,'url':'/%s/%s%s/' % (country,groups,app_label),'sel':'active'}) selected = True modules['selected'].append({'name':app_label,'url':'/%s/%s%s/' % (country,groups,app_label),'options':[]}) else: modules['mod'].append({'name':app_label,'url':'/%s/%s%s/' % (country,groups,app_label),'sel':''}) perms = module.get_model_perms(module=module.pk) for prm in perms: if UserPrivileges.objects.filter(module=module).filter(action=UserActions.objects.filter(action_name=prm))[0].show_as_link: if "%s.%s" % (app_label,prm) in permission_set: modules[app_label.lower()]={'opt':[]} modules[app_label.lower()+'_'+prm.lower()]={'opt':[]} modules[app_label.lower()]['opt'].append('/%s/%s%s/' % (country,groups,app_label)) modules[app_label.lower()+'_'+prm.lower()]['opt'].append('/%s/%s%s/%s' % (country,groups,app_label,prm)) if selected: #print >> sys.stdout,prm if prm.lower() == sel_action.lower(): modules['selected'][0]['options'].append({'name':prm,'url':'/%s/%s%s/%s' % (country,groups,app_label,prm),'sel':'active'}) else: modules['selected'][0]['options'].append({'name':prm,'url':'/%s/%s%s/%s' % (country,groups,app_label,prm),'sel':''}) #print >> sys.stdout,modules return modules
def after_login( request, template_name="base_templates/login.html", redirect_field_name=REDIRECT_FIELD_NAME, authentication_form=PasswordResetForm, current_app=None, extra_context=None, ): """ Displays the login form and handles the login action. """ redirect_to = request.REQUEST.get(redirect_field_name, "./") if request.method == "POST": form = authentication_form(data=request.POST) if form.is_valid(): # Ensure the user-originating redirection url is safe. if not is_safe_url(url=redirect_to, host=request.get_host()): redirect_to = settings.LOGIN_REDIRECT_URL # Okay, security check complete. Log the user in. auth_login(request, form.get_user()) if request.session.test_cookie_worked(): request.session.delete_test_cookie() return HttpResponseRedirect(redirect_to) else: form = authentication_form(request) request.session.set_test_cookie() current_site = get_current_site(request) context = {"form": form, redirect_field_name: redirect_to, "site": current_site, "site_name": current_site.name} extra_context = dict() extra_context["profile"] = get_user(request).get_profile() # import pdb # pdb.set_trace() # print >> sys.stdout,context if extra_context is not None: context.update(extra_context) return TemplateResponse(request, template_name, context, current_app=current_app)
def hydrate_m2m(self,bundle): User = get_user(bundle.request) try : country = WorldCountries.objects.get(country_name=User.country) bundle.obj.countries.add(country) bundle.obj.owner = country.pk except: pass try: Groups ={} if User.is_superuser: Groups = UserGroups.objects.get(pk=1) else: Groups = UserGroups.objects.get(pk=User.groups.pk) selected_module = bundle.request.POST['modules'].split(',') for mod in UserPrivileges.objects.all(): bundle.obj.modules.remove(mod) for mod in Groups.modules.all(): try: if str(mod.privilege_id) in selected_module: bundle.obj.modules.add(mod) #bundle.obj.modules.add(mod) except: pass except: pass try: for mod in Categories.objects.all(): bundle.obj.category.remove(mod) for mod in bundle.request.POST['categories'].split(','): try: # need to add country specifyc category check bundle.obj.category.add(Categories.objects.get(pk=mod)) except: pass except: pass
def password_change_done(self, request, extra_context=None): """ Displays the "success" page after a password change. """ from UserManagement.views import password_change_done user = get_user(request) extra_context = { 'home_url' : '/%s/' % ( get_country_from_url(request.get_full_path())), } extra_context['profile'] = user.get_profile(); extra_context['modules'] = get_accessble_modules(request,sel_mod='Users',sel_action='') defaults = { 'current_app': self.name, 'extra_context': extra_context or {}, } if self.password_change_done_template is not None: defaults['template_name'] = self.password_change_done_template return password_change_done(request, **defaults)
def get_object_list(self, request): User = get_user(request) #print >> sys.stdout,self.Meta.authorization.is_authorized_collection(request=request,permission=['Groups.Create','Groups.Edit'],atleast_one=True) if self.Meta.authorization.is_authorized_collection(request=request,permission=['Groups.Create','Groups.Edit'],atleast_one=True): if User.is_superuser: return super(GroupsPermission, self).get_object_list(request).filter(pk=1) else: return super(GroupsPermission, self).get_object_list(request).filter(pk=User.groups.pk) else: #raise Unauthorized("Permission denied") errors = {'error':['Permission denied']} options = { 'R':request, 'A':"/Users/Groups/Permission List/Access violation(user list)/", 'U':User, 'L_T':'app', 'E':errors, 'C':401, } handle_errors(options)
def obj_create(self, bundle, **kwargs): request = bundle.request User = get_user(bundle.request) action = str(User.pk)+"/" + bundle.request.POST['category_name'] if User.is_superuser: #if self.Meta.authorization.is_authorized(request,'Groups.Create'): try: try: newCategory = Categories(category_name =bundle.request.POST['category_name']) #newCategory.children.add(Categories.objects.get(pk=bundle.request.POST['parent'])) Categories.objects.get(pk=bundle.request.POST['parent']).children.add(newCategory) country = WorldCountries.objects.get(country_name=User.country) newCategory.countries.add(country) newCategory.owner = country.pk newCategory.is_system_folder = False newCategory.save() bundle.obj = newCategory bundle.obj.id = newCategory.pk #bundle = super(BookCategories, self).obj_create(bundle, **kwargs) except AttributeError, e: errors = {'error':[str(e)]} options = { 'R':bundle.request, 'A':"/Categories/Category/Update/Application error(attribute)/" +action, 'U':User, 'L_T':'app', 'E':errors, 'C':500, } handle_errors_only_log(options) except IntegrityError, e1: errors = {'error':[str(e1)]} options = { 'R':bundle.request, 'A':"/Categories/Category/Create/Application error(integrity)/" +action, 'U':User, 'L_T':'app', 'E':errors, 'C':500, } handle_errors(options)
def obj_create(self, bundle, **kwargs): request = bundle.request User = get_user(request) action = str(User.pk)+"/" + bundle.request.POST['group_name'] if self.Meta.authorization.is_authorized(request,'Groups.Create'): try: try: #for category in Categories.objects.all(): # print >> sys.stdout,category country = WorldCountries.objects.get(country_name=User.country) #bundle.obj.owner = country.pk bundle = super(CRUDGroup, self).obj_create(bundle, owner=country.pk) #print >> sys.stdout,bundle.obj.id bundle.obj.save() except AttributeError, e: errors = {'error':[str(e)]} options = { 'R':bundle.request, 'A':"/Users/Groups/Create/Application error(attribute)/" +action, 'U':User, 'L_T':'app', 'E':errors, 'C':500, } handle_errors_only_log(options) except IntegrityError, e1: errors = {'error':[str(e1)]} options = { 'R':bundle.request, 'A':"/Users/Groups/Create/Application error(integrity)/" +action, 'U':User, 'L_T':'app', 'E':errors, 'C':500, } handle_errors(options)
def alter_list_data_to_serialize(self, request, data_dict): LUSER = get_user(request) if isinstance(data_dict, dict): if 'meta' in data_dict: # Get rid of the "meta". #del(data_dict['meta']) data_dict['fld'] = {} data_dict['fields'] = [] data_dict['models'] = [] friendly_field_name = User().list_view_display_fields() for field in friendly_field_name: data_dict['fld'][field] = field #del data_dict['fld']['groups'] #del data_dict['fld']['id'] #del data_dict['fld']['country'] if not LUSER.is_superuser: del data_dict['fld']['is_superuser'] del data_dict['fld']['is_active'] #print >> sys.stdout,friendly_field_name for field in data_dict['fld']: data_dict['fields'].append(field) data_dict['models'].append({"title": friendly_field_name[field],"property": field, "sortable": "true"}) del data_dict['fld'] #for field in data_dict['fields']: # data_dict['models'].append({'name':field,'index':field,'width':80}) # Rename the objects. data_dict['users'] = copy.copy(data_dict['objects']) del(data_dict['objects']) return data_dict
def app_index(self, request, app_label, extra_context=None): #user = request.user #print >> sys.stdout, request.get_full_path().split('/')[1] user = get_user(request) if not get_country_from_url(request.get_full_path()).lower() == user.country.iso_code.lower(): context = { 'error':'You cannot access other market information', 'home_url': '/%s/' % (user.country.iso_code) } return error_template('403',request=request,context=context,label='error') #raise Unauthorized("Permission denied") else: context = { 'title': _('%s administration') % capfirst(app_label), } """ context = { 'title': _('%s administration') % capfirst(app_label), } """ extra_context = dict() extra_context['home_url'] = '/%s/' % (user.country.iso_code) extra_context['profile'] = user.get_profile(); extra_context['modules'] = get_accessble_modules(request,sel_mod=app_label,sel_action='') if not extra_context['modules']: raise Http404('The requested admin page does not exist.') #print >> sys.stdout, extra_context['modules']['selected'][0]['options'] context.update(extra_context or {}) return TemplateResponse(request, self.app_index_template or [ 'base_templates/%s/app_index.html' % app_label, 'base_templates/app_index.html' ], context, current_app=self.name)
def password_change( request, template_name="base_templates/registration/password_change_form.html", post_change_redirect=None, password_change_form=PasswordChangeForm, current_app=None, extra_context=None, ): User = get_user(request) if post_change_redirect is None: post_change_redirect = reverse("UserManagement.views.password_change_done") if request.method == "POST": form = password_change_form(user=User, data=request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(post_change_redirect) else: form = password_change_form(user=User) context = {"form": form} if extra_context is not None: context.update(extra_context) return TemplateResponse(request, template_name, context, current_app=current_app)
def is_authorized_collection(self, request=None,permission=[],must_all=False,atleast_one=False): user = get_user(request) permission_set = user.get_all_permissions() avl_perm = 0 all_perm = 0 if must_all: atleast_one = False if atleast_one: must_all = False one_perm_avilable = False for perm in permission: all_perm=all_perm+1 if "%s" % (perm) in permission_set: avl_perm=avl_perm+1 one_perm_avilable = True if atleast_one: return one_perm_avilable #import sys #print >> sys.stdout,all_perm #print >> sys.stdout,avl_perm if must_all: return avl_perm == all_perm else: return one_perm_avilable
def accout_information_update(request, template_name="base_templates/login.html", extra_context=None): """ Displays the login form and handles the login action. """ user = get_user(request) success = 0 if request.method == "POST": form = update_form(user=user, data=request.POST) if form.is_valid(): user.first_name = request.POST["first_name"] user.last_name = request.POST["last_name"] user.email = request.POST["email"] user.username = user.username form.save(user) success = 1 else: form = update_form( user=user, initial={ "username": user.username, "first_name": user.first_name, "last_name": user.last_name, "email": user.email, }, ) form.fields["username"].widget.attrs["readonly"] = True # print >> sys.stdout,form.errors context = {"form": form} if success == 1: extra_context["saved"] = "Updated successfully" if extra_context is not None: context.update(extra_context) return TemplateResponse(request, template_name, context)