def descargar_paquete(self, pk):
    paquete = models.PaqueteDeDescarga.objects.get(pk=pk, activo=True)

    cer_der = paquete.solicitud_de_descarga.empresa.cer.read()
    key_der = paquete.solicitud_de_descarga.empresa.key.read()

    fiel = Fiel(cer_der, key_der,
                paquete.solicitud_de_descarga.empresa.contrasena)

    auth = Autenticacion(fiel)

    token = auth.obtener_token()

    descarga_masiva = DescargaMasiva(fiel)

    result = descarga_masiva.descargar_paquete(
        token, paquete.solicitud_de_descarga.empresa.rfc, paquete.id_paquete)

    paquete.cod_estatus = int(result['cod_estatus'])
    paquete.mensaje = result['mensaje']

    if int(result['cod_estatus']) == 5000:
        zip_file = ContentFile(base64.b64decode(result['paquete_b64']))
        paquete.paqueteb64.save('{}.zip'.format(paquete.id_paquete), zip_file)
        paquete.fecha_descarga = timezone.now()

    paquete.save()

    return True
def verificar_solicitud_descarga(self, pk):
    solicitud = models.SolicitudDeDescarga.objects.get(pk=pk, activo=True)

    if solicitud.estado_solicitud and solicitud.estado_solicitud >= 3:
        return 'Solicitud en estado: {}'.format(
            solicitud.get_estado_solicitud_display())

    cer_der = solicitud.empresa.cer.read()
    key_der = solicitud.empresa.key.read()

    fiel = Fiel(cer_der, key_der, solicitud.empresa.contrasena)

    auth = Autenticacion(fiel)

    token = auth.obtener_token()

    verificador = VerificaSolicitudDescarga(fiel)

    result = verificador.verificar_descarga(token, solicitud.empresa.rfc,
                                            str(solicitud.id_solicitud))

    verificacion = models.VerificacionSolicitudDeDescarga()

    verificacion.solicitud_de_descarga = solicitud

    verificacion.fecha_verificacion = timezone.now()

    verificacion.cod_estatus = int(result['cod_estatus'])

    verificacion.mensaje = result['mensaje']

    verificacion.cod_estatus_solicitud = int(result['codigo_estado_solicitud'])

    verificacion.estado_solicitud = int(result['estado_solicitud'])

    verificacion.numero_cfdis = int(result['numero_cfdis'])

    solicitud.cod_estatus = verificacion.cod_estatus_solicitud

    solicitud.estado_solicitud = verificacion.estado_solicitud

    solicitud.fecha_ultima_verificacion = verificacion.fecha_verificacion

    solicitud.numero_cfdis = verificacion.numero_cfdis

    if solicitud.estado_solicitud == 3:
        solicitud.fecha_resolucion = verificacion.fecha_verificacion

        for paq in result['paquetes']:
            paquete = models.PaqueteDeDescarga()
            paquete.solicitud_de_descarga = solicitud
            paquete.id_paquete = paq
            paquete.save()
            descargar_paquete.delay(paquete.pk)

    verificacion.save()

    solicitud.save()

    return True
##
RFC = 'JSI140527TS9'
FIEL_CER = 'jsi140527ts9.cer'
FIEL_KEY = 'Claveprivada_FIEL_JSI140527TS9_20190723_092521.key'
FIEL_PAS = '******'
PATH = '/Users/Ramitos/Downloads/drive-download-20210123T211237Z-001'

cer_der = open(os.path.join(PATH, FIEL_CER), 'rb').read()
key_der = open(os.path.join(PATH, FIEL_KEY), 'rb').read()

FECHA_INICIAL = datetime.date(2020, 1, 1)
FECHA_FINAL = datetime.date(2020, 6, 24)

fiel = Fiel(cer_der, key_der, FIEL_PAS)

auth = Autenticacion(fiel)

token = auth.obtener_token()

print('TOKEN: ', token)

descarga = SolicitaDescarga(fiel)

# EMITIDOS
# solicitud = descarga.solicitar_descarga(
#     token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_emisor=RFC, tipo_solicitud='CFDI'
# )

# RECIBIDOS
solicitud = descarga.solicitar_descarga(
    token, RFC, FECHA_INICIAL, FECHA_FINAL, rfc_receptor=RFC, tipo_solicitud='CFDI'
Exemple #4
0
def autenticacion():
    auth = Autenticacion(fiel)
    token = auth.obtener_token()

    return token
    def post(self, request, empresa_pk):
        empresa = get_object_or_404(models.Empresa, pk=empresa_pk, user=self.request.user, activo=True)

        form = forms.SolicitudDeDescargaForm(request.POST)

        if form.is_valid():
            try:
                fecha_inicial = form.cleaned_data['fecha_inicial']
                fecha_final = form.cleaned_data['fecha_final']
                tipo = form.cleaned_data['tipo']
                tipo_solicitud = form.cleaned_data['tipo_solicitud']

                fecha_inicial = datetime.combine(fecha_inicial, datetime.min.time())
                fecha_final = datetime.combine(fecha_final, datetime.max.time())

                rfc_emisor = None
                rfc_receptor = None

                if tipo == 'E':
                    rfc_emisor = empresa.rfc
                elif tipo == 'R':
                    rfc_receptor = empresa.rfc

                cer_der = empresa.cer.read()
                key_der = empresa.key.read()

                fiel = Fiel(cer_der, key_der, empresa.contrasena)

                auth = Autenticacion(fiel)

                token = auth.obtener_token()

                descarga = SolicitaDescarga(fiel)

                result = descarga.solicitar_descarga(
                    token, empresa.rfc, fecha_inicial, fecha_final, rfc_emisor=rfc_emisor,
                    rfc_receptor=rfc_receptor, tipo_solicitud=tipo_solicitud
                )

                solicitud = models.SolicitudDeDescarga()

                solicitud.empresa = empresa

                solicitud.id_solicitud = result['id_solicitud']

                solicitud.fecha_inicial = fecha_inicial

                solicitud.fecha_final = fecha_final

                solicitud.rfc_receptor = rfc_receptor

                solicitud.rfc_emisor = rfc_emisor

                solicitud.tipo_solicitud = tipo_solicitud

                solicitud.cod_estatus = int(result['cod_estatus'])

                solicitud.mensaje = result['mensaje']

                solicitud.save()

                return redirect('descargadorweb:solicitud_de_descarga_detalle', empresa_pk=empresa.pk, pk=solicitud.pk)

            except Exception as e:
                form.add_error(None, str(e))

        return render(request, self.template_name, {'empresa': empresa, 'form': form})