diff --git a/Admin/urls.py b/Admin/urls.py index caa6e58..184a42e 100644 --- a/Admin/urls.py +++ b/Admin/urls.py @@ -7,6 +7,7 @@ from django.shortcuts import render from django.core.exceptions import PermissionDenied 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={} @@ -21,6 +22,7 @@ def permission_denied_view(request): 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), ] diff --git a/Clientes/models.py b/Clientes/models.py index d6ef6cf..a98ba6f 100644 --- a/Clientes/models.py +++ b/Clientes/models.py @@ -72,5 +72,17 @@ class Clientes(models.Model): year = today.year return Timbres.objects.filter(rfcc=self.RFC, created_at__year=str(year),created_at__month=str(month)).count() class Meta: - ordering = ('-Activo','-conteo_mes','RFC') + ordering = ('-Activo','-conteo_mes','RFC') + + +class Maquinas_Conectadas(models.Model): + UserName = models.CharField(max_length=255) + PC_Name = models.CharField(max_length=255) + Is64 = models.BooleanField() + OSversion= models.CharField(max_length=255) + local_ip = models.CharField(max_length=55) + public_ip= models.CharField(max_length=55) + RFC = models.CharField(max_length=13) + class Meta: + abstract =True diff --git a/Clientes/urls.py b/Clientes/urls.py index 3357ce9..4f92fe0 100644 --- a/Clientes/urls.py +++ b/Clientes/urls.py @@ -11,6 +11,7 @@ from .views import ( saldo_funct2, add_timbre2, check_RFC, + check_host, ) urlpatterns = [ @@ -22,5 +23,7 @@ urlpatterns = [ 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'), - path('get_saldo2/', saldo_funct2.as_view(), name='saldo_funct2') + path('get_saldo2/', saldo_funct2.as_view(), name='saldo_funct2'), + path('check_host/',check_host.as_view(),name='check_host'), + ] \ No newline at end of file diff --git a/Clientes/views.py b/Clientes/views.py index 16ab2ae..16746c2 100644 --- a/Clientes/views.py +++ b/Clientes/views.py @@ -24,18 +24,42 @@ from .serailizers import ClienteSerializer #EXCEL from openpyxl import Workbook from openpyxl.styles import Alignment, Border, Font, PatternFill, Side -import json #email from django.core.mail import EmailMessage from django.conf import settings - -import requests -import os -import re from io import BytesIO import functools +from django.core.files.storage import FileSystemStorage +import os +from django.conf import settings +import re + +def read_env_file(): + try: + #env_file = os.listdir(settings.BASE_DIR) + storage = FileSystemStorage(location=settings.BASE_DIR) + env_file= os.path.join(settings.BASE_DIR,'.env') + print('EEEEE: ', env_file) + + lista =['asds', 'asdasd','sss','com' ,'pol.com'] + if storage.exists(env_file): + with open(env_file, 'r') as file: + data = file.read() + data =re.findall('"([^"]*)"',data) + print('data',data) + + for x in lista: + data.append(x) + res= ' '.join(data) + final = '"'+res+'"' + print('final',final) + with open(env_file, 'w') as newFile: + newFile.write("export hosts="+final) + except: + pass + @sync_to_async(thread_sensitive=False) @login_required def send_timbres_Email(request): @@ -131,12 +155,12 @@ def send_timbres_Email(request): mail.send() messages.success(request, 'Email Enviado correctamente.') except Exception as E: - messages.error(request, f'Email no se envio correctamente.{E}') - + messages.error(request, f'Email no se envio correctamente.{E}') return redirect('index') @login_required -def index(request): +def index(request): + #read_env_file() clientes_list = Clientes.objects.all() mes = request.GET.get('mes', None) page = request.GET.get('page', 1) @@ -230,31 +254,8 @@ def timbres_cliente(request, RFC): } return render(request, 'Clientes/timbres_cliente.html', context) -class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView): - model= Clientes - form_class=ClienteForm - success_url='/' - template_name='Clientes/edit_cliente.html' - - def test_func(self): - - res = self.request.user.groups.filter(name= 'admin_soft') - if not res: - messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.') - return res - - -class ClientesCreateView(UserPassesTestMixin,LoginRequiredMixin,CreateView): - model = Clientes - form_class = ClienteForm - success_url='/' - template_name='Clientes/edit_cliente.html' - def test_func(self): - #self.request.user.groups.all() - return self.request.user.groups.filter(name= 'admin_soft') - -#@login_required @sync_to_async(thread_sensitive=False) +@login_required def export_Excel(request): RFC = request.GET.get('RFC', None) @@ -312,15 +313,20 @@ def export_Excel(request): response["Content-Disposition"] = contenido wb.save( response) - return response + return response -#-----------------------------API VIEWS +#-----------------------------------API VIEWS +#-------------------------------------------- class check_RFC(APIView): permission_classes = (IsAuthenticated,) def get(self,request): - rfc = request.GET.get('RFC', None) - cliente = get_object_or_404(Clientes, RFC=rfc) + rfc = request.GET.get('RFC', None) + cliente, created = Clientes.objects.get_or_create(RFC=rfc) + if created: + cliente.Activo=True + cliente.save() + #cliente = get_object_or_404(Clientes, RFC=rfc) serializer = ClienteSerializer(cliente) return Response(serializer.data) @@ -372,4 +378,37 @@ class saldo_funct2(APIView): Saldo = saldoModel.objects.create(saldo=int(timbres)) Saldo.save() content = {'data':Saldo.saldo} - return Response(content) \ No newline at end of file + return Response(content) + +class check_host(APIView): + permission_classes = (IsAuthenticated,) + + def post(self,request, format=None): + data = request.data + print(data) + return Response(data) + +#---------------------------CLASS BASED VIEWS +#-------------------------------------------- +class ClientesUpdateView(UserPassesTestMixin,LoginRequiredMixin,UpdateView): + model= Clientes + form_class=ClienteForm + success_url='/' + template_name='Clientes/edit_cliente.html' + + def test_func(self): + + res = self.request.user.groups.filter(name= 'admin_soft') + if not res: + messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.') + return res + + +class ClientesCreateView(UserPassesTestMixin,LoginRequiredMixin,CreateView): + model = Clientes + form_class = ClienteForm + success_url='/' + template_name='Clientes/edit_cliente.html' + def test_func(self): + #self.request.user.groups.all() + return self.request.user.groups.filter(name= 'admin_soft') diff --git a/Templates/403.html b/Templates/403.html index c62f4ed..4eebf2a 100644 --- a/Templates/403.html +++ b/Templates/403.html @@ -8,7 +8,7 @@ - Hello, world! + AS Admin Permiso No concedido