Пример #1
0
 def get_context_data(self, **kwargs):
     context = super(DetailOfferView, self).get_context_data(**kwargs)
     obj = self.get_object()
     context['object'] = obj
     if can_manage_branch_specific(obj.donor, self.request.user, obj.branch):
         context['can_manage'] = True
     return context
Пример #2
0
def manage_success(request, success_demand_id):
    """ View for a job who has been completed """
    success = get_object_or_404(SuccessDemand, pk=success_demand_id)
    demand = success.demand

    form = CommentConfirmForm()

    if can_manage_branch_specific(success.ask_to, request.user,
                                  success.branch):
        if request.POST:
            form = CommentConfirmForm(request.POST)
            if form.is_valid():
                if 'accept' in request.POST:
                    if success.time > 100000:
                        success.time = 100000
                    if success.time < 0:
                        success.time = 0

                    demand.real_time = success.time
                    demand.success = True

                    demand.donor.credit += success.time
                    demand.donor.save()
                    demand.receiver.credit -= success.time
                    demand.receiver.save()

                    subject = _("Job confirmé")
                    body = _("L'utilisateur {user} ({username}) a confirmé que vous aviez accompli le job {job} avec succès ! Votre compte a donc été crédité de {time} minutes.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé le commentaire suivant : {comment}")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)
                    success.delete()
                    demand.save()

                    return redirect('home')
                if 'decline' in request.POST:
                    success.delete()
                    demand.success_fill = False
                    demand.save()

                    subject = _("Job refusé")
                    body = _("L'utilisateur {user} ({username}) a déclaré que vous n'aviez pas passé {time} minutes pour accomplir le job {job}. Votre compte n'a donc pas été crédité.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé un commentaire, expliquant pourquoi il n'a pas désiré créditer votre compte : {comment}\n"
                        "Vous pouvez recréer une demande de confirmation avec un nouveau montant de crédit correspondant plus à la perception du demandeur d'aide.\n"
                        "Si vous ne parvenez pas à trouver un terrain d'entente avec l'utilisateur {user} ({username}), vous pouvez contacter un administrateur pour régler le problème.")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)

                    return redirect('home')

        return render(request, 'job/manage_success.html', locals())

    else:
        return refuse(request)
Пример #3
0
def manage_success(request, success_demand_id):
    """ View for a job who has been completed """
    success = get_object_or_404(SuccessDemand, pk=success_demand_id)
    demand = success.demand

    form = CommentConfirmForm()

    if can_manage_branch_specific(success.ask_to, request.user, success.branch):
        if request.POST:
            form = CommentConfirmForm(request.POST)
            if form.is_valid():
                if 'accept' in request.POST:
                    if success.time > 100000:
                        success.time = 100000
                    if success.time < 0:
                        success.time = 0

                    demand.real_time =  success.time
                    demand.success = True


                    demand.donor.credit += success.time
                    demand.donor.save()
                    demand.receiver.credit -= success.time
                    demand.receiver.save()

                    subject = _("Job confirmé")
                    body = _("L'utilisateur {user} ({username}) a confirmé que vous aviez accompli le job {job} avec succès ! Votre compte a donc été crédité de {time} minutes.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé le commentaire suivant : {comment}")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)
                    success.delete()
                    demand.save()

                    return redirect('home')
                if 'decline' in request.POST:
                    success.delete()
                    demand.success_fill = False
                    demand.save()

                    subject = _("Job refusé")
                    body = _("L'utilisateur {user} ({username}) a déclaré que vous n'aviez pas passé {time} minutes pour accomplir le job {job}. Votre compte n'a donc pas été crédité.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé un commentaire, expliquant pourquoi il n'a pas désiré créditer votre compte : {comment}\n"
                        "Vous pouvez recréer une demande de confirmation avec un nouveau montant de crédit correspondant plus à la perception du demandeur d'aide.\n"
                        "Si vous ne parvenez pas à trouver un terrain d'entente avec l'utilisateur {user} ({username}), vous pouvez contacter un administrateur pour régler le problème.")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)

                    return redirect('home')

        return render(request,'job/manage_success.html', locals())

    else :
        return refuse(request)
