Example #1
0
File: views.py Project: DSIW/sdf
def accept_counteroffer(request, id):
    counteroffer = get_object_or_404(Counteroffer, id=id)
    buyer = get_object_or_404(User, id=counteroffer.creator.id)
    offer = get_object_or_404(Offer, id=counteroffer.offer.id)
    book = get_object_or_404(Book, id=offer.book.id)

    counteroffer.accept()

    # Erstelle Paypalpayment, sodass für das Buch keine Vorschläge mehr abgegeben werden können
    payment = book.active_payment()
    if payment is None:
        payment = Payment()
    success = start_payment(payment, offer, buyer, 'counteroffer')
    if success:
        payment.amount = counteroffer.price
        payment.save()

        # hide book
        offer.active = False
        offer.save()

        Notification.counteroffer_accept(counteroffer, buyer, book, payment)
        messages.add_message(request, messages.SUCCESS, 'Der Preisvorschlag wurde erfolgreich angenommen. Der Interessent wird benachrichtigt')

    return HttpResponseRedirect(reverse('app_notification:notificationsPage'))
Example #2
0
File: services.py Project: DSIW/sdf
def abort_payment(payment, notification = False):
    if payment.is_active() and not payment.is_cancelled():
        payment.payment_status = ST_PP_CANCELLED
        payment.save()
        if notification:
            Notification.abort_unpaid_payment(payment)
        return True
    return False
Example #3
0
File: views.py Project: DSIW/sdf
def toggleDisabledState(request, user_id):
    if request.method == 'POST' and request.user.is_superuser:
        user = User.objects.filter(id=user_id).first()
        disabled = user.showcaseDisabled
        user.showcaseDisabled = not disabled
        user.save()
        Notification.bann_unbann_user(request.user.id, user_id, not disabled)
        return JsonResponse({'state': not disabled})
    return JsonResponse({'error': True})
Example #4
0
File: views.py Project: DSIW/sdf
def decline_counteroffer(request, id):
    counteroffer = get_object_or_404(Counteroffer, id=id)
    buyer = get_object_or_404(User, id=counteroffer.creator.id)
    offer = get_object_or_404(Offer, id=counteroffer.offer.id)
    book = get_object_or_404(Book, id=offer.book.id)

    # Akzeptiere nicht
    Notification.counteroffer_decline(counteroffer, buyer, book)
    counteroffer.decline()
    messages.add_message(request, messages.SUCCESS,
                         'Der Preisvorschlag wurde erfolgreich abgelehnt. Der Interessent wird benachrichtigt')

    return HttpResponseRedirect(reverse('app_notification:notificationsPage'))
Example #5
0
File: views.py Project: DSIW/sdf
def user_update(request, pk):
    user = User.objects.filter(id=pk).first()
    data = {
            'username': user.username,
            'first_name': user.first_name,
            'last_name': user.last_name,
            'email': user.email,
            'location': user.location,
            'paypal' : user.paypal
        }

    changeUserDataTmp = ChangeUserData.objects.filter(user_id=user.id).first()
    if changeUserDataTmp is not None:
        if request.method == "DELETE":
            changeUserDataTmp.delete()
            messages.add_message(request, messages.SUCCESS, "Ihr Antrag wurde gelöscht")
            return HttpResponseRedirect(reverse('app_user:edit_profile', kwargs={'pk':request.user.id}))
        else:
            return render_to_response('app_user/user_update_error.html',{}, RequestContext(request))

    if request.method == "POST":
        form = CustomUpdateForm(request.POST, initial=data)

        if not form.has_changed():
            messages.add_message(request, messages.ERROR,
                     "Es wurde keine Daten geändert")
            return render_to_response('app_user/user_update_form.html', {'form': form}, RequestContext(request))
        if form.is_valid():
            form.user = user
            if form.cleaned_data["delete_account"]:
                user.is_active = False;
                user.showcaseDisabled = True;
                user.save();
                Notification.request_remove_userprofile_administrator(user.id)
                messages.add_message(request, messages.SUCCESS,
                     "Ihr Antrag wurde erfolgreich versendet und wird in Kürze von einem Moderator bearbeitet. Ihr Profil ist ab sofort deaktiviert und wird nach der Bestätigung des Admins gelöscht")
                return HttpResponseRedirect(reverse('app_user:logout')+'?next=/')

            else:
                changeUserData = form.save(commit=False)
                changeUserData.user_id = user.id
                changeUserData.save()
                Notification.request_change_userprofile_administrator(user.id, changeUserData)
                messages.add_message(request, messages.SUCCESS,
                         "Ihr Antrag wurde erfolgreich versendet und wird in Kürze von einem Moderator bearbeitet. Sie erhalten anschließend eine Benachrichtigung")
                return HttpResponseRedirect(reverse('app_user:user-details', kwargs={'pk':request.user.id}))
    else:
        form = CustomUpdateForm(data, initial=data)
    return render_to_response('app_user/user_update_form.html', {'form': form}, RequestContext(request))
