year added to index view
This commit is contained in:
@@ -102,7 +102,7 @@ ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
|
|||||||
EMAIL_TIMEOUT = 10
|
EMAIL_TIMEOUT = 10
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
EMAIL_SUBJECT_PREFIX = 'AS Timbres'
|
EMAIL_SUBJECT_PREFIX = 'AS Timbres'
|
||||||
if DEBUG:
|
if DEBUG :
|
||||||
EMAIL_USE_TLS = True
|
EMAIL_USE_TLS = True
|
||||||
EMAIL_HOST = 'smtp.gmail.com'
|
EMAIL_HOST = 'smtp.gmail.com'
|
||||||
EMAIL_PORT = 587
|
EMAIL_PORT = 587
|
||||||
@@ -121,6 +121,8 @@ else:
|
|||||||
# Database
|
# Database
|
||||||
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
|
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if DEBUG:
|
if DEBUG:
|
||||||
DATABASES = {
|
DATABASES = {
|
||||||
'default': {
|
'default': {
|
||||||
|
|||||||
@@ -9,21 +9,36 @@ from django.http import HttpResponse
|
|||||||
from django.test import SimpleTestCase, override_settings
|
from django.test import SimpleTestCase, override_settings
|
||||||
from rest_framework.authtoken.views import obtain_auth_token
|
from rest_framework.authtoken.views import obtain_auth_token
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def response_error_handler(request, exception=None):
|
def response_error_handler(request, exception=None):
|
||||||
context={}
|
context={}
|
||||||
|
|
||||||
return render(request, '403.html',context,status=403)
|
return render(request, '403.html',context,status=403)
|
||||||
|
|
||||||
|
def response_error_handler_404(request,exception=None):
|
||||||
|
|
||||||
|
return render(request,'404.html',status=404)
|
||||||
|
|
||||||
def permission_denied_view(request):
|
def permission_denied_view(request):
|
||||||
|
|
||||||
raise PermissionDenied
|
raise PermissionDenied
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('admin/', admin.site.urls),
|
path('admin/', admin.site.urls),
|
||||||
path('accounts/', include('allauth.urls')),
|
path('accounts/', include('allauth.urls')),
|
||||||
path('DRF_Token/', obtain_auth_token, name='DRF_Token'),
|
path('DRF_Token/', obtain_auth_token, name='DRF_Token'),
|
||||||
path('', include('Clientes.urls')),
|
path('', include('Clientes.urls')),
|
||||||
path('403/', permission_denied_view),
|
path('403/', permission_denied_view),
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
handler403 = response_error_handler
|
handler403 = response_error_handler
|
||||||
|
handler404 = response_error_handler_404
|
||||||
|
|
||||||
if settings.DEBUG: #DEV only
|
if settings.DEBUG: #DEV only
|
||||||
urlpatterns += static(settings.STATIC_URL, document_root= settings.STATIC_ROOT)
|
urlpatterns += static(settings.STATIC_URL, document_root= settings.STATIC_ROOT)
|
||||||
@@ -32,8 +47,9 @@ if settings.DEBUG: #DEV only
|
|||||||
# ROOT_URLCONF must specify the module that contains handler403 = ...
|
# ROOT_URLCONF must specify the module that contains handler403 = ...
|
||||||
@override_settings(ROOT_URLCONF=__name__)
|
@override_settings(ROOT_URLCONF=__name__)
|
||||||
class CustomErrorHandlerTests(SimpleTestCase):
|
class CustomErrorHandlerTests(SimpleTestCase):
|
||||||
|
|
||||||
def test_handler_renders_template_response(self):
|
def test_handler_renders_template_response(self):
|
||||||
response = self.client.get('/403/')
|
response = self.client.get('/403/')
|
||||||
|
|
||||||
# Make assertions on the response here. For example:
|
# Make assertions on the response here. For example:
|
||||||
self.assertContains(response, 'Error handler content', status_code=403)
|
self.assertContains(response, 'Error handler content', status_code=403)
|
||||||
|
|
||||||
|
|||||||
@@ -40,11 +40,13 @@ class Clientes(models.Model):
|
|||||||
fecha_baja = models.DateField(blank=True,null=True)
|
fecha_baja = models.DateField(blank=True,null=True)
|
||||||
email = models.EmailField(max_length=254, blank=True)
|
email = models.EmailField(max_length=254, blank=True)
|
||||||
conteo_mes = models.IntegerField(blank=True,null=True,default=0)
|
conteo_mes = models.IntegerField(blank=True,null=True,default=0)
|
||||||
def timbres_X_MES(self, mes=None):
|
def timbres_X_MES(self, mes=None, year=None):
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
year = today.year
|
if year is None:
|
||||||
|
year = today.year
|
||||||
if mes==None:
|
if mes==None:
|
||||||
mes = today.month
|
mes = today.month
|
||||||
|
|
||||||
dat = datetime.datetime(int(year),int(mes),1)
|
dat = datetime.datetime(int(year),int(mes),1)
|
||||||
if dat.month in (1,3,5,7,8,10,12):#31
|
if dat.month in (1,3,5,7,8,10,12):#31
|
||||||
findate = dat + datetime.timedelta(days=30)
|
findate = dat + datetime.timedelta(days=30)
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from .views import (
|
|||||||
Retrive_Cliente_Email,
|
Retrive_Cliente_Email,
|
||||||
PACS_Retrive_RFCS,
|
PACS_Retrive_RFCS,
|
||||||
|
|
||||||
|
|
||||||
#API DRF
|
#API DRF
|
||||||
saldo_funct2,
|
saldo_funct2,
|
||||||
add_timbre2,
|
add_timbre2,
|
||||||
@@ -31,4 +32,6 @@ urlpatterns = [
|
|||||||
path('check_host/',check_host.as_view(),name='check_host'),
|
path('check_host/',check_host.as_view(),name='check_host'),
|
||||||
path('emails_cliente/',Retrive_Cliente_Email, name='Retrive_Cliente_Email'),
|
path('emails_cliente/',Retrive_Cliente_Email, name='Retrive_Cliente_Email'),
|
||||||
path('pacs/list/',PACS_Retrive_RFCS,name='PACS_Retrive_RFCS'),
|
path('pacs/list/',PACS_Retrive_RFCS,name='PACS_Retrive_RFCS'),
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
@@ -164,6 +164,10 @@ 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)
|
||||||
today = datetime.date.today()
|
today = datetime.date.today()
|
||||||
|
|
||||||
|
year = request.GET.get('year',None)
|
||||||
|
if year is None or year =='None':
|
||||||
|
year= today.year
|
||||||
if mes is None or mes =='None':
|
if mes is None or mes =='None':
|
||||||
mes = today.month
|
mes = today.month
|
||||||
page = request.GET.get('page', 1)
|
page = request.GET.get('page', 1)
|
||||||
@@ -174,6 +178,7 @@ def index(request):
|
|||||||
filters.pop('datepicker','')
|
filters.pop('datepicker','')
|
||||||
filters.pop('datepickerFin','')
|
filters.pop('datepickerFin','')
|
||||||
filters.pop('mes','')
|
filters.pop('mes','')
|
||||||
|
filters.pop('year','')
|
||||||
print('filters------',filters)
|
print('filters------',filters)
|
||||||
if rfcc and search:
|
if rfcc and search:
|
||||||
clientes_list = Clientes.objects.filter(Q(RFC__icontains=search))
|
clientes_list = Clientes.objects.filter(Q(RFC__icontains=search))
|
||||||
@@ -184,7 +189,7 @@ def index(request):
|
|||||||
while met:
|
while met:
|
||||||
try:
|
try:
|
||||||
c = next(met)
|
c = next(met)
|
||||||
c.timbres_X_MES(mes=mes)
|
c.timbres_X_MES(mes=mes,year=year)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
break
|
break
|
||||||
|
|
||||||
@@ -193,6 +198,7 @@ def index(request):
|
|||||||
context = {
|
context = {
|
||||||
'lista':clientes_list,
|
'lista':clientes_list,
|
||||||
'mes':mes,
|
'mes':mes,
|
||||||
|
'year':year,
|
||||||
'filters':filters,
|
'filters':filters,
|
||||||
'emailForm':EmailForm(),
|
'emailForm':EmailForm(),
|
||||||
}
|
}
|
||||||
@@ -231,8 +237,6 @@ def timbres_cliente(request, RFC):
|
|||||||
if PAC is not None and PAC !='00':
|
if PAC is not None and PAC !='00':
|
||||||
lista = lista.filter(rfcp=PAC)
|
lista = lista.filter(rfcp=PAC)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
filters = {key:value[0] for (key,value) in dict(request.GET).items() if value !=[""]}
|
filters = {key:value[0] for (key,value) in dict(request.GET).items() if value !=[""]}
|
||||||
|
|
||||||
filters.pop('page', '')
|
filters.pop('page', '')
|
||||||
@@ -258,7 +262,6 @@ def timbres_cliente(request, RFC):
|
|||||||
end = datetime.datetime(fin[0],fin[1],fin[2])
|
end = datetime.datetime(fin[0],fin[1],fin[2])
|
||||||
|
|
||||||
end += datetime.timedelta(days=1)
|
end += datetime.timedelta(days=1)
|
||||||
|
|
||||||
#print('start',start, 'end',end)
|
#print('start',start, 'end',end)
|
||||||
lista = lista.filter(created_at__range=[start, end])
|
lista = lista.filter(created_at__range=[start, end])
|
||||||
|
|
||||||
@@ -358,9 +361,10 @@ def Retrive_Cliente_Email(request):
|
|||||||
#@is_staff_access()
|
#@is_staff_access()
|
||||||
def PACS_Retrive_RFCS(request):
|
def PACS_Retrive_RFCS(request):
|
||||||
timbres = {}
|
timbres = {}
|
||||||
|
status = 200
|
||||||
if request.method == 'GET':
|
if request.method == 'GET':
|
||||||
RFC= request.GET.get('RFC','')
|
RFC= request.GET.get('RFC','')
|
||||||
status = 200
|
|
||||||
if RFC !='':
|
if RFC !='':
|
||||||
timbres =list(Timbres.objects.values('rfcp').filter(rfcc__in=[RFC]))
|
timbres =list(Timbres.objects.values('rfcp').filter(rfcc__in=[RFC]))
|
||||||
else:
|
else:
|
||||||
@@ -369,6 +373,8 @@ def PACS_Retrive_RFCS(request):
|
|||||||
status=403
|
status=403
|
||||||
return JsonResponse({'PACS':timbres},status=status)
|
return JsonResponse({'PACS':timbres},status=status)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#-----------------------------------API VIEWS
|
#-----------------------------------API VIEWS
|
||||||
#--------------------------------------------
|
#--------------------------------------------
|
||||||
from rest_framework import status
|
from rest_framework import status
|
||||||
@@ -450,7 +456,6 @@ class ErroresTimbresListView(LoginRequiredMixin,ListView):
|
|||||||
paginate_by = 100
|
paginate_by = 100
|
||||||
template_name = 'Clientes/Errores_Timbres_list.html'
|
template_name = 'Clientes/Errores_Timbres_list.html'
|
||||||
|
|
||||||
|
|
||||||
class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
||||||
model= Clientes
|
model= Clientes
|
||||||
form_class=ClienteForm
|
form_class=ClienteForm
|
||||||
|
|||||||
1
Templates/404.html
Normal file
1
Templates/404.html
Normal file
@@ -0,0 +1 @@
|
|||||||
|
no hay
|
||||||
@@ -19,10 +19,12 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
<th>Nombre</th>
|
<th>Nombre</th>
|
||||||
<th>
|
<th>
|
||||||
<div class="d-flex align-items-center">
|
<div class="d-flex align-items-center">
|
||||||
Totales Mes
|
Total x mes
|
||||||
<div style="display:none" id="spinner_id" class="spinner-border ml-auto spinner-border-sm" role="status" aria-hidden="true"></div>
|
<div style="display:none;" id="spinner_id" class="spinner-border ml-auto spinner-border-sm" role="status" aria-hidden="true"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<select style="display:inline" id="table_select_anio" class="form-control form-control-sm">
|
||||||
|
<!--option value="0"></option-->
|
||||||
|
</select>
|
||||||
<select id="table_select" class="form-control form-control-sm">
|
<select id="table_select" class="form-control form-control-sm">
|
||||||
<option value="01">Enero</option>
|
<option value="01">Enero</option>
|
||||||
<option value="02">Febrero</option>
|
<option value="02">Febrero</option>
|
||||||
@@ -137,7 +139,7 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id='id_filters' style="display: none;">{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}</div>
|
<div id='id_filters' style="display: inline;">{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- Modal EMAIL-->
|
<!-- Modal EMAIL-->
|
||||||
@@ -167,7 +169,6 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="subject"><strong> Subject </strong></label>
|
<label for="subject"><strong> Subject </strong></label>
|
||||||
@@ -262,7 +263,7 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
}
|
}
|
||||||
const re = Object.values(data['data'])
|
const re = Object.values(data['data'])
|
||||||
re.forEach((val,index)=>{
|
re.forEach((val,index)=>{
|
||||||
console.log('val',val.email, index)
|
|
||||||
const row = document.createElement("tr")
|
const row = document.createElement("tr")
|
||||||
row.setAttribute("class","table_row")
|
row.setAttribute("class","table_row")
|
||||||
const cell = document.createElement("td")
|
const cell = document.createElement("td")
|
||||||
@@ -281,15 +282,15 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
email_add.value=event.target.textContent
|
email_add.value=event.target.textContent
|
||||||
close_emails_list.click()
|
close_emails_list.click()
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
})//.then(data)
|
})//.then(data)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let filters = document.getElementById('id_filters').textContent
|
let filters = document.getElementById('id_filters').textContent
|
||||||
|
let mes ='{{mes}}'
|
||||||
|
let year = parseInt('{{year}}')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function aclick(event,RFC ,cuantos){
|
function aclick(event,RFC ,cuantos){
|
||||||
|
|
||||||
@@ -303,30 +304,64 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
|
|
||||||
table_rfcc.addEventListener('click',(event)=>{
|
table_rfcc.addEventListener('click',(event)=>{
|
||||||
document.getElementById('rfcc').checked= table_rfcc.checked? true:false;
|
document.getElementById('rfcc').checked= table_rfcc.checked? true:false;
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
window.addEventListener("load", (event)=>{
|
window.addEventListener("load", (event)=>{
|
||||||
let mes ='{{mes}}'
|
// let mes ='{{mes}}'
|
||||||
|
|
||||||
|
mes.length == 1 ? mes="0"+mes: mes
|
||||||
if(mes !="None"){
|
if(mes !="None"){
|
||||||
document.getElementById('table_select').value='{{mes}}'
|
document.getElementById('table_select').value=mes
|
||||||
mes_id.value='{{mes}}'
|
mes_id.value=mes
|
||||||
}else{
|
}else{
|
||||||
document.getElementById('table_select').value='{{fecha|date:"m"}}'
|
document.getElementById('table_select').value='{{fecha|date:"m"}}'
|
||||||
mes_id.value='{{fecha|date:"m"}}'
|
mes_id.value='{{fecha|date:"m"}}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*Add years to select anio tag*/
|
||||||
|
|
||||||
|
let anio = parseInt('{{fecha|date:"Y"}}')
|
||||||
|
|
||||||
|
let fin = anio-5
|
||||||
|
for(var i = anio; i >= fin ;i--){
|
||||||
|
let option = document.createElement('option')
|
||||||
|
option.value=i
|
||||||
|
option.text=i
|
||||||
|
table_select_anio.add(option)
|
||||||
|
}
|
||||||
|
/*despues de agregar los anios al control agrega el value del contexto*/
|
||||||
|
table_select_anio.value=year
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
document.getElementById('table_select').addEventListener('change',(event)=>{
|
document.getElementById('table_select').addEventListener('change',(event)=>{
|
||||||
spinner_id.setAttribute('style','display:inline;')
|
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}`
|
|
||||||
anc.href=url
|
let url = `?mes=${event.target.value}&year=${year}${filters}`
|
||||||
anc.click()
|
|
||||||
|
setTimeout(()=>{
|
||||||
|
anc.href=url
|
||||||
|
anc.click()
|
||||||
|
},1000)
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
table_select_anio.addEventListener('change',(event)=>{
|
||||||
|
spinner_id.setAttribute('style','display:inline;')
|
||||||
|
|
||||||
|
let anc = document.getElementById('home_id')
|
||||||
|
anc.href=''
|
||||||
|
|
||||||
|
let url = `?mes=${mes}&year=${event.target.value}${filters}`
|
||||||
|
|
||||||
|
setTimeout(()=>{
|
||||||
|
anc.href=url
|
||||||
|
anc.click()
|
||||||
|
},1000)
|
||||||
})
|
})
|
||||||
|
|
||||||
enviar_btn.addEventListener('click',(e)=>{
|
enviar_btn.addEventListener('click',(e)=>{
|
||||||
@@ -334,12 +369,7 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
|||||||
if(id_form.checkValidity()){
|
if(id_form.checkValidity()){
|
||||||
//
|
//
|
||||||
spinner_enviar.removeAttribute('style');
|
spinner_enviar.removeAttribute('style');
|
||||||
/*
|
|
||||||
id_form.getElementsByTagName('*');
|
|
||||||
for (var node of childNodes) {
|
|
||||||
node.disabled = true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -18,16 +18,6 @@
|
|||||||
<div id="dates" style="display:none;" class="group-form mr-2" >
|
<div id="dates" style="display:none;" class="group-form mr-2" >
|
||||||
<input type="date" class="form-control sm-2 my_event_cls" name ="datepicker" id="datepicker" placeholder="Initial Date" />
|
<input type="date" class="form-control sm-2 my_event_cls" name ="datepicker" id="datepicker" placeholder="Initial Date" />
|
||||||
<input type="date" class="form-control sm-2 my_event_cls" name ="datepickerFin" id="datepickerFin" placeholder="End Date" />
|
<input type="date" class="form-control sm-2 my_event_cls" name ="datepickerFin" id="datepickerFin" placeholder="End Date" />
|
||||||
<script>
|
|
||||||
/*
|
|
||||||
$('#datepicker').datepicker({
|
|
||||||
uiLibrary: 'bootstrap4'
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#datepickerFin').datepicker({
|
|
||||||
uiLibrary: 'bootstrap4'
|
|
||||||
});*/
|
|
||||||
</script>
|
|
||||||
</div>
|
</div>
|
||||||
<button id="id_searchbtn" class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
<button id="id_searchbtn" class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||||
</form>
|
</form>
|
||||||
Reference in New Issue
Block a user