Esempio n. 1
0
    def post(self, request, pk, package_id):
        pack = get_object(package_id, DocumentsPackage)
        docs_pack = list(PackFile.objects.filter(object_id=pack.id))
        docs_single = list(SingleFile.objects.filter(object_id=pack.id))
        docs_other = list(OtherFile.objects.filter(object_id=pack.id))

        founders_docs_path = '/media/Учредительные документы/Учредительные документы.pdf'
        act = pack.act if pack.act else None

        docs = (docs_pack + docs_single + docs_other)

        zip_buffer = BytesIO()
        with zipfile.ZipFile(zip_buffer, "a", zipfile.ZIP_DEFLATED,
                             False) as zip_file:
            for doc in docs:
                try:
                    with open(str_add_app(doc.file_path), 'rb') as f:
                        zip_file.writestr(doc.file_name, f.read())
                except FileNotFoundError:
                    continue
            if act:
                with open(str_add_app(act.file_path), 'rb') as f:
                    zip_file.writestr(act.file_name, f.read())
            with open(str_add_app(founders_docs_path), 'rb') as f:
                zip_file.writestr('Учредительные документы.pdf', f.read())

        zip_buffer.seek(0)

        response = HttpResponse(zip_buffer, content_type='application/zip')
        response['Content-Disposition'] = f'attachment; \
            filename={pack.name_uuid}.zip'

        return response