Example #6
0
File: views.py Project: DSIW/sdf
def change_user_profile(request, change_user_data_id, accepted):
    change_user_data = get_object_or_404(ChangeUserData, id=change_user_data_id)
    user = change_user_data.user

    if(accepted):
        user.first_name = change_user_data.first_name
        user.username = change_user_data.username
        user.last_name = change_user_data.last_name
        user.email = change_user_data.email
        user.location = change_user_data.location
        user.paypal = change_user_data.paypal

        user.save()

    change_user_data.delete()
    Notification.request_change_userprofile_customer(request.user.id, user.id, accepted)
Example #7
0
File: services.py Project: DSIW/sdf
def complete_payment(payment):
    if payment.is_active() and not payment.is_completed():
        # remove book payment status
        payment.payment_status = ST_PP_COMPLETED
        payment.save()

        # move book to buyer
        book = payment.book
        change_ownership(book.id, payment.buyer_user.id)



        Notification.fastbuy(payment.buyer_user, payment.seller_user, payment.book)
        Notification.request_rating(payment)
        return True
    return False
Example #8
0
File: views.py Project: DSIW/sdf
def counteroffer(request, id):
    offer = get_object_or_404(Offer, id=id)
    user = get_object_or_404(User, id=request.user.id)
    book = get_object_or_404(Book, id=offer.book.id)

    if user.id == offer.seller_user.id:
        messages.add_message(request, messages.ERROR, 'Sie können sich nicht selbst Preisvorschläge machen!')
        return HttpResponseRedirect(reverse('app_book:book-detail', kwargs = {'id': book.id}))

    if not offer.allow_counteroffers:
        messages.add_message(request, messages.ERROR, 'Der Verkäufer erlaubt keine Preisvorschläge!')
        return HttpResponseRedirect(reverse('app_book:book-detail', kwargs = {'id': book.id}))

    counter_offer = Counteroffer(offer=offer, creator=user, price=offer.totalPrice(), active=True, accepted=False)
    offer_form = CounterofferForm(instance=counter_offer)
    if request.method == 'GET':
        return render_to_response('app_book/_counteroffer_form.html', {
            "form": offer_form,
            "offer": offer,
            "book": book,
        }, RequestContext(request))
    if request.method == 'POST':
        offer_form = CounterofferForm(request.POST, instance=counter_offer)
        if offer_form.is_valid():
            counter_offer = offer_form.save(commit=False)
            counter_offer.save()
            messages.add_message(request, messages.SUCCESS,
                    'Der Preisvorschlag wurde abgegeben. Sie werden benachrichtigt, sobald der Verkäufer antwortet')
            offer.counteroffer_set.add(counter_offer);
            offer.save()

            seller = get_object_or_404(User, id=offer.seller_user.id)
            Notification.counteroffer(counter_offer, seller, user, book)
        else:
            return render_to_response('app_book/_counteroffer_form.html', {
                "form": offer_form,
                "offer": offer,
                "book": book,
            }, RequestContext(request))
    else:
        raise ("Use http method POST for making a counteroffer")

    return HttpResponseRedirect(reverse('app_book:book-detail', kwargs = {'id': book.id}))
Example #9
0
File: views.py Project: DSIW/sdf
def unpublishBook(request, id):
    book = get_object_or_404(Book, id=id)

    if book.is_in_active_payment_process():
        messages.add_message(request, messages.ERROR, 'Das Buch wird gerade verkauft und kann daher nicht unveröffentlicht werden!')
        return HttpResponseRedirect(reverse('app_book:book-detail', kwargs={'id': id}))

    if request.method == 'PUT':
        unpublish_book(book)
        messages.add_message(request, messages.SUCCESS, 'Das Buch wird nun nicht mehr zum Verkauf angeboten!')
        # decline all active counteroffers:
        user = get_object_or_404(User, id=request.user.id)
        offer = book.offer_set.filter(seller_user = user).first()
        counteroffers = Counteroffer.objects.filter(offer=offer, active=True)
        for co in counteroffers:
            Notification.counteroffer_decline(co, co.creator, book)
        # use GET request for redirected location via HTTP status code 303 (see other).

        counteroffers.update(active=False, accepted=False)
        return HttpResponseRedirect(reverse('app_book:book-detail', kwargs={'id': id}))
    else:
        raise ("Use http method PUT for unpublishing a book.")
Example #10
0
File: services.py Project: DSIW/sdf
def decline_all_counteroffers_for_offer(offer):
    counteroffers = Counteroffer.objects.filter(offer=offer, active=True, accepted=False)
    for co in counteroffers:
        co.decline()
        Notification.counteroffer_decline(co, co.creator, offer.book)