reset password
This commit is contained in:
@@ -13,8 +13,10 @@ BASE_DIR = Path(__file__).resolve().parent.parent
|
|||||||
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
|
# See https://docs.djangoproject.com/en/4.1/howto/deployment/checklist/
|
||||||
# SECURITY WARNING: keep the secret key used in production secret!
|
# SECURITY WARNING: keep the secret key used in production secret!
|
||||||
SECRET_KEY = os.getenv("adminAS_KEY")
|
SECRET_KEY = os.getenv("adminAS_KEY")
|
||||||
|
|
||||||
# SECURITY WARNING: don't run with debug turned on in production!
|
# SECURITY WARNING: don't run with debug turned on in production!
|
||||||
DEBUG = False
|
DEBUG = False
|
||||||
|
|
||||||
ALLOWED_HOSTS = ['*']
|
ALLOWED_HOSTS = ['*']
|
||||||
# Application definition
|
# Application definition
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
@@ -96,7 +98,7 @@ ACCOUNT_SIGNUP_REDIRECT_URL =LOGIN_REDIRECT_URL
|
|||||||
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
|
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
|
||||||
|
|
||||||
EMAIL_TIMEOUT = 10
|
EMAIL_TIMEOUT = 10
|
||||||
#EMAIL_USE_TLS = True
|
EMAIL_USE_TLS = False
|
||||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||||
EMAIL_HOST = 'secure.emailsrvr.com'
|
EMAIL_HOST = 'secure.emailsrvr.com'
|
||||||
EMAIL_PORT = 465
|
EMAIL_PORT = 465
|
||||||
|
|||||||
@@ -1,3 +1,56 @@
|
|||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
|
from django.urls import reverse
|
||||||
|
|
||||||
# Create your tests here.
|
from django.contrib.auth.models import User
|
||||||
|
from .models import Clientes
|
||||||
|
|
||||||
|
class ClientesTests(TestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
test_user = User.objects.create_user(username='testuser1',password='Soluciones28@')
|
||||||
|
test_user.save()
|
||||||
|
|
||||||
|
cls.cliente = Clientes.objects.create(
|
||||||
|
RFC="SCT050708EB2",
|
||||||
|
Nombre="Aduanasoft",
|
||||||
|
Activo=True,
|
||||||
|
#fecha_baja="2022-12-20",
|
||||||
|
email="fjrodriguez28@gmail.com",
|
||||||
|
conteo_mes=12,
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def test_redirect_if_not_logged_in(self):
|
||||||
|
response = self.client.get(reverse('index'))
|
||||||
|
self.assertRedirects(response, '/accounts/login/?next=/')
|
||||||
|
|
||||||
|
def test_cliente_content(self):
|
||||||
|
self.assertEqual(self.cliente.RFC,"SCT050708EB2")
|
||||||
|
self.assertEqual(self.cliente.Nombre,"Aduanasoft")
|
||||||
|
self.assertEqual(self.cliente.Activo,True)
|
||||||
|
#self.assertEqual(self.cliente.fecha_baja,"2022-12-20")
|
||||||
|
self.assertEqual(self.cliente.email,"fjrodriguez28@gmail.com")
|
||||||
|
self.assertEqual(self.cliente.conteo_mes,12)
|
||||||
|
|
||||||
|
#test for login user view and contains client with RFC SCT...
|
||||||
|
def test_cliente_login_cliente_listview(self):
|
||||||
|
login = self.client.login(username='testuser1',password='Soluciones28@')
|
||||||
|
response = self.client.get(reverse('index'))
|
||||||
|
|
||||||
|
self.assertEqual(str(response.context['user']), 'testuser1')
|
||||||
|
|
||||||
|
self.assertEqual(response.status_code,200)
|
||||||
|
self.assertContains(response, "SCT050708EB2")
|
||||||
|
self.assertTemplateUsed(response, "Clientes/index.html")
|
||||||
|
|
||||||
|
#---------------_APIs Views Tests
|
||||||
|
from rest_framework import status
|
||||||
|
from rest_framework.test import APITestCase, APIClient
|
||||||
|
|
||||||
|
class APITests(APITestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def test_api_check_RFC(self):
|
||||||
|
pass
|
||||||
@@ -4,6 +4,7 @@ from .views import (
|
|||||||
timbres_cliente,
|
timbres_cliente,
|
||||||
ClientesUpdateView,
|
ClientesUpdateView,
|
||||||
ClientesCreateView,
|
ClientesCreateView,
|
||||||
|
ErroresTimbresListView,
|
||||||
export_Excel,
|
export_Excel,
|
||||||
send_timbres_Email,
|
send_timbres_Email,
|
||||||
Retrive_Cliente_Email,
|
Retrive_Cliente_Email,
|
||||||
@@ -22,6 +23,7 @@ urlpatterns = [
|
|||||||
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
|
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
|
||||||
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'),
|
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_cliente'),
|
||||||
path('cliente/add/', ClientesCreateView.as_view(), name='add_cliente'),
|
path('cliente/add/', ClientesCreateView.as_view(), name='add_cliente'),
|
||||||
|
path('errores/timbres/list/', ErroresTimbresListView.as_view(), name='ErroresTimbresList'),
|
||||||
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'),
|
path('send_timbres_cliente/',send_timbres_Email, name='send_timbres_Email'),
|
||||||
path('getActivoRFC/', check_RFC.as_view(), name='check_active_RFC'),
|
path('getActivoRFC/', check_RFC.as_view(), name='check_active_RFC'),
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ from django.contrib.auth.decorators import login_required
|
|||||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||||
from django.db.models import Q
|
from django.db.models import Q
|
||||||
from django.views.generic.edit import CreateView,UpdateView
|
from django.views.generic.edit import CreateView,UpdateView
|
||||||
|
from django.views.generic.list import ListView
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||||
|
|
||||||
from .custom_decorators import is_staff_access, http_basic_auth
|
from .custom_decorators import is_staff_access, http_basic_auth
|
||||||
@@ -357,16 +358,22 @@ def PACS_Retrive_RFCS(request):
|
|||||||
|
|
||||||
#-----------------------------------API VIEWS
|
#-----------------------------------API VIEWS
|
||||||
#--------------------------------------------
|
#--------------------------------------------
|
||||||
|
from rest_framework import status
|
||||||
class check_RFC(APIView):
|
class check_RFC(APIView):
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
def get(self,request):
|
def get(self,request):
|
||||||
rfc = request.GET.get('RFC', None)
|
rfc = request.GET.get('RFC', None)
|
||||||
cliente, created = Clientes.objects.get_or_create(RFC=rfc)
|
try:
|
||||||
if created:
|
cliente, created = Clientes.objects.get_or_create(RFC=rfc)
|
||||||
cliente.Activo=True
|
serializer = ClienteSerializer(cliente)
|
||||||
cliente.save()
|
if not serializer.is_valid:
|
||||||
serializer = ClienteSerializer(cliente)
|
return Response(serializer.errors,status=400)
|
||||||
return Response(serializer.data)
|
if created:
|
||||||
|
cliente.Activo=True
|
||||||
|
cliente.save()
|
||||||
|
return Response(serializer.data)
|
||||||
|
except Exception as E:
|
||||||
|
return Response({'Error':f'check_RFC:{E} RFC:{rfc}','isError':True})
|
||||||
|
|
||||||
class add_timbre2(APIView):
|
class add_timbre2(APIView):
|
||||||
permission_classes = (IsAuthenticated,)
|
permission_classes = (IsAuthenticated,)
|
||||||
@@ -400,7 +407,7 @@ class add_timbre2(APIView):
|
|||||||
folio=folio,
|
folio=folio,
|
||||||
modo=modo
|
modo=modo
|
||||||
)
|
)
|
||||||
return Response({'fok':f'{e}'})
|
return Response({'Error':f'{e}'})
|
||||||
|
|
||||||
class saldo_funct2(APIView):
|
class saldo_funct2(APIView):
|
||||||
permission_classes =(IsAuthenticated,)
|
permission_classes =(IsAuthenticated,)
|
||||||
@@ -425,6 +432,12 @@ class check_host(APIView):
|
|||||||
|
|
||||||
#---------------------------CLASS BASED VIEWS
|
#---------------------------CLASS BASED VIEWS
|
||||||
#--------------------------------------------
|
#--------------------------------------------
|
||||||
|
class ErroresTimbresListView(LoginRequiredMixin,ListView):
|
||||||
|
model = ErroresTimbres
|
||||||
|
paginate_by = 100
|
||||||
|
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
|
||||||
|
|||||||
69
Templates/Clientes/Errores_Timbres_list.html
Normal file
69
Templates/Clientes/Errores_Timbres_list.html
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<div class="table-responsive-sm">
|
||||||
|
<table class="table">
|
||||||
|
<thead class="thead-dark">
|
||||||
|
<tr>
|
||||||
|
<th scope="col">UUID</th>
|
||||||
|
<th scope="col">Error</th>
|
||||||
|
<th scope="col">RCF</th>
|
||||||
|
<th scope="col">Folio</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for errTimbre in object_list %}
|
||||||
|
<tr class="{% if errTimbre.modo|lower == 'prueba' %}table-danger{% endif %}">
|
||||||
|
<th scope="row">{{errTimbre.uuid}}</th>
|
||||||
|
<td>{{errTimbre.description}}</td>
|
||||||
|
<td>{{errTimbre.rfcc}}</td>
|
||||||
|
<td>{{errTimbre.folio}}</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% if page_obj.has_other_pages %}
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<ul class="pagination justify-content-center">
|
||||||
|
{% if page_obj.has_previous %}
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?page={{ page_obj.previous_page_number }}{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}" aria-label="Previous">
|
||||||
|
<span aria-hidden="true">«</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled">
|
||||||
|
<span class="page-link" aria-hidden="true">«</span>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% for p in page_obj.paginator.page_range %}
|
||||||
|
{% if page_obj.number == p %}
|
||||||
|
<li class="page-item"><a class="page-link" style="color: red;" href="#">{{ p }}</a></li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item"><a class="page-link" href="?page={{ p }}{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}">{{ p }}</a></li>
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
|
{% if page_obj.has_next %}
|
||||||
|
<li class="page-item">
|
||||||
|
<a class="page-link" href="?page={{ page_obj.next_page_number }}{% for i,v in filters.items %}&{{i}}={{v}}{% endfor%}" aria-label="Next">
|
||||||
|
<span aria-hidden="true">»</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
{% else %}
|
||||||
|
<li class="page-item disabled">
|
||||||
|
<span class="page-link" aria-hidden="true">»</span>
|
||||||
|
</li>
|
||||||
|
{% endif %}
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
{% endblock content %}
|
||||||
|
|
||||||
@@ -43,7 +43,9 @@
|
|||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<p>No recuerdas tu contrasena? <a href="/accounts/password/reset/">Reset password</a></p>
|
||||||
|
</div>
|
||||||
{% comment %}
|
{% comment %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<p>Don't have an account? <a href="{{ signup_url }}">Register Here</a></p>
|
<p>Don't have an account? <a href="{{ signup_url }}">Register Here</a></p>
|
||||||
|
|||||||
@@ -37,4 +37,3 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
|
||||||
@@ -61,14 +61,13 @@
|
|||||||
</form>
|
</form>
|
||||||
<div class="dropdown-divider"></div>
|
<div class="dropdown-divider"></div>
|
||||||
|
|
||||||
<a class="dropdown-item" href="#">Another action</a>
|
{% if request.user.is_superuser %}
|
||||||
<div class="dropdown-divider"></div>
|
<a class="dropdown-item" href="{% url 'ErroresTimbresList' %}">Lista Errores</a>
|
||||||
<a class="dropdown-item" href="#">Something else here</a>
|
<div class="dropdown-divider"></div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<a class="dropdown-item" href="#">Something else here</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
Reference in New Issue
Block a user