def put(self, request, pk, format=None):
        uid = request.user.id
        body = request.data
        if not body:
            return HttpResponseBadRequest("Missing request body")

        app = get_app_object(pk, uid)
        if not app:
            return HttpResponseNotFound("No record found")

        (steps_key_id, steps_enc) = self.encrypt_steps(body["steps"])

        app.last_updated = timezone.now()
        app.app_type = body.get("type")
        app.current_step = body.get("currentStep")
        app.steps = steps_enc
        app.user_type = body.get("userType")
        app.applicant_name = body.get("applicantName")
        app.user_name = body.get("userName")
        app.deceased_name = body.get("deceasedName")
        app.deceased_date_of_death = body.get("deceasedDateOfDeath")
        app.date_of_will = body.get("dateOfWill")
        app.application_location = body.get("applicationLocation")
        app.save()
        return Response("success")
    def put(self, request, pk, format=None):
        uid = request.user.id
        body = request.data
        if not body:
            return HttpResponseBadRequest("Missing request body")

        app = get_app_object(pk, uid)
        if not app:
            return HttpResponseNotFound("No record found")

        (steps_key_id, steps_enc) = self.encrypt_steps(body["steps"])

        app.last_updated = timezone.now()
        app.app_type = body.get("type")
        app.current_step = body.get("currentStep")
        app.steps = steps_enc
        app.user_type = body.get("userType")
        app.applicant_name = body.get("applicantName")
        app.user_name = body.get("userName")
        app.respondent_name = body.get("respondentName")
        app.protected_party_name = body.get("protectedPartyName")
        app.protected_child_name = body.get("protectedChildName")
        app.application_location = body.get("applicationLocation")
        app.save()
        return Response("success")
    def post(self, request, pk, name=None):
        data = request.data
        uid = request.user.id
        app = get_app_object(pk, uid)
        if not app:
            return HttpResponseNotFound("No record found")

        name = request.query_params.get("name")
        try:
            pdf_result = self.get_pdf(pk)
            if not pdf_result:
                pdf_content = self.generate_pdf(name, data)
                (pdf_key_id,
                 pdf_content_enc) = settings.ENCRYPTOR.encrypt(pdf_content)
                pdf_response = PreparedPdf(data=pdf_content_enc,
                                           key_id=pdf_key_id)
                pdf_response.save()
                app.prepared_pdf_id = pdf_response.pk
            elif app.last_printed is None or app.last_updated > app.last_printed:
                pdf_queryset = PreparedPdf.objects.filter(id=pdf_result.id)
                pdf_content = self.generate_pdf(name, data)
                (pdf_key_id,
                 pdf_content_enc) = settings.ENCRYPTOR.encrypt(pdf_content)
                pdf_queryset.update(data=pdf_content_enc)
                pdf_queryset.update(created_date=timezone.now())
            else:
                pdf_content = self.generate_pdf(name, data)
                # pdf_content = settings.ENCRYPTOR.decrypt(
                #         pdf_result.key_id, pdf_result.data
                #     )
            app.last_printed = timezone.now()
            app.save()
        except Exception as ex:
            LOGGER.error("ERROR: Pdf generation failed %s", ex)
            raise

        response = HttpResponse(content_type='application/pdf')
        response['Content-Disposition'] = 'attachment; filename="report.pdf"'

        response.write(pdf_content)

        return response
 def get(self, request, pk, format=None):
     uid = request.user.id
     application = get_app_object(pk, uid)
     steps_dec = settings.ENCRYPTOR.decrypt(application.key_id, application.steps)
     steps = json.loads(steps_dec)
     data = {"id": application.id,
             "type": application.app_type,
             "steps": steps,
             "lastUpdate": application.last_updated,
             "lastFiled": application.last_filed,
             "lastPrinted": application.last_printed,
             "currentStep": application.current_step,
             "allCompleted": application.all_completed,
             "userType": application.user_type,
             "userName": application.user_name,
             "userId": application.user_id,
             "applicantName": application.applicant_name,
             "deceasedName": application.deceased_name,
             "deceasedDateOfDeath": application.deceased_date_of_death,
             "dateOfWill": application.date_of_will,
             "applicationLocation": application.application_location}
     return Response(data)
 def get(self, request, pk, format=None):
     uid = request.user.id
     application = get_app_object(pk, uid)
     steps_dec = settings.ENCRYPTOR.decrypt(application.key_id, application.steps)
     steps = json.loads(steps_dec)
     data = {"id": application.id,
             "type": application.app_type,
             "steps": steps,
             "lastUpdate": application.last_updated,
             "lastFiled": application.last_filed,
             "lastPrinted": application.last_printed,
             "currentStep": application.current_step,
             "allCompleted": application.all_completed,
             "userType": application.user_type,
             "userName": application.user_name,
             "userId": application.user_id,
             "applicantName": application.applicant_name,
             "respondentName": application.respondent_name,
             "protectedPartyName": application.protected_party_name,
             "protectedChildName": application.protected_child_name,
             "applicationLocation": application.application_location}
     return Response(data)
 def delete(self, request, pk, format=None):
     uid = request.user.id
     application = get_app_object(pk, uid)
     application.delete()
     return Response(status=status.HTTP_204_NO_CONTENT)