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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
def get(self, request, pk): obj = get_object(pk, Contragent) serializer = ContragentFullSerializer(obj) return Response(serializer.data)
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)
def delete(self, request, pk, package_id, file_id): result = get_object(file_id, OtherFile) result.delete() return Response(status=status.HTTP_200_OK)