Exemple #1
0
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))