email 2
This commit is contained in:
@@ -2,6 +2,24 @@ from django import forms
|
||||
from .models import Clientes
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
class EmailForm(forms.Form):
|
||||
RFC = forms.CharField(max_length=13, required=True)
|
||||
mes = forms.CharField( max_length=4, required=True)
|
||||
email = forms.EmailField(required=False)
|
||||
subject = forms.CharField(max_length=100, required=False)
|
||||
adjunto = forms.FileField(widget=forms.ClearableFileInput(
|
||||
attrs={
|
||||
'multiple': True,
|
||||
'accept':'application/pdf,application/vnd.ms-excel',
|
||||
|
||||
|
||||
}
|
||||
), required=False)
|
||||
message = forms.CharField(widget=forms.Textarea, required=True)
|
||||
class Meta:
|
||||
fields = '__all__'
|
||||
|
||||
class ClienteForm(forms.ModelForm):
|
||||
|
||||
fecha_baja = forms.DateField(
|
||||
|
||||
@@ -4,11 +4,12 @@ from django.http import HttpResponse
|
||||
from django.http import JsonResponse
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from .models import Clientes,Timbres,saldoModel,ErroresTimbres
|
||||
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
from django.db.models import Q
|
||||
import datetime
|
||||
from django.views.generic.edit import UpdateView
|
||||
from .forms import ClienteForm
|
||||
from .forms import ClienteForm,EmailForm
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||
from django.contrib.auth.mixins import UserPassesTestMixin
|
||||
from asgiref.sync import sync_to_async
|
||||
@@ -26,17 +27,35 @@ 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)
|
||||
import functools
|
||||
|
||||
@sync_to_async(thread_sensitive=False)
|
||||
def send_timbres_Email(request):
|
||||
req = request.method
|
||||
|
||||
if req == "POST":
|
||||
form = EmailForm(request.POST, request.FILES)
|
||||
if not form.is_valid():
|
||||
messages.add_message(request, messages.ERROR, f'{form.errors}')
|
||||
return redirect('index')
|
||||
today = datetime.date.today()
|
||||
year = today.year
|
||||
if mes is None or mes =='None':
|
||||
|
||||
|
||||
RFC = request.GET.get('RFC', None) if req=='GET' else form.cleaned_data["RFC"]
|
||||
mes = request.GET.get('mes', None) if req=='GET' else form.cleaned_data["mes"]
|
||||
if mes is None or mes =='None':
|
||||
mes = today.month
|
||||
|
||||
Cli = Clientes.objects.get(RFC=RFC)
|
||||
subject = f'Timbres del Mes:{mes} RFC:{RFC}' if req=='GET' else ( form.cleaned_data["subject"] if 'subject' in form.cleaned_data.keys() else '' )
|
||||
message = 'Envio de timbres por AS_Admin' if req=='GET' else ( form.cleaned_data["message"] if 'message' in form.cleaned_data.keys() else '' )
|
||||
email = form.cleaned_data["email"] if 'email' in form.cleaned_data.keys() else ''
|
||||
emails = [Cli.email] if req=='GET' else [ Cli.email, email ]
|
||||
|
||||
if len(emails) ==0 :
|
||||
messages.add_message(request, messages.ERROR, f'La lista de correos esta vacia, favor de agregar un correo.')
|
||||
return redirect('index')
|
||||
|
||||
dat =datetime.datetime(int(year), int(mes),1)
|
||||
|
||||
if dat.month in(1,3,5,7,8,10,12):
|
||||
@@ -82,21 +101,35 @@ def send_timbres_Email(request):
|
||||
wb.save(response)
|
||||
|
||||
files = BytesIO(response.content)
|
||||
|
||||
#print('files: ',response.content)
|
||||
|
||||
Cli = Clientes.objects.get(RFC=RFC)
|
||||
subject = f'Timbres del Mes:{mes} RFC:{RFC}'
|
||||
message = 'Envio de timbres por AS_Admin'
|
||||
email = Cli.email
|
||||
|
||||
try:
|
||||
mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,[email])
|
||||
mail = EmailMessage(subject,message,settings.EMAIL_HOST_USER,emails)
|
||||
mail.attach(filename='Timbres.xls',content=files.getbuffer(),mimetype='application/vnd.ms-excel')
|
||||
|
||||
adjunto = request.FILES.getlist('adjunto')
|
||||
if req=='POST' and len(adjunto) >0:
|
||||
total = functools.reduce(lambda a, b: a+b,[adj.size for adj in adjunto])
|
||||
total += files.getbuffer().nbytes
|
||||
if total > 2.5e+7:
|
||||
messages.add_message(request, messages.ERROR, f'Se excedio el limite de 25 MegaBytes para los adjuntos')
|
||||
return redirect('index')
|
||||
try:
|
||||
for adj in adjunto:
|
||||
mail.attach(filename=adj.name,content=adj.read(),mimetype=adj.content_type)
|
||||
except Exception as E:
|
||||
messages.add_message(request, messages.ERROR, f'Error Adjuntos {E}')
|
||||
return redirect('index')
|
||||
mail.send()
|
||||
messages.success(request, 'Email Enviado correctamente.')
|
||||
except Exception as E:
|
||||
messages.error(request, f'Email no se envio correctamente.{E}')
|
||||
|
||||
return redirect('index')
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
# def send_timbres_Email(request):
|
||||
# RFC = request.GET.get('RFC', None)
|
||||
# mes = request.GET.get('mes', None)
|
||||
@@ -167,7 +200,8 @@ def index(request):
|
||||
context = {
|
||||
'lista':clientes_list,
|
||||
'mes':mes,
|
||||
'filters':filters
|
||||
'filters':filters,
|
||||
'emailForm':EmailForm(),
|
||||
|
||||
}
|
||||
return render(request,'Clientes/index.html',context)
|
||||
@@ -249,11 +283,7 @@ def timbres_cliente(request, RFC):
|
||||
|
||||
conteo = lista.count()
|
||||
|
||||
if conteo !=0 :
|
||||
perPage = conteo // 2
|
||||
else:
|
||||
perPage = 1
|
||||
lista =pageFunc(page,lista,perPage)
|
||||
lista =pageFunc(page,lista,50)
|
||||
|
||||
context ={
|
||||
'lista':lista,
|
||||
|
||||
Reference in New Issue
Block a user