env reader

This commit is contained in:
fjrodriguez
2022-12-14 12:44:10 -06:00
parent 7bea944972
commit 09d7edddd6
5 changed files with 96 additions and 40 deletions

View File

@@ -7,6 +7,7 @@ from django.shortcuts import render
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.http import HttpResponse 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
def response_error_handler(request, exception=None): def response_error_handler(request, exception=None):
context={} context={}
@@ -21,6 +22,7 @@ def permission_denied_view(request):
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('', include('Clientes.urls')), path('', include('Clientes.urls')),
path('403/', permission_denied_view), path('403/', permission_denied_view),
] ]

View File

@@ -74,3 +74,15 @@ class Clientes(models.Model):
class Meta: 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

View File

@@ -11,6 +11,7 @@ from .views import (
saldo_funct2, saldo_funct2,
add_timbre2, add_timbre2,
check_RFC, check_RFC,
check_host,
) )
urlpatterns = [ urlpatterns = [
@@ -22,5 +23,7 @@ urlpatterns = [
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'),
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'),
] ]

View File

@@ -24,18 +24,42 @@ from .serailizers import ClienteSerializer
#EXCEL #EXCEL
from openpyxl import Workbook from openpyxl import Workbook
from openpyxl.styles import Alignment, Border, Font, PatternFill, Side from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
import json
#email #email
from django.core.mail import EmailMessage from django.core.mail import EmailMessage
from django.conf import settings from django.conf import settings
import requests
import os
import re
from io import BytesIO from io import BytesIO
import functools 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) @sync_to_async(thread_sensitive=False)
@login_required @login_required
def send_timbres_Email(request): def send_timbres_Email(request):
@@ -132,11 +156,11 @@ def send_timbres_Email(request):
messages.success(request, 'Email Enviado correctamente.') messages.success(request, 'Email Enviado correctamente.')
except Exception as E: 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') return redirect('index')
@login_required @login_required
def index(request): def index(request):
#read_env_file()
clientes_list = Clientes.objects.all() clientes_list = Clientes.objects.all()
mes = request.GET.get('mes', None) mes = request.GET.get('mes', None)
page = request.GET.get('page', 1) page = request.GET.get('page', 1)
@@ -230,31 +254,8 @@ def timbres_cliente(request, RFC):
} }
return render(request, 'Clientes/timbres_cliente.html', context) 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) @sync_to_async(thread_sensitive=False)
@login_required
def export_Excel(request): def export_Excel(request):
RFC = request.GET.get('RFC', None) RFC = request.GET.get('RFC', None)
@@ -312,15 +313,20 @@ def export_Excel(request):
response["Content-Disposition"] = contenido response["Content-Disposition"] = contenido
wb.save( response) wb.save( response)
return response return response
#-----------------------------API VIEWS #-----------------------------------API VIEWS
#--------------------------------------------
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 = get_object_or_404(Clientes, RFC=rfc) 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) serializer = ClienteSerializer(cliente)
return Response(serializer.data) return Response(serializer.data)
@@ -373,3 +379,36 @@ class saldo_funct2(APIView):
Saldo.save() Saldo.save()
content = {'data':Saldo.saldo} content = {'data':Saldo.saldo}
return Response(content) 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')

View File

@@ -8,7 +8,7 @@
<!-- Bootstrap CSS --> <!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.2.1/dist/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<title>Hello, world!</title> <title>AS Admin Permiso No concedido</title>
</head> </head>
<body > <body >
<div> <div>