def add_staff(request): if request.POST: p = request.POST email = request.POST.get('i_email', '') password = request.POST.get('i_pass', random_string(8)) user = User() if request.db_session.query(User)\ .filter_by(email=email)\ .filter_by(user_type_id=request.user.user_type_id).first(): user.errors.append( {'field': 'email', 'message': 'User with such email already exists.'}) if user.no_errors(): user.email = email # here encryption is made in validator if validation is passed user.set_password(password) user.first_name = p.get('i_first_name', '') user.last_name = p.get('i_last_name', '') user.phone = phone_number_from_request(request.POST, 'i_phone') user.m_phone = phone_number_from_request(request.POST, 'i_m_phone') user.user_type = request.user.user_type if request.user.is_focus: company_id = request.POST.get('f_company_name', '') if company_id != "0": user.company = request.db_session.query(Company).filter_by(id=company_id).first() user.user_type_id = 2 else: user.company = request.user.company user.local_tz = request.POST.get('f_tz', None) address = address_from_request(request.POST) if user.no_errors() and address.no_errors(): request.db_session.add_all([user, address]) user.address = address mail.send_mail('Account registration', 'Welcome to %s \n' 'Your registration information: \n' 'Email: %s\n' 'Password: %s\n' % ( request.META['HTTP_HOST'], email, password), settings.DEFAULT_FROM_EMAIL, [email], fail_silently=False) request.db_session.commit() # return HttpResponseRedirect(reverse('profiles.views.perms_by_id', args=(user.id,))) response = json_response_content('success', 'New worker was added successfully') response['redirect_url'] = reverse('profiles.views.perms_by_id', args=(user.id,)) else: request.db_session.rollback() response = json_response_content('error', 'Some error occured during user creation') for error in user.errors: response['errors'].append(error) for error in address.errors: response['errors'].append(error) else: request.db_session.rollback() response = json_response_content('error', 'Some error occured during user creation') request.db_session.rollback() for error in user.errors: response['errors'].append(error) return JsonResponse(response) company_names = request.db_session.query(Company).all() return render_to_response('profile_add.html', {'operation': 'add', 'company_names': company_names, 'timezones': pytz.common_timezones}, context_instance=RequestContext(request))