Beispiel #1
0
 def dispatch(self, *args, **kwargs):
     if not is_in_branch(self.request.user, self.get_object().branch):
         return refuse(self.request)
     if not self.request.user.is_superuser and self.request.user in self.get_object(
     ).receiver.ignore_list.all():
         return refuse(self.request)
     return super(DetailDemandView, self).dispatch(*args, **kwargs)
Beispiel #2
0
def branch_ban(request, branch_id, user_id):
    """ Ban an user form the branch id """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if can_manage(user, request.user):
        try:
            to_remove = BranchMembers.objects.get(branch=branch_id, user=user_id)
            to_remove.delete()
            branch.banned.add(to_remove.user)
        except:
            pass

        subject = _('Bannissement de la branche {branch}').format(branch=branch.name)
        body = _('Vous avez été banni de la branche {branch}. Vous ne pouvez à présent plus rejoindre cette branche. Pour plus d\'informations, contactez un adminstrateur ou l\'officier en charge de la branche en question').format(branch=branch.name)
        pm_write(request.user, user, subject, body)
        messages.add_message(request, messages.INFO, _('{user} a été banni de la branche {branch}').format(branch=branch, user=user))

        Offer.objects.filter(branch=branch, donor=user).delete()
        Demand.objects.filter(branch=branch, receiver=user, success=None, closed=False).delete()

    else :
        return refuse(request)

    return redirect(branch.get_absolute_url())
Beispiel #3
0
def verified_display_view(request, user_id):
    """show verified informations on user selected"""
    user_to_display = get_object_or_404(User, pk=user_id)
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    if not can_manage(user_to_display, request.user) or user_to_display.id == request.user.id:
        return refuse(request)
    return render(request, 'verified/verified_display.html', locals())
Beispiel #4
0
def branch_leave(request, branch_id, user_id):
    """ Leave a branch """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if can_manage(user, request.user) and user.id != branch.creator:
        try:
            to_remove = BranchMembers.objects.get(branch=branch_id,
                                                  user=user_id)
            to_remove.delete()
            Demand.objects.filter(branch=branch,
                                  receiver=user,
                                  success=None,
                                  closed=False).delete()
            Offer.objects.filter(branch=branch, donor=user).delete()
            messages.add_message(
                request, messages.INFO,
                _('Vous avez quitté la branche {branch}').format(
                    branch=branch))
        except:
            pass
    else:
        return refuse(request)

    return redirect('home')
Beispiel #5
0
def branch_ban(request, branch_id, user_id):
    """ Ban an user form the branch id """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if can_manage(user, request.user):
        try:
            to_remove = BranchMembers.objects.get(branch=branch_id,
                                                  user=user_id)
            to_remove.delete()
            branch.banned.add(to_remove.user)
        except:
            pass

        subject = _('Bannissement de la branche {branch}').format(
            branch=branch.name)
        body = _(
            'Vous avez été banni de la branche {branch}. Vous ne pouvez à présent plus rejoindre cette branche. Pour plus d\'informations, contactez un adminstrateur ou l\'officier en charge de la branche en question'
        ).format(branch=branch.name)
        pm_write(request.user, user, subject, body)
        messages.add_message(
            request, messages.INFO,
            _('{user} a été banni de la branche {branch}').format(
                branch=branch, user=user))

        Offer.objects.filter(branch=branch, donor=user).delete()
        Demand.objects.filter(branch=branch,
                              receiver=user,
                              success=None,
                              closed=False).delete()

    else:
        return refuse(request)

    return redirect(branch.get_absolute_url())
Beispiel #6
0
def verified_display_view(request, user_id):
    """show verified informations on user selected"""
    user_to_display = get_object_or_404(User, pk=user_id)
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    if not can_manage(user_to_display,
                      request.user) or user_to_display.id == request.user.id:
        return refuse(request)
    return render(request, 'verified/verified_display.html', locals())
