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'))
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
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})
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'))
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))
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)
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
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}))
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.")
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)