Esempio n. 2
0
 def put(self, request, pk, package_id, file_id):
     result = get_object(file_id, OtherFile)
     serializer = OtherFileSerializer(result, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 3
0
 def put(self, request, pk, format=None):
     obj = get_object(pk, Contragent)
     serializer = ContragentFullSerializer(obj, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 4
0
 def get(self, request, pk, package_id):
     package = get_object(package_id, DocumentsPackage)
     if package.package_state:
         if package.package_state.is_permitted(request.user):
             serializer = PackageFullSerializer(package)
             return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(data="Нет прав доступа к элементу.",
                     status=status.HTTP_308_PERMANENT_REDIRECT)
Esempio n. 5
0
 def put(self, request, pk):
     contragent = get_object(pk, Contragent)
     contract_number = contragent.number_contract
     serializer = ContractNumberClassSerializer(contract_number,
                                                data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 6
0
 def post(self, request, package_id, file_id):
     other_file = get_object(file_id, OtherFile)
     try:
         comment = other_file.commentary.create(
             user=request.user,
             commentary_text=request.data.get('commentary_text'))
         serializer = CommentarySerializer(comment)
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     except Error as error:
         return Response(error, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 7
0
 def put(self, request, pk, format=None):
     obj = get_object(pk, Contragent)
     serializer = ContragentFullSerializer(obj, data=request.data)
     if serializer.is_valid():
         serializer.save()
         r = calculate(since_date=serializer['contract_accept_date'].value,
                       up_to_date=serializer['current_date'].value,
                       stat_value=serializer['stat_value'].value,
                       norm_value=serializer['norm_value'].value)
         generate_documents(r)
         return Response(serializer.data)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 8
0
 def patch(self, request, pk, package_id):
     try:
         package = get_object(package_id, DocumentsPackage)
         package.act.clear_file()
         file_path, file_name = create_act(request, package)
         package.act.file_path = file_path
         package.act.file_name = file_name
         package.act.save()
         return Response({'result': 'ok'}, status=status.HTTP_200_OK)
     except Exception:
         return Response({'result': 'error'},
                         status=status.HTTP_400_BAD_REQUEST)
Esempio n. 9
0
 def post(self, request, pk, package_id):
     package = get_object(package_id, DocumentsPackage)
     file_obj = request.data['file']
     doc_type = DocumentTypeModel.objects.get(doc_type="Прочие")
     file_instance = OtherFile.objects.create(
         file_obj=file_obj,
         content_object=package,
         file_type=doc_type,
         creation_date=datetime.date.today(),
         file_name=file_obj.name)
     file_instance.save()
     file_instance.file_path = str_remove_app(file_instance.file_obj.path)
     return Response(file_instance.save(), status=status.HTTP_200_OK)
Esempio n. 10
0
 def post(self, request, pk, package_id):
     try:
         act = ActExam()
         package = get_object(package_id, DocumentsPackage)
         file_path, file_name = create_act(request, package)
         act.file_path = file_path
         act.file_name = file_name
         act.save()
         package.act = act
         package.save()
         return Response({'result': 'ok'}, status=status.HTTP_200_OK)
     except Exception:
         return Response({'result': 'error'},
                         status=status.HTTP_400_BAD_REQUEST)
Esempio n. 11
0
 def patch(self, request, pk, package_id):
     package = get_object(package_id, DocumentsPackage)
     group_id = package.name_uuid
     if not Task.get_group_count(group_id):
         if (package.is_active and package.is_automatic
                 and package.package_state.is_initial_state):
             contragent = package.contragent
             async_task(calc_create_gen_async,
                        contragent,
                        package,
                        True,
                        group=group_id)
             return Response(group_id, status=status.HTTP_200_OK)
         return Response(data="Нельзя изменить пакет из этого состояния.",
                         status=status.HTTP_308_PERMANENT_REDIRECT)
     return Response(status=status.HTTP_400_BAD_REQUEST)
Esempio n. 12
0
 def delete(self, request, pk, package_id):
     package = get_object(package_id, DocumentsPackage)
     event_id = request.data.get('event', None)
     if not event_id:
         package.set_inactive()
         return Response(status=status.HTTP_200_OK)
     else:
         event = Event.objects.get(id=event_id)
         if event.from_state == package.package_state:
             package.change_state_to(event.to_state, event.is_move_backward)
             add_record_to_journal(package, request.user)
             # if not any([
             #     event.to_state.is_permitted(dept.id
             #         ) for dept in event.from_state.departments.all()]):
             if event.to_state.is_final_state:
                 package.set_inactive()
                 package.contragent.reset_debt()
             if package.package_state.is_permitted(request.user):
                 return Response(status=status.HTTP_200_OK)
             return Response(data="Статус успешно сменен.",
                             status=status.HTTP_308_PERMANENT_REDIRECT)
         return Response(status=status.HTTP_400_BAD_REQUEST)
Esempio n. 13
0
    def post(self, request, pk):
        if DocumentsPackage.objects.filter(contragent__pk=pk,
                                           is_active=True).exists():
            return Response(status=status.HTTP_409_CONFLICT)
        contragent = get_object(pk, Contragent)
        if (not contragent.current_contract_date or not contragent.is_func
                or not contragent.norm_value or not contragent.stat_value
                or not contragent.signed_user):
            return Response("Не заполнены обязательные поля.",
                            status=status.HTTP_400_BAD_REQUEST)
        serializer = PackageShortSerializer(data={'contragent': contragent.pk})
        if serializer.is_valid():
            serializer.save()
            pack = DocumentsPackage.objects.get(contragent__pk=pk,
                                                is_active=True)
            pack.initialize_sub_folders()
            pack.change_state_to(
                State.objects.filter(is_initial_state=True)[0], False)
            add_record_to_journal(pack, request.user)
            group_id = pack.name_uuid
            contragent.current_user = request.user
            contragent.save()

            # if contragent.klass == 1:   # Юридическое лицо без договора
            #     pass
            # elif contragent.klass == 2:  # Юридическое лицо с договором
            #     pass
            # elif contragent.klass == 3:  # ИЖС без договора
            #     pass
            # elif contragent.klass == 4:  # ИЖС с договором
            #     pack.is_automatic = False
            #     pack.debt_plan = contragent.debt
            #     pack.save(force_update=True)
            # elif contragent.klass == 5:  # Физическое лицо
            #     pass

            return Response(group_id, status=status.HTTP_200_OK)

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Esempio n. 14
0
 def get(self, request, pk, package_id, file_id):
     result = get_object(file_id, OtherFile)
     serializer = OtherFileSerializer(result)
     return Response(serializer.data, status=status.HTTP_200_OK)
Esempio n. 15
0
 def get(self, request, pk):
     obj = get_object(pk, Contragent)
     serializer = ContragentFullSerializer(obj)
     return Response(serializer.data)
Esempio n. 16
0
 def put(self, request, pk, package_id):
     package = get_object(package_id, DocumentsPackage)
     package.tax_count = request.data.get('tax', 0.0)
     package.save()
     return Response(data={'result': bool(package.tax_count)},
                     status=status.HTTP_200_OK)
Esempio n. 17
0
 def delete(self, request, pk, package_id, file_id):
     result = get_object(file_id, OtherFile)
     result.delete()
     return Response(status=status.HTTP_200_OK)