Beispiel #7
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)
Beispiel #8
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)
Beispiel #9
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)
Beispiel #10
0
def branch_delete(request, branch_id):
    """ Delete a branch """
    branch = get_object_or_404(Branch, pk=branch_id)

    if request.user == branch.creator or request.user.is_superuser:
        try:
            branch.delete()
            messages.add_message(request, messages.INFO, _('Vous avez supprimé la branche {branch}').format(branch=branch))
        except:
            pass
    else:
        return refuse(request)
    return redirect('home')
Beispiel #11
0
def verified_status_refuse_view(request, user_id):
    """Refuse verified status to user with user_id, send a specific message and remove verified demand"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = False
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _("Le status de membre vérifié vous a été refusé. Pour plus d'informations, contactez l'officier responsable de votre branche.")
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO, _('Droit refusé et demande supprimée'))
    return redirect(user.get_absolute_url())
Beispiel #12
0
def verified_status_giving_view(request, user_id):
    """Give verified status to user with user_id and send a message"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = True
    user.user_type = MemberType.VERIFIED_MEMBER
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _("Le status de membre vérifié vous a été accordé ! Félicitations.")
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO, _('Droit accordé'))
    return redirect(user.get_absolute_url())
Beispiel #13
0
def verified_status_giving_view(request, user_id):
    """Give verified status to user with user_id and send a message"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = True
    user.user_type = MemberType.VERIFIED_MEMBER
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _("Le status de membre vérifié vous a été accordé ! Félicitations.")
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO, _('Droit accordé'))
    return redirect(user.get_absolute_url())
Beispiel #14
0
def branch_home(request, branch_id, slug):
    """ Display branch id information """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = request.user

    bm = BranchMembers.objects.filter(branch=branch, user=user)
    is_in = bm.count()

    if is_in == 0 and not user.is_superuser:
        return refuse(request)

    if user.is_superuser:
        is_branch_admin = True
        # if superUser is not already in the branch, add him
        try:
            BranchMembers.objects.get(branch=branch, user=user)
        except BranchMembers.DoesNotExist:
            bm = BranchMembers(branch=branch,
                               user=user,
                               is_admin=True,
                               joined=timezone.now())
            bm.save()
    else:
        is_branch_admin = bm.first().is_admin

    nb_users = BranchMembers.objects.filter(branch=branch).count()

    user_ids = [mb.user.id for mb in branch.membership.all()]

    if is_branch_admin:
        vdemands = VerifiedInformation.objects.filter(user__in=user_ids)
        all_usernames = ':'.join([
            b.user.username
            for b in BranchMembers.objects.filter(branch=branch)
        ])

    demands = Demand.objects.filter(receiver__in=user_ids, branch=branch)
    offers = Offer.objects.filter(donor__in=user_ids, branch=branch)

    date_now = timezone.now() + timezone.timedelta(hours=-24)

    demands = demands.up_to_date()
    offers = offers.up_to_date()

    demands = discriminate_demands(request, demands)
    offers = discriminate_offers(request, offers)

    return render(request, 'branch/branch_home.html', locals())
Beispiel #15
0
def branch_demote(request, branch_id, user_id):
    """ Demote the user_id on branch_id """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if is_branch_admin(request.user, branch) or request.user.is_superuser:
        try:
            to_demote = BranchMembers.objects.get(branch=branch_id, user=user_id)
            to_demote.is_admin = False
            to_demote.save()
            messages.add_message(request, messages.INFO, _('{user} n\'est plus administrateur de la branche {branch}').format(branch=branch, user=user))
        except:
            pass
    else :
        return refuse(request)
    return redirect(branch.get_absolute_url())
Beispiel #16
0
def verified_status_refuse_view(request, user_id):
    """Refuse verified status to user with user_id, send a specific message and remove verified demand"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = False
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _(
        "Le status de membre vérifié vous a été refusé. Pour plus d'informations, contactez l'officier responsable de votre branche."
    )
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO,
                         _('Droit refusé et demande supprimée'))
    return redirect(user.get_absolute_url())
