예제 #1
0
 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(),
     }
예제 #2
0
 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 '')
예제 #3
0
 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()
예제 #4
0
 def get_success_url(self) -> str:
     return next_url_if_safe(
         self.request) or self.enrolment.get_absolute_url()
예제 #5
0
 def get_success_url(self):
     return next_url_if_safe(
         self.request) or '/'  # todo: where should this go if no next?
예제 #6
0
 def get_success_url(self):
     return next_url_if_safe(
         self.request) or self.invoice.get_absolute_url()
예제 #7
0
 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')
예제 #8
0
 def get_success_url(self) -> str:
     return next_url_if_safe(
         self.request
     ) or self.object.tutor_module.get_absolute_url() + '#payments'
예제 #9
0
 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)
예제 #10
0
 def get_success_url(self) -> str:
     return next_url_if_safe(self.request) or self.module.get_absolute_url()