예제 #1
0
def register(request):

    registered = False
    if request.method == 'POST':
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)
        if user_form.is_valid() and profile_form.is_valid():
            user = user_form.save()
            user.set_password(user.password)
            user.save()
            profile = profile_form.save(commit=False)
            profile.user = user
            profile.save()
            registered = True
        else:
            print(user_form.errors, profile_form.errors)
    else:
        user_form = UserForm()
        profile_form = UserProfileForm()
    return render(
        request, 'snatch/register.html', {
            'user_form': user_form,
            'profile_form': profile_form,
            'registered': registered
        })
예제 #2
0
def user_login(request):
    # 从 get 或者 post 请求中获取 next 参数值
    # get 请求中,next 通过 url 传递,即 /?next=value
    # post 请求中,next 通过表单传递,即 <input type="hidden" name="next" value="{{ next }}"/>
    redirect_to = request.POST.get('next', request.GET.get('next', ''))
    print(redirect_to)
    if request.method == 'POST':
        user_login_form = UserProfileForm(request.POST)
        if user_login_form.is_valid():
            # cleaned_data 清洗出合法数据
            # 检验账号、密码是否正确匹配数据库中的某个用户
            # 如果均匹配则返回这个 user 对象
            user = authenticate(
                username=user_login_form.cleaned_data['username'],
                password=user_login_form.cleaned_data['password'])
            if user:
                # 将用户数据保存在 session 中,即实现了登录动作
                login(request, user)
                # 登录成功之后,跳转到登录前的页面
                return redirect(request.GET.get('next', '/'))
            else:
                return HttpResponse('账号或密码输入有误,请重新输入!!')
        else:
            return HttpResponse('账号或密码输入不合法!')
    elif request.method == 'GET':
        user_login_form = UserProfileForm()
        return render(request, 'userprofile/login.html', locals())
    else:
        return HttpResponse('请使用GET或POST请求数据!!')
예제 #3
0
 def post(self, request, *arg, **kwargs):
     pk = self.kwargs.get('pk')
     instance = None
     profile = None
     coop_admin = None
     errors = dict()
     
     if pk:
         instance = User.objects.filter(pk=pk)
         if instance.exists():
             instance = instance[0]
             profile = instance.profile
             if hasattr(instance, 'cooperative_admin'):
                 coop_admin = instance.cooperative_admin
     user_form = UserForm(request.POST, instance=instance)
     profile_form = UserProfileForm(request.POST, instance=profile)
     
     if user_form.is_valid() and profile_form.is_valid():
         try:
             with transaction.atomic():
                 if not errors:     
                     user = user_form.save(commit=False);
                     if not instance:
                         user.set_password(user.password)
                     user.save()
                     profile_form = UserProfileForm(request.POST, instance=user.profile)
                     profile_form.save()
                     return redirect('profile:user_list')
         except Exception as e:
             log_error()
             errors['errors'] = "Error %s" % e
     data = {'user_form': user_form, 'profile_form': profile_form, 'coop_form': coop_form}
     data.update(errors)
     return render(request, self.template_name, data)
예제 #4
0
def user_profile(request):
    if request.method == 'POST':
        form = UserProfileForm(request.POST, instance=request.user.profile)
        form.save()
    else:
        # user:request.user
        # profile =user.profile
        form = UserProfileForm(instance=request.user.profile)

    args = {}
    args.update(csrf(request))
    args['form'] = form
    return render_to_response('user.html', args)
예제 #5
0
def user_profile(request):
    args = {}
    if request.method == 'POST':
        form = UserProfileForm(request.POST, instance=request.user.profile)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/loggedin')
        else:
            user = request.user
            profile = user.profile
            form = UserProfileForm(instance=profile)

        args.update(csrf(request))
        args['form'] = form
        return render_to_response('body/profile.html', args)
예제 #6
0
    def post(self, request, *arg, **kwargs):
        pk = self.kwargs.get('pk')
        agrodealer = self.kwargs.get('agrodealer')
        instance = None
        errors = dict()

        if pk:
            instance = User.objects.filter(pk=pk)
            if instance.exists():
                instance = instance[0]
                profile = instance.profile
                if hasattr(instance, 'cooperative_admin'):
                    coop_admin = instance.cooperative_admin
        user_form = UserForm(request.POST, instance=instance)
        profile_form = UserProfileForm(request.POST, instance=instance)

        if user_form.is_valid() and profile_form.is_valid():
            try:
                with transaction.atomic():
                    if not errors:
                        user = user_form.save(commit=False)
                        if not instance:
                            user.set_password(user.password)
                        user.save()
                        profile_form = UserProfileForm(request.POST,
                                                       instance=user.profile)
                        profile_form.save(commit=False)
                        profile_form.access_level = get_object_or_404(
                            AccessLevel, name='AGRODEALER')
                        profile_form.save()

                        inst_s = AgroDealer.objects.get(pk=agrodealer)
                        AgroDealerUser.objects.create(
                            agrodealer=inst_s,
                            user=user,
                        )
                        return redirect('agrodealer:agrodealer_user',
                                        agrodealer=agrodealer)
            except Exception as e:
                log_error()
                errors['errors'] = "Error %s" % e
        data = {
            'user_form': user_form,
            'profile_form': profile_form,
            'active': ['_agrodealer']
        }
        data.update(errors)
        return render(request, self.template_name, data)