Beispiel #17
0
def branch_leave(request, branch_id, user_id):
    """ Leave a branch """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if can_manage(user, request.user) and user.id != branch.creator :
        try:
            to_remove = BranchMembers.objects.get(branch=branch_id, user=user_id)
            to_remove.delete()
            Demand.objects.filter(branch=branch, receiver=user, success=None, closed=False).delete()
            Offer.objects.filter(branch=branch, donor=user).delete()
            messages.add_message(request, messages.INFO, _('Vous avez quitté la branche {branch}').format(branch=branch))
        except:
            pass
    else :
        return refuse(request)

    return redirect('home')
Beispiel #18
0
def branch_home(request, branch_id, slug):
    """ Display branch id information """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = request.user

    bm = BranchMembers.objects.filter(branch=branch, user=user)
    is_in = bm.count()

    if is_in == 0 and not user.is_superuser:
        return refuse(request)


    if user.is_superuser:
        is_branch_admin = True
        # if superUser is not already in the branch, add him
        try:
            BranchMembers.objects.get(branch=branch, user=user)
        except BranchMembers.DoesNotExist:
            bm = BranchMembers(branch=branch, user=user, is_admin=True, joined=timezone.now())
            bm.save()
    else:
        is_branch_admin = bm.first().is_admin

    nb_users = BranchMembers.objects.filter(branch=branch).count()

    user_ids = [mb.user.id for mb in branch.membership.all()]

    if is_branch_admin:
        vdemands = VerifiedInformation.objects.filter(user__in=user_ids)
        all_usernames = ':'.join([b.user.username for b in BranchMembers.objects.filter(branch=branch)])

    demands = Demand.objects.filter(receiver__in=user_ids, branch=branch)
    offers = Offer.objects.filter(donor__in=user_ids, branch=branch)

    date_now = timezone.now() + timezone.timedelta(hours=-24)

    demands = demands.up_to_date()
    offers = offers.up_to_date()

    demands = discriminate_demands(request, demands)
    offers = discriminate_offers(request, offers)

    return render(request,'branch/branch_home.html', locals())
Beispiel #19
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)
Beispiel #20
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)
Beispiel #21
0
 def dispatch(self, *args, **kwargs):
     if not is_in_branch(User.objects.get(pk=self.kwargs['user_id']),
         Branch.objects.get(pk=self.kwargs['branch_id'])):
         return refuse(self.request)
     return super(CreateOfferView, self).dispatch(*args, **kwargs)
Beispiel #22
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)
Beispiel #23
0
 def dispatch(self, *args, **kwargs):
     if not is_in_branch(self.request.user, self.get_object().branch):
         return refuse(self.request)
     return super(DetailOfferView, self).dispatch(*args, **kwargs)
Beispiel #24
0
 def dispatch(self, *args, **kwargs):
     if not is_in_branch(self.request.user, self.get_object().branch):
         return refuse(self.request)
     return super(DetailOfferView, self).dispatch(*args, **kwargs)
Beispiel #25
0
 def dispatch(self, *args, **kwargs):
     if not is_in_branch(User.objects.get(pk=self.kwargs['user_id']),
                         Branch.objects.get(pk=self.kwargs['branch_id'])):
         return refuse(self.request)
     return super(CreateOfferView, self).dispatch(*args, **kwargs)
Beispiel #26
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)
Beispiel #27
0
 def dispatch(self, *args, **kwargs):
     if not is_in_branch(self.request.user, self.get_object().branch):
         return refuse(self.request)
     if not self.request.user.is_superuser and self.request.user in self.get_object().receiver.ignore_list.all():
         return refuse(self.request)
     return super(DetailDemandView, self).dispatch(*args, **kwargs)
Beispiel #28
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)