Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

I could not read data from wsdl file #691

Closed
Shodiev-Shokhrukh opened this issue Jun 21, 2022 · 0 comments
Closed

I could not read data from wsdl file #691

Shodiev-Shokhrukh opened this issue Jun 21, 2022 · 0 comments

Comments

@Shodiev-Shokhrukh
Copy link

import logging
from datetime import datetime
from spyne import Application, rpc, ServiceBase, AnyDict
from spyne.protocol.soap import Soap11
from spyne.server.django import DjangoApplication

from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt

from invoice.api.russian_webservice.complex_models import Consignor, Request1Type, Request31Type, Request91Type, CertificateMaximumType, CertificateMinimumType, Response91Type

from exim.models import ExportFSS, ImportFSS


class RussianIntegrationApiView(ServiceBase):
    @rpc(Request91Type,
         _returns=AnyDict,
         _out_variable_name="Response91")
    def getResponse91(ctx, request91type):
        try:
            logging.info(
                f'Initialized objects {str(Request91Type).encode("utf-8")}')
            error_message = None
            error_code = None


            import_fss = ImportFSS.objects.create(
                number=request91type.certificate.number,
                given_date=datetime.strptime(
                    request91type.certificate.date, '%d.%m.%Y'),
                exporter_name=request91type.certificate.consignor.name,
                exporter_country=request91type.certificate.departure_country,
                exporter_address=request91type.certificate.consignor.place,
                importer_name=request91type.certificate.consignee.name,
                importer_country=request91type.certificate.destination_country,
                importer_address=request91type.certificate.consignee.place,
                transport_method=request91type.certificate.transport.declared_type,
                transport_number=request91type.certificate.transport.number,
                disinfected_date=datetime.strptime(
                    request91type.certificate.disinfection.date, '%d.%m.%Y'),
                treatment_method=request91type.certificate.disinfection.method,
                chemical=request91type.certificate.disinfection.chemical,
                duration_and_temperature=request91type.certificate.disinfection.temperature_times,
                concentration=request91type.certificate.disinfection.concentration,
                extra_info=request91type.certificate.additional_info,
            )
            return {
                "GUID": CertificateMinimumType.guid_generate(),
                "SendDateTime": "2022-04-11T19:50:11    ",  
                "Certificate": CertificateMinimumType.generate(),
                "Status": "Выдан",
                "StatusCode": "1601",
                "Inspector": ""
            }

        except Exception as e:
            logging.info(f'Exception occurred: {str(e)}')


def on_method_return_string(ctx):
    ctx.out_string[0] = ctx.out_string[0].replace(b'soap11env', b'soapenv')
    ctx.out_string[0] = ctx.out_string[0].replace(b'tns', b'mun')
    ctx.out_string[0] = ctx.out_string[0].replace(b'GUID', b'm:GUID')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'SendDateTime', b'm:SendDateTime')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Act', b'm:Act')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Date', b'm:Date')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Number', b'm:Number')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Blanc', b'm:Blanc')
    ctx.out_string[0] = ctx.out_string[0].replace(b'OldDate', b'm:OldDate')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'CountryCode', b'm:CountryCode')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'ExpirationDate', b'm:ExpirationDate')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Canceled', b'm:Canceled')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'IssuePlace', b'm:IssuePlace')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Inspector', b'm:Inspector')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'InspectionResult', b'm:InspectionResult')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'InspectionResultCode', b'm:InspectionResultCode')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'InspectionResultReport', b'm:InspectionResultReport')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'InspectionType', b'm:InspectionType')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'InspectionTypeCode', b'm:InspectionTypeCode')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'Certificates', b'm:Certificates')
    ctx.out_string[0] = ctx.out_string[0].replace(b'Status', b'm:Status')
    ctx.out_string[0] = ctx.out_string[0].replace(
        b'StatusCode', b'm:StatusCode')
    ctx.out_string[0] = ctx.out_string[0].replace(b'PDF', b'm:PDF')

    print("aaaa-------")
    print(ctx.out_string[0].decode('utf-8'))


RussianIntegrationApiView.event_manager.add_listener('method_return_string',
                                                     on_method_return_string)
application = Application([RussianIntegrationApiView],
                          'https://argusgate.fitorf.ru/srv/ws/uz3',
                          name='UzGosKarantinWSPortBinding',
                          in_protocol=Soap11(validator='soft'),
                          out_protocol=Soap11(),
                          )

russian_api_service = DjangoApplication(application)


def get_wsdl_file_russian(request):
    with open('apps/invoice/api/russian_webservice/russian.wsdl', 'r') as f:
        docs = f.read()
    return HttpResponse(docs, content_type='text/xml; charset=utf-8')


@csrf_exempt
def russian_service_dispatcher(request):

    if request.get_full_path() in ('/UzGosKarantinWebService/russian/?wsdl',
                                   '/UzGosKarantinWebService/russian?wsdl'):
        return get_wsdl_file_russian(request)
    return russian_api_service(request)

I created discussian about this

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant