envio de correos por timbres cliente

This commit is contained in:
fjrodriguez
2022-12-07 14:30:03 -06:00
parent 7f3348e080
commit dbd9e5c8b7
6 changed files with 80 additions and 23 deletions

View File

@@ -101,13 +101,14 @@ ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
EMAIL_TIMEOUT = 5 EMAIL_TIMEOUT = 5
#EMAIL_USE_TLS = True #EMAIL_USE_TLS = True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'secure.emailsrvr.com' EMAIL_HOST = 'secure.emailsrvr.com'
EMAIL_PORT = 465 EMAIL_PORT = 465
EMAIL_HOST_USER = DEFAULT_FROM_EMAIL = 'noreply@aduanasoft.com.mx' EMAIL_HOST_USER = 'noreply@aduanasoft.com.mx'
EMAIL_HOST_PASSWORD = 'N036p7y!' EMAIL_HOST_PASSWORD = 'N036p7y!'
EMAIL_SUBJECT_PREFIX = 'AS Timbres' EMAIL_SUBJECT_PREFIX = 'AS Timbres'
EMAIL_USE_SSL=True EMAIL_USE_SSL=True
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# Database # Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases # https://docs.djangoproject.com/en/4.1/ref/settings/#databases

View File

@@ -1,5 +1,12 @@
from django.urls import path,include from django.urls import path,include
from .views import index,add_timbre, timbres_cliente,saldo_funct,ClientesUpdateView, export_Excel from .views import (
index,add_timbre,
timbres_cliente,
saldo_funct,
ClientesUpdateView,
export_Excel,
send_timbres_Email,
)
urlpatterns = [ urlpatterns = [
path('', index, name='index'), path('', index, name='index'),
@@ -7,7 +14,7 @@ urlpatterns = [
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'), path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
path('get_saldo/', saldo_funct, name='saldo_funct'), path('get_saldo/', saldo_funct, name='saldo_funct'),
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'), path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'),
path('get_timbres_xls/', export_Excel, name='export_Excel'), path('get_timbres_xls/', export_Excel, name='export_Excel'),
path('send_timbres_cliente/',send_timbres_Email, name='send_timbres_Email'),
] ]

View File

@@ -17,10 +17,55 @@ from asgiref.sync import sync_to_async
from openpyxl import Workbook from openpyxl import Workbook
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
import json import json
#email
from django.core.mail import EmailMessage
from django.conf import settings
import requests
import os
import re
from io import BytesIO
@login_required
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 @login_required
def index(request): def index(request):
clientes_list = Clientes.objects.all() clientes_list = Clientes.objects.all()
mes = request.GET.get('mes', None) mes = request.GET.get('mes', None)
page = request.GET.get('page', 1) page = request.GET.get('page', 1)
@@ -37,17 +82,20 @@ def index(request):
for i,ii in enumerate(clientes_list): for i,ii in enumerate(clientes_list):
ii.timbres_X_MES(mes=mes) ii.timbres_X_MES(mes=mes)
paginator = Paginator(clientes_list, 5)
try: clientes_list =pageFunc(page,clientes_list,20)
lista = paginator.page(page)
except PageNotAnInteger: # paginator = Paginator(clientes_list, 5)
lista = paginator.page(1)
except EmptyPage: # try:
lista = paginator.page(paginator.num_pages) # lista = paginator.page(page)
# except PageNotAnInteger:
# lista = paginator.page(1)
# except EmptyPage:
# lista = paginator.page(paginator.num_pages)
filters.pop('mes','') filters.pop('mes','')
context = { context = {
'lista':lista, 'lista':clientes_list,
'mes':mes, 'mes':mes,
'filters':filters 'filters':filters
@@ -119,8 +167,7 @@ def timbres_cliente(request, RFC):
inicio = [int(i) for i in datepicker.split("/")] inicio = [int(i) for i in datepicker.split("/")]
fin = [int(i) for i in datepickerFin.split("/")] fin = [int(i) for i in datepickerFin.split("/")]
#print('inicio',inicio,' fin',fin) #print('inicio',inicio,' fin',fin)
#inicio.sort(reverse=True)
#fin.sort(reverse=True)
start = datetime.datetime(inicio[2],inicio[0],inicio[1]) start = datetime.datetime(inicio[2],inicio[0],inicio[1])
start += datetime.timedelta(days=0) start += datetime.timedelta(days=0)
end = datetime.datetime(fin[2],fin[0],fin[1]) end = datetime.datetime(fin[2],fin[0],fin[1])
@@ -131,7 +178,7 @@ def timbres_cliente(request, RFC):
lista = lista.filter(created_at__range=[start, end]) lista = lista.filter(created_at__range=[start, end])
conteo = lista.count() conteo = lista.count()
print('conteo',conteo)
if conteo !=0 : if conteo !=0 :
perPage = conteo // 2 perPage = conteo // 2
else: else:
@@ -175,7 +222,7 @@ def export_Excel(request):
RFC = request.GET.get('RFC', None) RFC = request.GET.get('RFC', None)
mes = request.GET.get('mes',None) mes = request.GET.get('mes',None)
print('AQUIIIIIIIIIIIIIIII')
today = datetime.date.today() today = datetime.date.today()
month = today.month month = today.month
year = today.year year = today.year
@@ -195,7 +242,6 @@ def export_Excel(request):
print(f'dat{dat} findate:{findate}') print(f'dat{dat} findate:{findate}')
if mes is not None and RFC is not None: if mes is not None and RFC is not None:
objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__range=[dat,findate]) objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__range=[dat,findate])
#objeto_a_trabajar = Timbres.objects.filter(rfcc=RFC, created_at__year=str(year),created_at__month=str(month))
else: else:
objeto_a_trabajar = Clientes.objects.all() objeto_a_trabajar = Clientes.objects.all()
for i,ii in enumerate(objeto_a_trabajar): for i,ii in enumerate(objeto_a_trabajar):

View File

@@ -87,6 +87,9 @@ Timbres disponibles Comercio Digital: {{saldo.saldo}}
<td> <td>
<button class="btn btn-outline-info" id ="id_b_{{obj.RFC}}" onclick="aclick(event, '{{obj.RFC}}','{{obj.conteo_mes}}')">Excel</button> <button class="btn btn-outline-info" id ="id_b_{{obj.RFC}}" onclick="aclick(event, '{{obj.RFC}}','{{obj.conteo_mes}}')">Excel</button>
<a style="display: none;" id="id_a_{{obj.RFC}}" target="_blank" rel="noopener noreferrer" href="{% url 'export_Excel' %}?RFC={{obj.RFC}}&mes={{mes}}">Excel</a> <a style="display: none;" id="id_a_{{obj.RFC}}" target="_blank" rel="noopener noreferrer" href="{% url 'export_Excel' %}?RFC={{obj.RFC}}&mes={{mes}}">Excel</a>
<a href="{% url 'send_timbres_Email' %}?RFC={{obj.RFC}}&mes={{mes}}" >Email Timbres</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}
@@ -127,7 +130,7 @@ Timbres disponibles Comercio Digital: {{saldo.saldo}}
}) })
document.getElementById('table_select').addEventListener('change',(event)=>{ document.getElementById('table_select').addEventListener('change',(event)=>{
spinner_id.setAttribute('style','display:block;') spinner_id.setAttribute('style','display:inline;')
let anc = document.getElementById('home_id') let anc = document.getElementById('home_id')
anc.href='' anc.href=''
let url = `?mes=${event.target.value}${filters}` let url = `?mes=${event.target.value}${filters}`