Sellar XML
This commit is contained in:
parent
b12525e475
commit
ce57ea169a
|
@ -1,4 +1,4 @@
|
|||
# Generated by Django 3.2 on 2021-04-28 18:42
|
||||
# Generated by Django 3.2 on 2021-04-30 22:04
|
||||
|
||||
import api.models
|
||||
from django.db import migrations, models
|
||||
|
@ -18,8 +18,8 @@ class Migration(migrations.Migration):
|
|||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('rfc', api.models.RFCField(max_length=13, unique=True, verbose_name='RFC')),
|
||||
('token', models.CharField(max_length=100, verbose_name='Token')),
|
||||
('key', models.TextField(blank=True, default='', verbose_name='Key')),
|
||||
('cer', models.TextField(blank=True, default='', verbose_name='Cer')),
|
||||
('key', models.BinaryField(blank=True, default=b'', verbose_name='Key')),
|
||||
('cer', models.BinaryField(blank=True, default=b'', verbose_name='Cer')),
|
||||
('serial_number', models.CharField(blank=True, default='', max_length=100, verbose_name='Fiel Serie')),
|
||||
('date_from', models.DateTimeField(blank=True, null=True, verbose_name='Desde')),
|
||||
('date_to', models.DateTimeField(blank=True, null=True, verbose_name='Hasta')),
|
||||
|
|
|
@ -47,8 +47,8 @@ class RFCField(models.CharField):
|
|||
class Clients(models.Model):
|
||||
rfc = RFCField('RFC', unique=True)
|
||||
token = models.CharField('Token', max_length=100)
|
||||
key = models.TextField('Key', default='', blank=True)
|
||||
cer = models.TextField('Cer', default='', blank=True)
|
||||
key = models.BinaryField('Key', default=b'', blank=True)
|
||||
cer = models.BinaryField('Cer', default=b'', blank=True)
|
||||
serial_number = models.CharField('Fiel Serie', default='', blank=True, max_length=100)
|
||||
date_from = models.DateTimeField('Desde', null=True, blank=True)
|
||||
date_to = models.DateTimeField('Hasta', null=True, blank=True)
|
||||
|
|
|
@ -49,7 +49,13 @@ class CFDI(object):
|
|||
def stamp(self, cert, path_xslt):
|
||||
xslt = open(path_xslt, 'rb')
|
||||
transfor = ET.XSLT(ET.parse(xslt))
|
||||
print(cert)
|
||||
|
||||
self._root.attrib['NoCertificado'] = cert.serial_number
|
||||
self._root.attrib['Certificado'] = cert.cer_txt
|
||||
|
||||
cadena = str(transfor(self._root)).encode()
|
||||
self._root.attrib['Sello'] = cert.sign(cadena)
|
||||
xslt.close()
|
||||
return
|
||||
|
||||
def _validate_data(self, data):
|
||||
|
|
|
@ -53,6 +53,7 @@ def validate_client(post, files):
|
|||
msg = 'El certificado no corresponde al RFC'
|
||||
return False, msg
|
||||
|
||||
|
||||
data = {
|
||||
'rfc': rfc,
|
||||
'token': token_hex(32),
|
||||
|
@ -92,6 +93,7 @@ def send_stamp(data):
|
|||
msg = ''
|
||||
emisor = data['emisor']
|
||||
path_xslt = CURRENT_DIR / 'xslt/cadena.xslt'
|
||||
|
||||
cert = SATCertificate(emisor.cer, emisor.key)
|
||||
|
||||
cfdi = CFDI()
|
||||
|
|
Loading…
Reference in New Issue