year added to index view
This commit is contained in:
@@ -102,7 +102,7 @@ ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
|
||||
EMAIL_TIMEOUT = 10
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_SUBJECT_PREFIX = 'AS Timbres'
|
||||
if DEBUG:
|
||||
if DEBUG :
|
||||
EMAIL_USE_TLS = True
|
||||
EMAIL_HOST = 'smtp.gmail.com'
|
||||
EMAIL_PORT = 587
|
||||
@@ -121,6 +121,8 @@ else:
|
||||
# Database
|
||||
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
|
||||
|
||||
|
||||
|
||||
if DEBUG:
|
||||
DATABASES = {
|
||||
'default': {
|
||||
|
||||
@@ -9,21 +9,36 @@ from django.http import HttpResponse
|
||||
from django.test import SimpleTestCase, override_settings
|
||||
from rest_framework.authtoken.views import obtain_auth_token
|
||||
|
||||
|
||||
|
||||
def response_error_handler(request, exception=None):
|
||||
context={}
|
||||
|
||||
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):
|
||||
|
||||
raise PermissionDenied
|
||||
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path('admin/', admin.site.urls),
|
||||
path('accounts/', include('allauth.urls')),
|
||||
path('DRF_Token/', obtain_auth_token, name='DRF_Token'),
|
||||
path('', include('Clientes.urls')),
|
||||
path('403/', permission_denied_view),
|
||||
|
||||
|
||||
|
||||
|
||||
]
|
||||
handler403 = response_error_handler
|
||||
handler404 = response_error_handler_404
|
||||
|
||||
if settings.DEBUG: #DEV only
|
||||
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 = ...
|
||||
@override_settings(ROOT_URLCONF=__name__)
|
||||
class CustomErrorHandlerTests(SimpleTestCase):
|
||||
|
||||
def test_handler_renders_template_response(self):
|
||||
response = self.client.get('/403/')
|
||||
|
||||
# Make assertions on the response here. For example:
|
||||
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)
|
||||
email = models.EmailField(max_length=254, blank=True)
|
||||
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()
|
||||
if year is None:
|
||||
year = today.year
|
||||
if mes==None:
|
||||
mes = today.month
|
||||
|
||||
dat = datetime.datetime(int(year),int(mes),1)
|
||||
if dat.month in (1,3,5,7,8,10,12):#31
|
||||
findate = dat + datetime.timedelta(days=30)
|
||||
|
||||
@@ -10,6 +10,7 @@ from .views import (
|
||||
Retrive_Cliente_Email,
|
||||
PACS_Retrive_RFCS,
|
||||
|
||||
|
||||
#API DRF
|
||||
saldo_funct2,
|
||||
add_timbre2,
|
||||
@@ -31,4 +32,6 @@ urlpatterns = [
|
||||
path('check_host/',check_host.as_view(),name='check_host'),
|
||||
path('emails_cliente/',Retrive_Cliente_Email, name='Retrive_Cliente_Email'),
|
||||
path('pacs/list/',PACS_Retrive_RFCS,name='PACS_Retrive_RFCS'),
|
||||
|
||||
|
||||
]
|
||||
@@ -164,6 +164,10 @@ def index(request):
|
||||
clientes_list = Clientes.objects.all()
|
||||
mes = request.GET.get('mes', None)
|
||||
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':
|
||||
mes = today.month
|
||||
page = request.GET.get('page', 1)
|
||||
@@ -174,6 +178,7 @@ def index(request):
|
||||
filters.pop('datepicker','')
|
||||
filters.pop('datepickerFin','')
|
||||
filters.pop('mes','')
|
||||
filters.pop('year','')
|
||||
print('filters------',filters)
|
||||
if rfcc and search:
|
||||
clientes_list = Clientes.objects.filter(Q(RFC__icontains=search))
|
||||
@@ -184,7 +189,7 @@ def index(request):
|
||||
while met:
|
||||
try:
|
||||
c = next(met)
|
||||
c.timbres_X_MES(mes=mes)
|
||||
c.timbres_X_MES(mes=mes,year=year)
|
||||
except StopIteration:
|
||||
break
|
||||
|
||||
@@ -193,6 +198,7 @@ def index(request):
|
||||
context = {
|
||||
'lista':clientes_list,
|
||||
'mes':mes,
|
||||
'year':year,
|
||||
'filters':filters,
|
||||
'emailForm':EmailForm(),
|
||||
}
|
||||
@@ -231,8 +237,6 @@ def timbres_cliente(request, RFC):
|
||||
if PAC is not None and PAC !='00':
|
||||
lista = lista.filter(rfcp=PAC)
|
||||
|
||||
|
||||
|
||||
filters = {key:value[0] for (key,value) in dict(request.GET).items() if value !=[""]}
|
||||
|
||||
filters.pop('page', '')
|
||||
@@ -258,7 +262,6 @@ def timbres_cliente(request, RFC):
|
||||
end = datetime.datetime(fin[0],fin[1],fin[2])
|
||||
|
||||
end += datetime.timedelta(days=1)
|
||||
|
||||
#print('start',start, 'end',end)
|
||||
lista = lista.filter(created_at__range=[start, end])
|
||||
|
||||
@@ -358,9 +361,10 @@ def Retrive_Cliente_Email(request):
|
||||
#@is_staff_access()
|
||||
def PACS_Retrive_RFCS(request):
|
||||
timbres = {}
|
||||
status = 200
|
||||
if request.method == 'GET':
|
||||
RFC= request.GET.get('RFC','')
|
||||
status = 200
|
||||
|
||||
if RFC !='':
|
||||
timbres =list(Timbres.objects.values('rfcp').filter(rfcc__in=[RFC]))
|
||||
else:
|
||||
@@ -369,6 +373,8 @@ def PACS_Retrive_RFCS(request):
|
||||
status=403
|
||||
return JsonResponse({'PACS':timbres},status=status)
|
||||
|
||||
|
||||
|
||||
#-----------------------------------API VIEWS
|
||||
#--------------------------------------------
|
||||
from rest_framework import status
|
||||
@@ -450,7 +456,6 @@ class ErroresTimbresListView(LoginRequiredMixin,ListView):
|
||||
paginate_by = 100
|
||||
template_name = 'Clientes/Errores_Timbres_list.html'
|
||||
|
||||
|
||||
class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
||||
model= Clientes
|
||||
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>
|
||||
<div class="d-flex align-items-center">
|
||||
Totales Mes
|
||||
<div style="display:none" id="spinner_id" class="spinner-border ml-auto spinner-border-sm" role="status" aria-hidden="true"></div>
|
||||
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>
|
||||
|
||||
<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">
|
||||
<option value="01">Enero</option>
|
||||
<option value="02">Febrero</option>
|
||||
@@ -137,7 +139,7 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
||||
</table>
|
||||
</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-->
|
||||
@@ -167,7 +169,6 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="subject"><strong> Subject </strong></label>
|
||||
@@ -262,7 +263,7 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
||||
}
|
||||
const re = Object.values(data['data'])
|
||||
re.forEach((val,index)=>{
|
||||
console.log('val',val.email, index)
|
||||
|
||||
const row = document.createElement("tr")
|
||||
row.setAttribute("class","table_row")
|
||||
const cell = document.createElement("td")
|
||||
@@ -281,15 +282,15 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
||||
email_add.value=event.target.textContent
|
||||
close_emails_list.click()
|
||||
})
|
||||
|
||||
})
|
||||
})//.then(data)
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
let filters = document.getElementById('id_filters').textContent
|
||||
let mes ='{{mes}}'
|
||||
let year = parseInt('{{year}}')
|
||||
|
||||
|
||||
|
||||
function aclick(event,RFC ,cuantos){
|
||||
|
||||
@@ -303,30 +304,64 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
||||
|
||||
table_rfcc.addEventListener('click',(event)=>{
|
||||
document.getElementById('rfcc').checked= table_rfcc.checked? true:false;
|
||||
|
||||
})
|
||||
|
||||
|
||||
|
||||
window.addEventListener("load", (event)=>{
|
||||
let mes ='{{mes}}'
|
||||
// let mes ='{{mes}}'
|
||||
|
||||
mes.length == 1 ? mes="0"+mes: mes
|
||||
if(mes !="None"){
|
||||
document.getElementById('table_select').value='{{mes}}'
|
||||
mes_id.value='{{mes}}'
|
||||
document.getElementById('table_select').value=mes
|
||||
mes_id.value=mes
|
||||
}else{
|
||||
document.getElementById('table_select').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)=>{
|
||||
spinner_id.setAttribute('style','display:inline;')
|
||||
|
||||
let anc = document.getElementById('home_id')
|
||||
anc.href=''
|
||||
let url = `?mes=${event.target.value}${filters}`
|
||||
|
||||
let url = `?mes=${event.target.value}&year=${year}${filters}`
|
||||
|
||||
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)=>{
|
||||
@@ -334,12 +369,7 @@ Timbres disponibles Comercio Digital: {{saldo}}
|
||||
if(id_form.checkValidity()){
|
||||
//
|
||||
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" >
|
||||
<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" />
|
||||
<script>
|
||||
/*
|
||||
$('#datepicker').datepicker({
|
||||
uiLibrary: 'bootstrap4'
|
||||
});
|
||||
|
||||
$('#datepickerFin').datepicker({
|
||||
uiLibrary: 'bootstrap4'
|
||||
});*/
|
||||
</script>
|
||||
</div>
|
||||
<button id="id_searchbtn" class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
|
||||
</form>
|
||||
Reference in New Issue
Block a user