generar xls for email
This commit is contained in:
@@ -29,40 +29,103 @@ from io import BytesIO
|
||||
@login_required
|
||||
def send_timbres_Email(request):
|
||||
RFC = request.GET.get('RFC', None)
|
||||
mes = request.GET.get('mes', None)
|
||||
mes = request.GET.get('mes', None)
|
||||
|
||||
today = datetime.date.today()
|
||||
|
||||
if mes is None or mes =='None':
|
||||
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 ')
|
||||
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):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user