def create(request): if request.method == 'POST': form = CreateUserForm(request.POST) if form.is_valid(): #creating user perms = { each : form.cleaned_data[each] for each in perms_to_classes.keys()} password = User.objects.make_random_password(length = 8) user = create_user(username = form.cleaned_data['email'], password = password, email = form.cleaned_data['email'], perms = perms, ) #sending mail send_templated_email(subject = 'Создан аккаунт', email_template_name = 'user_manager_create_email.html', email_context = {'username' : user.username, 'password' : password, 'perms' : perms_to_list(perms), 'admin' : user.is_staff, 'perms_to_language' : perms_to_language, }, recipients = user.email, ) status = "success" return HttpResponse(status) else: form = CreateUserForm() return render(request, 'user_manager_create.html', {'form' : form})
def get_staff_members(): staff = [] #no regular users here staff_perms_list = perms_to_classes.keys() staff_perms_list.remove('regular') for key in staff_perms_list: staff = staff +\ [each.data.user for each in globals()\ [perms_to_classes[key]].objects.filter(is_active = True)] #c-style distinct() for lists staff = list(set(staff)) staff = { each : perms_to_list(each.UserData.get_permissions()) for each in staff } return staff
def set_permissions(self, perms): for key in perms_to_classes.keys(): getattr(self, perms_to_classes[key]).is_active = perms[key] getattr(self, perms_to_classes[key]).save() self.user.save()
def create_additional_data(instance, created, **kwargs): if created: for key in perms_to_classes.keys(): globals()[key] = globals()[perms_to_classes[key]](data = instance) globals()[key].save()
def get_permissions(self): perms = {key : getattr(self, perms_to_classes[key]).is_active for key in perms_to_classes.keys()} return perms