Пример #4
0
 def get_context_data(self, **kwargs):
     context = super(DetailDemandView, self).get_context_data(**kwargs)
     obj = self.get_object()
     context['object'] = obj
     if self.request.user in obj.volunteers.all():
         context['already_volunteer'] = True
     if can_manage_branch_specific(obj.receiver, self.request.user, obj.branch):
         context['can_manage'] = True
     return context
Пример #5
0
def delete_offer(request, branch_id, slug, offer_id):
    """ Delete an offer """
    offer = get_object_or_404(Offer, pk=offer_id)

    if can_manage_branch_specific(offer.donor, request.user, offer.branch):
       offer.delete()
       messages.add_message(request, messages.INFO, _('Vous avez supprimé l\'offre {offer}').format(offer=offer))
       return redirect(offer.branch.get_absolute_url())
    return redirect('home')
Пример #6
0
def volunteer_decline(request, volunteer_id):
    """ Decline an help form the volunteer_id """
    demandProposition = DemandProposition.objects.get(pk=volunteer_id)
    demand = demandProposition.demand

    if can_manage_branch_specific(demand.receiver, request.user, demand.branch):
        demandProposition.delete()
        messages.add_message(request, messages.INFO, _('Vous avez refusé cette aide'))
        return redirect(demand.get_absolute_url())
    return redirect('home')
Пример #7
0
def delete_demand(request, branch_id, slug, demand_id):
    """ Delete a demand """
    demand = get_object_or_404(Demand, pk=demand_id)

    if can_manage_branch_specific(demand.receiver, request.user, demand.branch):
       demand.delete()
       messages.add_message(request, messages.INFO, _('Vous avez supprimé la demande {demand}').format(demand=demand))
       return redirect(demand.branch.get_absolute_url())
    else:
        return refuse(request)
Пример #8
0
def volunteer_accept(request, volunteer_id):
    """ Accept an help from the volunteer_id """
    demandProposition = DemandProposition.objects.get(pk=volunteer_id)
    demand = demandProposition.demand

    if can_manage_branch_specific(demand.receiver, request.user,
                                  demand.branch):
        demandProposition.accepted = True
        demandProposition.save()

        subject = _("Je vous ai choisi pour '") + demand.title + "'"
        body = _(
            " Je vous ai choisi pour effectuer le job '") + demand.title + "'"
        body += '\n\n' + _('Lieu : ') + demand.location
        body += '\n' + _('Date : ') + formats.date_format(
            demand.date, "DATE_FORMAT")
        body += '\n' + _('Heure(s) désirée(s) : ') + demand.get_verbose_time()
        body += '\n' + _('Description : ') + demand.description

        body += '\n'
        if demand.receiver.emergency_contacts.count() > 0:
            body += '\n' + _(
                'En cas d\'incident durant cette tâche, voici les personnes à contacter :'
            )
            for ec in demand.receiver.emergency_contacts.all():
                body += '\n' + _('Prénom :') + ' ' + ec.first_name
                body += '\n' + _('Nom :') + ' ' + ec.last_name
                body += '\n' + _('Téléphone fixe :') + ' ' + ec.phone_number
                body += '\n' + _('Téléphone mobile :') + ' ' + ec.mobile_number
                body += '\n' + _(
                    'Langues parlées :') + ' ' + ec.get_verbose_languages()
                body += '\n'

        body += '\n\n' + _(
            'N\'hésitez pas à me contacter pour de plus amples informations')
        body += '\n' + _('À bientôt,') + '\n'
        body += demand.receiver.first_name

        pm_write(demand.receiver, demandProposition.user, subject, body)

        for vol in DemandProposition.objects.filter(demand=demand,
                                                    accepted=False):
            vol.delete()

        demand.closed = True
        demand.km = demandProposition.km
        if not demand.km:
            demand.km = 0
        demand.donor = demandProposition.user
        demand.save()

        messages.add_message(request, messages.INFO,
                             _('Vous avez accepté cette aide !'))
        return redirect(demand.get_absolute_url())
    return redirect('home')
