コード例 #1
0
    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)
コード例 #2
0
    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,
            })
コード例 #3
0
ファイル: offers.py プロジェクト: krzysztofzuraw/volontulo
    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,
                }
            )
コード例 #4
0
    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,
            })