예제 #7
0
def user_profile(request):
    user = request.user
    profile = user.profile
    # TODO: delete avatar pic after user update
    if request.method == "POST":
        form = UserProfileForm(
            request.POST,
            request.FILES,
            instance=profile,
        )
        if form.is_valid():
            form.save()
            return HttpResponseRedirect('/accounts/profile/')
    else:
        form = UserProfileForm(instance=profile)

    context = {}
    context.update(csrf(request))
    context['form'] = form
    context['profile'] = profile
    return render(request, 'userprofile/profile.html', context)
예제 #8
0
def edit(request):
    if request.method == 'POST':  # If the form has been submitted...
        form = UserProfileForm(request.POST)  # A form bound to the POST data

        if form.is_valid():
            userprofile = UserProfile()
            userprofile.user = request.user
            userprofile.firstname = form.cleaned_data['firstname']
            userprofile.lastname = form.cleaned_data['lastname']
            userprofile.number = form.cleaned_data['number']
            userprofile.serie = form.cleaned_data['serie']
            userprofile.sexe = form.cleaned_data['sexe']
            userprofile.phoneNumber = form.cleaned_data['phoneNumber']

            userprofile.save()
            return redirect('userprofile.views.display')  # Redirect after POST
        else:
            return render(request, 'userprofile/userprofile_edit.html', {
                'form': form,
            })
    else:
        try:
            userprofile = UserProfile.objects.get(pk=request.user)
            form = UserProfileForm({
                'firstname': userprofile.firstname,
                'lastname': userprofile.lastname,
                'number': userprofile.number,
                'serie': userprofile.serie,
                'sexe': userprofile.sexe,
                'phoneNumber': userprofile.phoneNumber,
            })
        except Exception as ex:
            print ex
            form = UserProfileForm()

        return render(request, 'userprofile/userprofile_edit.html', {
            'form': form,
        })
예제 #9
0
def userprofile(request):
    # update user profile submit
    if request.method == 'POST':
        user_form = UserForm(request.POST, instance=request.user)
        user_profile = UserProfileForm(request.POST, request.FILES, instance=request.user.profile)
        if user_form.is_valid() and user_profile.is_valid():
            user_form.save()
            user_profile.save()
            return HttpResponseRedirect(reverse('profile:user'))
    else:
        # shows form with user profile's details
        user_form = UserForm(instance=request.user,
            initial={
                'first_name': request.user.first_name,
                'last_name': request.user.last_name,
                'email': request.user.email,
            })
        user = request.user
        profile = user.profile
        user_profile = UserProfileForm(instance=profile)
    

    return render(request, 'userprofile/profile.html', {'user_form': user_form, 'user_profile': user_profile})
예제 #10
0
    def get(self, request, *arg, **kwarg):
        pk = self.kwargs.get('pk')
        instance = None
        profile = None
        coop_admin = None
        if pk:
            user = User.objects.get(pk=pk)
            if user:
                instance = user
                profile = instance.profile
                if hasattr(instance, 'cooperative_admin'):
                    coop_admin = instance.cooperative_admin
                
        user_form = UserForm(instance=instance)
        profile_form = UserProfileForm(instance=profile)

        data = {'user_form': user_form, 'profile_form': profile_form}
        return render(request, self.template_name, data)
예제 #11
0
def checkout_completed(request, order_number):
    """
    Handle successful checkouts
    """
    save_info = request.session.get('save_info')
    order = get_object_or_404(Order, order_number=order_number)

    if request.user.is_authenticated:
        userprofile = UserProfile.objects.get(user=request.user)
        # Attach the user's profile to the order
        order.user_profile = userprofile
        order.save()

        # Save the user's info
        if save_info:
            userprofile_data = {
                'default_phone_number': order.phone_number,
                'default_country': order.country,
                'default_postcode': order.postcode,
                'default_town_or_city': order.town_or_city,
                'default_street_address1': order.street_address1,
                'default_street_address2': order.street_address2,
                'default_county': order.county,
            }
            user_profile_form = UserProfileForm(userprofile_data,
                                                instance=userprofile)
            if user_profile_form.is_valid():
                user_profile_form.save()

    messages.success(
        request, f'Order successfully processed! \
        Your order number is {order_number}. A confirmation \
        email will be sent to {order.email}.')

    if 'shoppingbag' in request.session:
        del request.session['shoppingbag']

    template = 'checkoutitems/checkout_completed.html'
    context = {
        'order': order,
    }

    return render(request, template, context)
예제 #12
0
def register(request):

    # create flag for successful registration
    registered = False

    # if submitted, process form
    if request.method == 'POST':

        # grab information from forms
        user_form = UserForm(data=request.POST)
        profile_form = UserProfileForm(data=request.POST)
        payment_form = PaymentForm(data=request.POST)

        # if those are valid, continue
        if user_form.is_valid() and profile_form.is_valid(
        ) and payment_form.is_valid():

            # save user form to database
            user = user_form.save()

            # hash password and send to user object
            user.set_password(user.password)

            # save user
            user.save()

            # prepare userprofile form
            profile = profile_form.save(commit=False)

            # connect userprofile with user
            profile.user = user

            # if profile picture provided, save it
            if 'picture' in request.FILES:
                profile.picture = request.FILES['picture']

            # save userprofile
            profile.save()

            # Do same thing for payment as profile
            payment = payment_form.save(commit=False)
            payment.user = user
            payment.save()

            # flag successful registration
            registered = True

        # else forms invalid, print errors
        else:
            print(user_form.errors, profile_form.errors)

    # else show the registration form
    else:
        user_form = UserForm()
        profile_form = UserProfileForm()
        payment_form = PaymentForm()

    # Render the template depending on the context.
    return render(
        request, 'userprofile/register.html', {
            'user_form': user_form,
            'profile_form': profile_form,
            'payment_form': payment_form,
            'registered': registered
        })