def get_context_data(self, **kwargs) -> dict: context = super().get_context_data(**kwargs) return { **context, 'next_url': next_url_if_safe(self.request), # todo: tutor_module & fee logic could be better and refactored to the models 'tutor_module': self.object.tutor_modules.filter(is_teaching=True).first(), 'fee': self.object.fees.filter(type=FeeTypes.PROGRAMME).first(), }
def post(self, request: http.HttpRequest, allocation: int, *args, **kwargs) -> http.HttpResponse: ledger_items = models.Ledger.objects.filter(allocation=allocation) if not ledger_items.exists(): raise http.Http404 if not ledger_items[0].user_can_delete(user=request.user): # Check permission to delete against one of the items (they will all have the same timestamp info) raise PermissionDenied( "You don't have permission to delete this transaction") # dump the logging data before deletion data = [item.__dict__ for item in ledger_items] ledger_items.delete() # todo: consider a better form of logging this mail.send_mail( subject='Deleted ledger rows', from_email=settings.SUPPORT_EMAIL, recipient_list=[settings.SUPPORT_EMAIL], message= f'User {request.user.username} deleted rows with the following data: {data}', ) messages.success(request, 'Transaction deleted') return redirect(next_url_if_safe(request) or '')
def get_success_url(self) -> str: messages.success( self.request, f'{self.object.module} removed from {self.object.programme}') return next_url_if_safe(self.request) or self.object.get_absolute_url()
def get_success_url(self) -> str: return next_url_if_safe( self.request) or self.enrolment.get_absolute_url()
def get_success_url(self): return next_url_if_safe( self.request) or '/' # todo: where should this go if no next?
def get_success_url(self): return next_url_if_safe( self.request) or self.invoice.get_absolute_url()
def post(self, request, pk, *args, **kwargs): amendment = get_object_or_404(models.Amendment, pk=pk) services.apply_online_refund(amendment=amendment, user=request.user) messages.success(request, 'Refund applied') return redirect(next_url_if_safe(request) or amendment.enrolment.get_absolute_url() + '#finances')
def get_success_url(self) -> str: return next_url_if_safe( self.request ) or self.object.tutor_module.get_absolute_url() + '#payments'
def on_failure(self, request, *args, **kwargs) -> http.HttpResponse: if 'next' in request.GET: return redirect(next_url_if_safe(request)) return super().on_failure(request, *args, **kwargs)
def get_success_url(self) -> str: return next_url_if_safe(self.request) or self.module.get_absolute_url()