def add_account(request): main_user = request.user.house_user other = main_user.get_other_users() if request.method == 'POST': in_form = AddEditAccountForm(request.POST) access_formset = AccessFormSet(request.POST) if access_formset.is_valid() and in_form.is_valid(): new_acct = Account.objects.create( acct_name = in_form.cleaned_data['acct_name'], login_url = in_form.cleaned_data['login_url'], created_by = request.user.house_user, acct_type = in_form.cleaned_data['acct_type'], ) if 'access_login' in in_form.cleaned_data: new_acct.access_login = in_form.cleaned_data['access_login'] if 'access_password' in in_form.cleaned_data: new_acct.access_password = in_form.cleaned_data['access_password'] if 'brief' in in_form.cleaned_data: new_acct.brief = in_form.cleaned_data['brief'] if 'description' in in_form.cleaned_data: new_acct.description = in_form.cleaned_data['description'] new_acct.save() for access_form in access_formset: user_pk = int(access_form.cleaned_data['user_id']) can_edit = access_form.cleaned_data['can_edit'] can_view = access_form.cleaned_data['can_view'] can_manage = access_form.cleaned_data['can_manage'] access_user = HouseUser.objects.get(pk=user_pk) access_map = AccountUserPermission.objects.create( account = new_acct, user = access_user, can_view = can_view, can_manage = can_manage, can_edit =can_edit ) return HttpResponseRedirect("/account/") else: template = loader.get_template('base/err_template.html') return HttpResponse(template.render({'form':in_form})) template = "account/add_edit_account.html" in_form = AddEditAccountForm() tw_form = TimeWatchForm() init_formset_data = [] for person in other: ######################### # First field is made by VoidWidget to display username AS part of form ######################### init_form_data={ 'id':None, 'user_name':person.user, # This is for display purposes 'user_id':person.user.pk, 'can_view':True, 'can_manage':True, 'can_edit':False} init_formset_data.append(init_form_data) access_formset = AccessFormSet(initial=init_formset_data) context = {'form':in_form,'tw_form':tw_form,'access_formset':access_formset} context['action'] = 'add' context['username'] = request.session['user_name'] return render(request,template,context)
def edit_account(request,in_acct_id): account_obj = Account.objects.get(pk=in_acct_id) main_user = request.user.house_user other = main_user.get_other_users() if request.method == 'POST': in_form = AddEditAccountForm(request.POST) # tw_form = TimeWatchForm(request.POST) access_formset = AccessFormSet(request.POST) if access_formset.is_valid() and in_form.is_valid(): account_obj.acct_name = in_form.cleaned_data['acct_name'] account_obj.login_url = in_form.cleaned_data['login_url'] account_obj.acct_type = in_form.cleaned_data['acct_type'] if 'access_login' in in_form.cleaned_data: account_obj.access_login = in_form.cleaned_data['access_login'] if 'access_password' in in_form.cleaned_data: account_obj.access_password = in_form.cleaned_data['access_password'] if 'brief' in in_form.cleaned_data: account_obj.brief = in_form.cleaned_data['brief'] if 'description' in in_form.cleaned_data: account_obj.description = in_form.cleaned_data['description'] if 'disabled' in in_form.cleaned_data: account_obj.description = in_form.cleaned_data['disabled'] account_obj.save() for access_form in access_formset: access_map_pk = int(access_form.cleaned_data['id']) can_edit = access_form.cleaned_data['can_edit'] can_view = access_form.cleaned_data['can_view'] can_manage = access_form.cleaned_data['can_manage'] access_map = AccountUserPermission.objects.get(pk=access_map_pk) access_map.can_view = can_view access_map.can_manage = can_manage access_map.can_edit = can_edit access_map.save() return HttpResponseRedirect("/account/") else: template = loader.get_template('base/err_template.html') return HttpResponse(template.render({'form':in_form})) template = "account/add_edit_account.html" in_form = AddEditAccountForm(instance=account_obj) tw_form = TimeWatchForm() init_formset_data = [] for person in other: house_user = person.user access_map = AccountUserPermission.objects.filter(account=account_obj).get(user=house_user) ######################### # First field is made by VoidWidget to display username AS part of form ######################### init_form_data = { 'id':access_map.pk, 'user_name':house_user, # This is for display purposes 'user_id':house_user.pk, 'can_view':access_map.can_view, 'can_manage':access_map.can_manage, 'can_edit':access_map.can_edit} init_formset_data.append(init_form_data) access_formset = AccessFormSet(initial=init_formset_data) context = {'form':in_form,'tw_form':tw_form,'access_formset':access_formset} context['action'] = 'edit' context['username'] = request.session['user_name'] return render(request,template,context)