Пример #9
0
def volunteer_accept(request, volunteer_id):
    """ Accept an help from the volunteer_id """
    demandProposition = DemandProposition.objects.get(pk=volunteer_id)
    demand = demandProposition.demand

    if can_manage_branch_specific(demand.receiver, request.user, demand.branch):
        demandProposition.accepted = True
        demandProposition.save()

        subject = _("Je vous ai choisi pour '") + demand.title + "'"
        body = _(" Je vous ai choisi pour effectuer le job '") + demand.title + "'"
        body += '\n\n' + _('Lieu : ') + demand.location
        body += '\n' + _('Date : ') + formats.date_format(demand.date, "DATE_FORMAT")
        body += '\n' + _('Heure(s) désirée(s) : ') + demand.get_verbose_time()
        body += '\n' + _('Description : ') + demand.description

        body += '\n'
        if demand.receiver.emergency_contacts.count() > 0:
            body += '\n' + _('En cas d\'incident durant cette tâche, voici les personnes à contacter :')
            for ec in demand.receiver.emergency_contacts.all():
                body += '\n' + _('Prénom :') + ' ' + ec.first_name
                body += '\n' + _('Nom :') + ' ' + ec.last_name
                body += '\n' + _('Téléphone fixe :') + ' ' + ec.phone_number
                body += '\n' + _('Téléphone mobile :') + ' ' + ec.mobile_number
                body += '\n' + _('Langues parlées :') + ' ' + ec.get_verbose_languages()
                body += '\n'

        body += '\n\n' + _('N\'hésitez pas à me contacter pour de plus amples informations')
        body += '\n' + _('À bientôt,') + '\n'
        body += demand.receiver.first_name

        pm_write(demand.receiver, demandProposition.user, subject, body)

        for vol in DemandProposition.objects.filter(demand=demand, accepted=False):
            vol.delete()

        demand.closed = True
        demand.km = demandProposition.km
        if not demand.km:
            demand.km = 0
        demand.donor = demandProposition.user
        demand.save()

        messages.add_message(request, messages.INFO, _('Vous avez accepté cette aide !'))
        return redirect(demand.get_absolute_url())
    return redirect('home')
Пример #10
0
def unsuccess_job(request, demand_id):
    """ View for a job who has not been completed """
    demand = get_object_or_404(Demand, pk=demand_id)

    if can_manage_branch_specific(demand.donor, request.user, demand.branch):
       demand.success_fill=True
       demand.success=False
       demand.save()

       subject = _("Absence lors d'un job")
       body = _("L'utilisateur {user} ({username}) n'était apparemment pas présent pour accomplir le job {job}.\n"
        "S'il s'agit d'une erreur et que {user} ({username}) était bien présent, veuillez contacter un administrateur pour régler le problème.\n"
        "Si vous désirez ne plus demander d'aide à l'utilisateur {user} ({username}), vous pouvez l'ignorer en vous rendant sur son profil.")\
       .format(user=demand.donor.get_full_name(), job=demand.title, username=demand.donor)
       pm_write(demand.donor, demand.receiver, subject, body)

       messages.add_message(request, messages.INFO, _('Vous avez indiqué la tâche {demand} comme non-completée').format(demand=demand))
       return redirect('home')
    else:
        return refuse(request)
Пример #11
0
 def dispatch(self, *args, **kwargs):
     demand = Demand.objects.get(pk=self.kwargs['demand_id'])
     if not can_manage_branch_specific(demand.receiver, self.request.user,
                                       demand.branch):
         return refuse(self.request)
     return super(CreateVolunteerView, self).dispatch(*args, **kwargs)
Пример #12
0
 def dispatch(self, *args, **kwargs):
     obj = self.get_object()
     if not can_manage_branch_specific(obj.donor, self.request.user,
                                       obj.branch):
         return refuse(self.request)
     return super(UpdateOfferView, self).dispatch(*args, **kwargs)
Пример #13
0
 def dispatch(self, *args, **kwargs):
     demand = Demand.objects.get(pk=self.kwargs['demand_id'])
     if not can_manage_branch_specific(demand.receiver, self.request.user, demand.branch):
         return refuse(self.request)
     return super(CreateVolunteerView, self).dispatch(*args, **kwargs)
Пример #14
0
 def dispatch(self, *args, **kwargs):
     obj = self.get_object()
     if not can_manage_branch_specific(obj.donor, self.request.user, obj.branch):
         return refuse(self.request)
     return super(UpdateOfferView, self).dispatch(*args, **kwargs)