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)
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())
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())
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')
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())
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())
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)
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)
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)
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')
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())
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())
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())
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())
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())
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())
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')
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())
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)