generar xls for email

This commit is contained in:
fjrodriguez
2022-12-07 15:32:58 -06:00
parent dbd9e5c8b7
commit fbe03ae4a0
2 changed files with 83 additions and 20 deletions

View File

@@ -30,39 +30,102 @@ from io import BytesIO
def send_timbres_Email(request):
RFC = request.GET.get('RFC', None)
mes = request.GET.get('mes', None)
today = datetime.date.today()
year = today.year
if mes is None or mes =='None':
mes = today.month
url = request.build_absolute_uri().split('/')[:-2]
url = '/'.join(url)
url = os.path.join(url, 'get_timbres_xls')
print(f'URL:{url}')
h = requests.get(f'{url}/?RFC={RFC}&mes={mes}', allow_redirects=True)
header =h.headers
content_dispo = h.headers.get('content-disposition')
fname = re.findall('filename = (.+)',content_dispo)
fname = fname[0]
fname = fname.split('.')[0]
fname = f'{fname}.xls'
fname = fname.replace('_','')
print('fname: ',fname)
dat =datetime.datetime(int(year), int(mes),1)
if dat.month in(1,3,5,7,8,10,12):
findate = dat +datetime.timedelta(days=30)
elif dat.month in (4,6,9,11):
findate = dat+datetime.timedelta(days=29)
else:
findate = dat+datetime.timedelta(days=28)
findate +=datetime.timedelta(days=1)
print(f'dat{dat} findate:{findate}')
if mes is not None and RFC is not None:
objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__range=[dat,findate])
else:
objeto_a_trabajar = Clientes.objects.all()
for i,ii in enumerate(objeto_a_trabajar):
ii.timbres_X_MES(mes=mes )
wb = Workbook()
ws = wb.active
if RFC is not None:
#Encabezado
ws['A1']='RFC_EXPEDIDO'
ws['B1']='UUID'
ws['C1']='Fecha'
for q,qq in enumerate(objeto_a_trabajar,start=2):
ws['A' + str(q)] = qq.rfcc
ws['B'+ str(q)] = qq.uuid
ws['C'+ str(q)] = qq.fecha
else:#cuando no es pro RFC y es para contabilizar los timbres del mes de cada cliente
ws['A1']='RFC_EXPEDIDO'
ws['B1']='Nombre'
ws['C1']='Timbres'
for q,qq in enumerate(objeto_a_trabajar,start=2):
ws['A' + str(q)] = qq.RFC
ws['B'+ str(q)] = qq.Nombre
ws['C'+ str(q)] = qq.conteo_mes
excel = BytesIO()
nombre_archivo = f"Timbres_{RFC if RFC is not None else 'Clientes_MES'}_{str(mes)}_AÑO_{str(year)}.xls"
wb.save(excel)
Cli = Clientes.objects.get(RFC=RFC)
subject = f'Timbres del Mes:{mes} RFC:{RFC}'
message = 'Envio de timbres por AS_Admin'
email = Cli.email
files = BytesIO(h.content)
try:
mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,[email])
mail.attach(filename='timbres.xls',content=files.getbuffer(),mimetype='application/vnd.ms-excel')
mail.attach(filename='Timbres.xls',content=excel.getvalue(),mimetype='application/vnd.ms-excel')
mail.send()
print('SE armo')
except:
print('Error ')
return redirect('index')
# def send_timbres_Email(request):
# RFC = request.GET.get('RFC', None)
# mes = request.GET.get('mes', None)
# today = datetime.date.today()
# if mes is None or mes =='None':
# mes = today.month
# url = request.build_absolute_uri().split('/')[:-2]
# url = '/'.join(url)
# url = os.path.join(url, 'get_timbres_xls')
# print(f'URL:{url}')
# h = requests.get(f'{url}/?RFC={RFC}&mes={mes}', allow_redirects=True)
# header =h.headers
# content_dispo = h.headers.get('content-disposition')
# fname = re.findall('filename = (.+)',content_dispo)
# fname = fname[0]
# fname = fname.split('.')[0]
# fname = f'{fname}.xls'
# fname = fname.replace('_','')
# print('fname: ',fname)
# Cli = Clientes.objects.get(RFC=RFC)
# subject = f'Timbres del Mes:{mes} RFC:{RFC}'
# message = 'Envio de timbres por AS_Admin'
# email = Cli.email
# files = BytesIO(h.content)
# try:
# mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,[email])
# mail.attach(filename='timbres.xls',content=files.getbuffer(),mimetype='application/vnd.ms-excel')
# mail.send()
# print('SE armo')
# except:
# print('Error ')
# return redirect('index')
@login_required
def index(request):