def get(request, slug, id_): # pylint: disable=unused-argument """View responsible for showing join form for particular offer.""" if request.user.is_authenticated(): has_applied = Offer.objects.filter( volunteers=request.user, volunteers__offer=id_, ).count() if has_applied: messages.error( request, "Już wyraziłeś chęć uczestnictwa w tej ofercie.") return redirect('offers_list') offer = Offer.objects.get(id=id_) try: main_image = OfferImage.objects.get(offer=offer, is_main=True) except OfferImage.DoesNotExist: main_image = '' context = { 'form': OfferApplyForm(), 'offer': offer, 'MEDIA_URL': settings.MEDIA_URL, 'main_image': main_image, } context['volunteer_user'] = UserProfile() if request.user.is_authenticated(): context['volunteer_user'] = request.user.userprofile return render(request, 'offers/offer_apply.html', context)
def post(request, slug, id_): # pylint: disable=unused-argument """View responsible for saving join for particular offer.""" form = OfferApplyForm(request.POST) offer = Offer.objects.get(id=id_) if form.is_valid(): if request.user.is_authenticated(): user = request.user else: user = User.objects.filter( email=request.POST.get('email')).exists() if user: messages.info(request, "Zaloguj się, aby zapisać się do oferty.") return redirect('{login}?next={path}'.format( login=reverse('login'), path=request.path)) messages.info(request, "Zarejestruj się, aby zapisać się do oferty.") return redirect('register') has_applied = Offer.objects.filter( volunteers=user, volunteers__offer=id_, ).count() if has_applied: messages.error( request, "Już wyraziłeś chęć uczestnictwa w tej ofercie.") return redirect('offers_list') offer.volunteers.add(user) offer.save() send_mail( request, 'offer_application', [ userprofile.user.email for userprofile in offer.organization.userprofiles.all() ], dict( email=request.POST.get('email'), phone_no=request.POST.get('phone_no'), fullname=request.POST.get('fullname'), comments=request.POST.get('comments'), offer=offer, )) messages.success(request, "Zgłoszenie chęci uczestnictwa zostało wysłane.") return redirect( 'offers_view', slug=slugify(offer.title), id_=offer.id, ) else: errors = "<br />".join(form.errors) messages.error(request, "Formularz zawiera nieprawidłowe dane" + errors) volunteer_user = UserProfile() if request.user.is_authenticated(): volunteer_user = request.user.userprofile return render(request, 'offers/offer_apply.html', { 'offer': offer, 'form': form, 'volunteer_user': volunteer_user, })
def post(request, slug, id_): # pylint: disable=unused-argument """View responsible for saving join for particular offer.""" form = OfferApplyForm(request.POST) offer = Offer.objects.get(id=id_) if form.is_valid(): if request.user.is_authenticated(): user = request.user else: user = User.objects.filter( email=request.POST.get('email') ).exists() if user: messages.info( request, 'Zaloguj się, aby zapisać się do oferty.' ) return redirect( reverse('login') + '?next={}'.format(request.path) ) else: messages.info( request, 'Zarejestruj się, aby zapisać się do oferty.' ) return redirect('register') has_applied = Offer.objects.filter( volunteers=user, volunteers__offer=id_, ).count() if has_applied: messages.error( request, u'Już wyraziłeś chęć uczestnictwa w tej ofercie.' ) return redirect('offers_list') offer.volunteers.add(user) offer.save() send_mail( request, 'offer_application', [ user.email, request.POST.get('email'), ], dict( email=request.POST.get('email'), phone_no=request.POST.get('phone_no'), fullname=request.POST.get('fullname'), comments=request.POST.get('comments'), offer=offer, ) ) messages.success( request, u'Zgłoszenie chęci uczestnictwa zostało wysłane.' ) return redirect( 'offers_view', slug=slugify(offer.title), id_=offer.id, ) else: errors = '<br />'.join(form.errors) messages.error( request, u'Formularz zawiera nieprawidłowe dane' + errors ) volunteer_user = UserProfile() if request.user.is_authenticated(): volunteer_user = request.user.userprofile return render( request, 'offers/offer_apply.html', { 'offer': offer, 'form': form, 'volunteer_user': volunteer_user, } )
def post(request, slug, id_): # pylint: disable=unused-argument u"""View responsible for saving join for particular offer.""" form = OfferApplyForm(request.POST) offer = Offer.objects.get(id=id_) if form.is_valid(): if request.user.is_authenticated(): user = request.user else: try: user = User.objects.create_user( username=request.POST.get('email'), email=request.POST.get('email'), password=User.objects.make_random_password(), ) profile = UserProfile(user=user) profile.save() except IntegrityError: messages.info( request, u'Użytkownik o podanym emailu już istnieje.' u' Zaloguj się.') return render( request, 'offers/offer_apply.html', { 'offer': offer, 'form': form, 'volunteer_user': UserProfile(), }) has_applied = Offer.objects.filter( volunteers=user, volunteers__offer=id_, ).count() if has_applied: messages.error( request, u'Już wyraziłeś chęć uczestnictwa w tej ofercie.') return redirect('offers_list') offer_content_type = ContentType.objects.get(app_label='volontulo', model='offer') offer.volunteers.add(user) UserBadges.apply_participant_badge( offer_content_type, user.userprofile, ) offer.save() send_mail( request, 'offer_application', [ user.email, request.POST.get('email'), ], dict( email=request.POST.get('email'), phone_no=request.POST.get('phone_no'), fullname=request.POST.get('fullname'), comments=request.POST.get('comments'), offer=offer, )) messages.success( request, u'Zgłoszenie chęci uczestnictwa zostało wysłane.') return redirect( 'offers_view', slug=slugify(offer.title), id_=offer.id, ) else: errors = '<br />'.join(form.errors) messages.error(request, u'Formularz zawiera nieprawidłowe dane' + errors) volunteer_user = UserProfile() if request.user.is_authenticated(): volunteer_user = request.user.userprofile return render(request, 'offers/offer_apply.html', { 'offer': offer, 'form': form, 'volunteer_user': volunteer_user, })