Exemplo n.º 1
0
    def add_comms_log(self, request, *args, **kwargs):
        try:
            with transaction.atomic():
                instance = self.get_object()
                request.data['approval'] = u'{}'.format(instance.id)
                request.data['staff'] = u'{}'.format(request.user.id)
                serializer = ApprovalLogEntrySerializer(data=request.data)
                serializer.is_valid(raise_exception=True)
                comms = serializer.save()
                # Save the files
                import ipdb
                ipdb.set_trace()
                for f in request.FILES:
                    document = comms.documents.create()
                    document.name = str(request.FILES[f])
                    document._file = request.FILES[f]
                    document.save()
                # End Save Documents

                return Response(serializer.data)
        except serializers.ValidationError:
            print(traceback.print_exc())
            raise
        except ValidationError as e:
            print(traceback.print_exc())
            raise serializers.ValidationError(repr(e.error_dict))
        except Exception as e:
            print(traceback.print_exc())
            raise serializers.ValidationError(str(e))
Exemplo n.º 2
0
 def comms_log(self, request, *args, **kwargs):
     try:
         instance = self.get_object()
         qs = instance.comms_logs.all()
         serializer = ApprovalLogEntrySerializer(qs, many=True)
         return Response(serializer.data)
     except serializers.ValidationError:
         print(traceback.print_exc())
         raise
     except ValidationError as e:
         print(traceback.print_exc())
         raise serializers.ValidationError(repr(e.error_dict))
     except Exception as e:
         print(traceback.print_exc())
         raise serializers.ValidationError(str(e))
Exemplo n.º 3
0
    def get(self, request, *args, **kwargs):
        invoice = None

        try:
            # When accessed first time, there is a annual_rental_fee in the session which was set at AnnualRentalFeeView()
            # but when accessed sencond time, it is deleted therefore raise an error.
            annual_rental_fee = get_session_annual_rental_fee(request.session)

            # if self.request.user.is_authenticated():
            #     basket = Basket.objects.filter(status='Submitted', owner=request.user).order_by('-id')[:1]
            # else:
            #     pass

            # order = Order.objects.get(basket=basket[0])
            invoice = Invoice.objects.get(
                reference=annual_rental_fee.invoice_reference)
            # annual_rental_fee.invoice_reference = invoice.reference
            # annual_rental_fee.save()

            request.session['last_annual_rental_fee_id'] = annual_rental_fee.id
            delete_session_annual_rental_fee(request.session)

            # Send invoice
            to_email_addresses = annual_rental_fee.approval.relevant_applicant.email
            email_data = send_annual_rental_fee_invoice(
                annual_rental_fee.approval, invoice, [
                    to_email_addresses,
                ])

            # Add comms log
            email_data['approval'] = u'{}'.format(
                annual_rental_fee.approval.id)
            serializer = ApprovalLogEntrySerializer(data=email_data)
            serializer.is_valid(raise_exception=True)
            comms = serializer.save()

            can_access_invoice = False
            if request.user == annual_rental_fee.approval.relevant_applicant or \
                    annual_rental_fee.approval.applicant in request.user.disturbance_organisations.all():
                can_access_invoice = True

            context = {
                'invoice_reference': annual_rental_fee.invoice_reference,
                'to_email_address': to_email_addresses,
                'can_access_invoice': can_access_invoice,
            }
            return render(request, self.template_name, context)

        except Exception as e:
            if 'last_annual_rental_fee_id' in request.session and AnnualRentalFee.objects.filter(
                    id=request.session['last_annual_rental_fee_id']).exists():
                annual_rental_fee = AnnualRentalFee.objects.get(
                    id=request.session['last_annual_rental_fee_id'])
                del request.session['last_annual_rental_fee_id']
                request.session.modified = True

                # TODO: Display success screen
                to_email_addresses = annual_rental_fee.approval.relevant_applicant.email
                can_access_invoice = False
                if request.user == annual_rental_fee.approval.relevant_applicant or \
                        annual_rental_fee.approval.applicant in request.user.disturbance_organisations.all():
                    can_access_invoice = True

                context = {
                    'invoice_reference': annual_rental_fee.invoice_reference,
                    'to_email_address': to_email_addresses,
                    'can_access_invoice': can_access_invoice,
                }
                return render(request, self.template_name, context)
            else:
                return redirect('home')

        except AnnualRentalFee.DoesNotExist:
            logger.error(
                'AnnualRentalFee id:{} not found in the database'.format(
                    request.session['last_annual_rental_fee_id']))
            return redirect('home')