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/
|
||||
# SECURITY WARNING: keep the secret key used in production secret!
|
||||
SECRET_KEY = os.getenv("adminAS_KEY")
|
||||
|
||||
# SECURITY WARNING: don't run with debug turned on in production!
|
||||
DEBUG = False
|
||||
|
||||
ALLOWED_HOSTS = ['*']
|
||||
# Application definition
|
||||
INSTALLED_APPS = [
|
||||
@@ -96,7 +98,7 @@ ACCOUNT_SIGNUP_REDIRECT_URL =LOGIN_REDIRECT_URL
|
||||
ACCOUNT_LOGOUT_ON_PASSWORD_CHANGE = True
|
||||
|
||||
EMAIL_TIMEOUT = 10
|
||||
#EMAIL_USE_TLS = True
|
||||
EMAIL_USE_TLS = False
|
||||
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
|
||||
EMAIL_HOST = 'secure.emailsrvr.com'
|
||||
EMAIL_PORT = 465
|
||||
|
||||
@@ -1,3 +1,56 @@
|
||||
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,
|
||||
ClientesUpdateView,
|
||||
ClientesCreateView,
|
||||
ErroresTimbresListView,
|
||||
export_Excel,
|
||||
send_timbres_Email,
|
||||
Retrive_Cliente_Email,
|
||||
@@ -22,6 +23,7 @@ urlpatterns = [
|
||||
path('timbres_cliente/<str:RFC>/', timbres_cliente, name='timbres_cliente'),
|
||||
path('cliente/update/<int:pk>/',ClientesUpdateView.as_view(),name='update_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('send_timbres_cliente/',send_timbres_Email, name='send_timbres_Email'),
|
||||
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.db.models import Q
|
||||
from django.views.generic.edit import CreateView,UpdateView
|
||||
from django.views.generic.list import ListView
|
||||
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
|
||||
|
||||
from .custom_decorators import is_staff_access, http_basic_auth
|
||||
@@ -357,16 +358,22 @@ def PACS_Retrive_RFCS(request):
|
||||
|
||||
#-----------------------------------API VIEWS
|
||||
#--------------------------------------------
|
||||
from rest_framework import status
|
||||
class check_RFC(APIView):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
def get(self,request):
|
||||
rfc = request.GET.get('RFC', None)
|
||||
cliente, created = Clientes.objects.get_or_create(RFC=rfc)
|
||||
if created:
|
||||
cliente.Activo=True
|
||||
cliente.save()
|
||||
serializer = ClienteSerializer(cliente)
|
||||
return Response(serializer.data)
|
||||
try:
|
||||
cliente, created = Clientes.objects.get_or_create(RFC=rfc)
|
||||
serializer = ClienteSerializer(cliente)
|
||||
if not serializer.is_valid:
|
||||
return Response(serializer.errors,status=400)
|
||||
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):
|
||||
permission_classes = (IsAuthenticated,)
|
||||
@@ -400,7 +407,7 @@ class add_timbre2(APIView):
|
||||
folio=folio,
|
||||
modo=modo
|
||||
)
|
||||
return Response({'fok':f'{e}'})
|
||||
return Response({'Error':f'{e}'})
|
||||
|
||||
class saldo_funct2(APIView):
|
||||
permission_classes =(IsAuthenticated,)
|
||||
@@ -425,6 +432,12 @@ class check_host(APIView):
|
||||
|
||||
#---------------------------CLASS BASED VIEWS
|
||||
#--------------------------------------------
|
||||
class ErroresTimbresListView(LoginRequiredMixin,ListView):
|
||||
model = ErroresTimbres
|
||||
paginate_by = 100
|
||||
template_name = 'Clientes/Errores_Timbres_list.html'
|
||||
|
||||
|
||||
class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView):
|
||||
model= Clientes
|
||||
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>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<p>No recuerdas tu contrasena? <a href="/accounts/password/reset/">Reset password</a></p>
|
||||
</div>
|
||||
{% comment %}
|
||||
<div class="row">
|
||||
<p>Don't have an account? <a href="{{ signup_url }}">Register Here</a></p>
|
||||
|
||||
@@ -37,4 +37,3 @@
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
||||
</div>
|
||||
@@ -61,14 +61,13 @@
|
||||
</form>
|
||||
<div class="dropdown-divider"></div>
|
||||
|
||||
<a class="dropdown-item" href="#">Another action</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
<a class="dropdown-item" href="#">Something else here</a>
|
||||
{% if request.user.is_superuser %}
|
||||
<a class="dropdown-item" href="{% url 'ErroresTimbresList' %}">Lista Errores</a>
|
||||
<div class="dropdown-divider"></div>
|
||||
{% endif %}
|
||||
|
||||
<a class="dropdown-item" href="#">Something else here</a>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</nav>
|
||||
Reference in New Issue
Block a user