changes for sistemas
This commit is contained in:
@@ -491,3 +491,11 @@ class ClientesCreateView(UserPassesTestMixin,LoginRequiredMixin,CreateView):
|
|||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
else:
|
else:
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
def form_invalid(self,form):
|
||||||
|
response = super().form_invalid(form)
|
||||||
|
if self.request.headers.get('X-Requested-With') == 'XMLHttpRequest':
|
||||||
|
errors = form.errors.as_text()
|
||||||
|
return JsonResponse({'errors':f'{errors}'},status=200,content_type='application/json')
|
||||||
|
else:
|
||||||
|
return response
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
# Generated by Django 4.1.3 on 2023-03-07 16:28
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('Clientes', '0015_alter_timbres_rfcc'),
|
||||||
|
('Sistemas', '0013_alter_bitacoraerrores_options'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='sistemas_por_cliente',
|
||||||
|
unique_together={('id_sistema', 'cliente')},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -38,13 +38,11 @@ class sistemas_por_cliente(models.Model):
|
|||||||
id_sistema= models.ForeignKey(Sistema, related_name='sistema_spc', on_delete=models.CASCADE)
|
id_sistema= models.ForeignKey(Sistema, related_name='sistema_spc', on_delete=models.CASCADE)
|
||||||
cliente = models.ForeignKey(Clientes, related_name='cliente_spc', on_delete=models.CASCADE)
|
cliente = models.ForeignKey(Clientes, related_name='cliente_spc', on_delete=models.CASCADE)
|
||||||
num_licencias= models.IntegerField(default=1)
|
num_licencias= models.IntegerField(default=1)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
|
|
||||||
return f'{self.cliente.Nombre}'
|
return f'{self.cliente.Nombre}'
|
||||||
class Meta:
|
class Meta:
|
||||||
ordering= ('-cliente','id_sistema')
|
ordering= ('-cliente','id_sistema')
|
||||||
|
unique_together = ('id_sistema', 'cliente')
|
||||||
|
|
||||||
class DeviceManager(BaseUserManager):
|
class DeviceManager(BaseUserManager):
|
||||||
def generate_unique_username(self,client, device_name, ip_address):
|
def generate_unique_username(self,client, device_name, ip_address):
|
||||||
|
|||||||
@@ -74,8 +74,8 @@ class UploadZipVersionView(APIView):
|
|||||||
return redirect('uploadZipViewHTML')
|
return redirect('uploadZipViewHTML')
|
||||||
version = request.POST.get('version')
|
version = request.POST.get('version')
|
||||||
sistema = request.POST.get('sistema')
|
sistema = request.POST.get('sistema')
|
||||||
print('version',version, ' sistema',sistema)
|
except KeyError as ker:
|
||||||
except KeyError:
|
BitacoraErrores.objects.create(level=2, message=f'keyError Try: {str(ker)}', traceback=traceback.format_exc(), view='Sistemas.UploadZipVersionView')
|
||||||
return Response({'error':'Zip file is required'},status=status.HTTP_400_BAD_REQUEST)
|
return Response({'error':'Zip file is required'},status=status.HTTP_400_BAD_REQUEST)
|
||||||
try:
|
try:
|
||||||
versionSistema = Sistema.objects.get(id=sistema)
|
versionSistema = Sistema.objects.get(id=sistema)
|
||||||
@@ -100,18 +100,15 @@ class UploadZipVersionView(APIView):
|
|||||||
@authentication_classes([TokenAuthentication])
|
@authentication_classes([TokenAuthentication])
|
||||||
@permission_classes([IsAuthenticated])
|
@permission_classes([IsAuthenticated])
|
||||||
def download_version_FromServer(request):
|
def download_version_FromServer(request):
|
||||||
""""""
|
"""dw"""
|
||||||
try:
|
try:
|
||||||
sys= request.GET.get('sys')
|
sys= request.GET.get('sys')
|
||||||
|
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||||||
if sys:
|
if sys:
|
||||||
filename=f'{sys}.zip'
|
filename=f'{sys}.zip'
|
||||||
else:
|
else:
|
||||||
filename = 'CFDI.zip'
|
filename = 'CFDI.zip'
|
||||||
filepath = f'{BASE_DIR }/downloadSystems/{filename}'
|
filepath = f'{BASE_DIR }/downloadSystems/{filename}'
|
||||||
|
|
||||||
#path = open(filepath, 'r')
|
|
||||||
with open(filepath, 'rb') as path:
|
with open(filepath, 'rb') as path:
|
||||||
mime_type, _ = mimetypes.guess_type(filepath)
|
mime_type, _ = mimetypes.guess_type(filepath)
|
||||||
response = HttpResponse(path.read(),content_type=mime_type)
|
response = HttpResponse(path.read(),content_type=mime_type)
|
||||||
@@ -122,6 +119,7 @@ def download_version_FromServer(request):
|
|||||||
return HttpResponse(status=204)
|
return HttpResponse(status=204)
|
||||||
|
|
||||||
class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
|
class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
|
||||||
|
"""CV"""
|
||||||
model = User
|
model = User
|
||||||
template_name= 'Sistemas/Usuarios/lista.html'
|
template_name= 'Sistemas/Usuarios/lista.html'
|
||||||
|
|
||||||
@@ -153,7 +151,6 @@ class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
|
|||||||
return users
|
return users
|
||||||
|
|
||||||
class SistemasXCliente_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView):
|
class SistemasXCliente_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView):
|
||||||
|
|
||||||
model = sistemas_por_cliente
|
model = sistemas_por_cliente
|
||||||
paginate_by = 20
|
paginate_by = 20
|
||||||
template_name = 'Sistemas/Xclientes/lista.html'
|
template_name = 'Sistemas/Xclientes/lista.html'
|
||||||
@@ -184,7 +181,6 @@ class SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, Detail
|
|||||||
if not res:
|
if not res:
|
||||||
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
messages.error(self.request, f'Lo sentimos. La página que buscas no está disponible, no cuentas con los permisos.')
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
sistemas_por_cliente = self.object
|
sistemas_por_cliente = self.object
|
||||||
@@ -213,7 +209,9 @@ class Sistema_CreateView(CreateView):
|
|||||||
'version': self.object.version,
|
'version': self.object.version,
|
||||||
}
|
}
|
||||||
return JsonResponse(data)
|
return JsonResponse(data)
|
||||||
|
def form_invalid(self, form):
|
||||||
|
errors =form.errors.as_text()
|
||||||
|
return JsonResponse({'errors': f'{errors}'}, status=200)
|
||||||
'''
|
'''
|
||||||
========================= API Views
|
========================= API Views
|
||||||
'''
|
'''
|
||||||
|
|||||||
@@ -38,41 +38,32 @@
|
|||||||
document.addEventListener("DOMContentLoaded", ()=>{
|
document.addEventListener("DOMContentLoaded", ()=>{
|
||||||
if(window.name ==='popupWin')
|
if(window.name ==='popupWin')
|
||||||
{
|
{
|
||||||
console.log('popupWin')
|
|
||||||
document.querySelector("#cliente-form").addEventListener('submit',(event)=>{
|
document.querySelector("#cliente-form").addEventListener('submit',(event)=>{
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
let form= event.target;
|
let form= event.target;
|
||||||
let url = `{% url 'add_cliente' %}`;
|
let url = `{% url 'add_cliente' %}`;
|
||||||
let data = new FormData(form);
|
let data = new FormData(form);
|
||||||
|
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
|
|
||||||
xhr.open('POST',url);
|
xhr.open('POST',url);
|
||||||
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
|
||||||
xhr.onreadystatechange = ()=>{
|
xhr.onreadystatechange = ()=>{
|
||||||
if(xhr.readyState===XMLHttpRequest.DONE){
|
if(xhr.readyState===XMLHttpRequest.DONE){
|
||||||
if(xhr.status===200){
|
if(xhr.status===200){
|
||||||
|
|
||||||
let response = JSON.parse(xhr.responseText);
|
let response = JSON.parse(xhr.responseText);
|
||||||
|
if(response.errors){
|
||||||
|
alert(response.errors)
|
||||||
|
}else{
|
||||||
window.opener.postMessage({data:response, windowName:'clientWindow'},window.location.origin);
|
window.opener.postMessage({data:response, windowName:'clientWindow'},window.location.origin);
|
||||||
window.close();
|
window.close();
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
console.error('Request error ',xhr.statusText);
|
console.error('Request error ',xhr.statusText);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
xhr.send(data);
|
xhr.send(data);
|
||||||
/*
|
|
||||||
fetch(url,{
|
|
||||||
method:'POST',
|
|
||||||
body:data
|
|
||||||
})
|
|
||||||
.then(response=>response.json())
|
|
||||||
.then(response=>{
|
|
||||||
window.opener.postMessage({data:response, windowName:'clientWindow'},window.location.origin);
|
|
||||||
window.close();
|
|
||||||
})
|
|
||||||
.catch(error => console.log(error));
|
|
||||||
*/
|
|
||||||
});
|
});
|
||||||
}else{
|
}else{
|
||||||
console.log('not popupWin')
|
console.log('not popupWin')
|
||||||
|
|||||||
@@ -6,12 +6,26 @@
|
|||||||
<form method="post">
|
<form method="post">
|
||||||
|
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
{% if form.non_field_errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
{% for error in form.non_field_errors %}
|
||||||
|
<p>{{ error }}</p>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
<div class="">
|
<div class="">
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<div class="form">
|
<div class="form">
|
||||||
{{ form.id_sistema.label }}
|
{{ form.id_sistema.label }}
|
||||||
{{ form.id_sistema }}
|
{{ form.id_sistema }}
|
||||||
<button id="add-sistema-btn" type="button" class="btn btn-info">Add Sistema</button>
|
<button id="add-sistema-btn" type="button" class="btn btn-info">Add Sistema</button>
|
||||||
|
{% if form.id_sistema.errors %}
|
||||||
|
<ul class="errorlist">
|
||||||
|
{% for error in form.id_sistema.errors %}
|
||||||
|
<li>{{ error }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -19,11 +33,25 @@
|
|||||||
{{ form.cliente.label}}
|
{{ form.cliente.label}}
|
||||||
{{ form.cliente }}
|
{{ form.cliente }}
|
||||||
<button id="add-cliente-btn" type="button" class="btn btn-info">Add Cliente</button>
|
<button id="add-cliente-btn" type="button" class="btn btn-info">Add Cliente</button>
|
||||||
|
{% if form.cliente.errors %}
|
||||||
|
<ul class="errorlist">
|
||||||
|
{% for error in form.cliente.errors %}
|
||||||
|
<li>{{ error }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
{{ form.num_licencias.label }}
|
{{ form.num_licencias.label }}
|
||||||
{{ form.num_licencias }}
|
{{ form.num_licencias }}
|
||||||
|
{% if form.num_licencias.errors %}
|
||||||
|
<ul class="errorlist">
|
||||||
|
{% for error in form.num_licencias.errors %}
|
||||||
|
<li>{{ error }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<button class="btn btn-success" type="submit">Create</button>
|
<button class="btn btn-success" type="submit">Create</button>
|
||||||
@@ -89,22 +117,5 @@
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
|
||||||
$(function() {
|
|
||||||
$('#add-sistema-btn').click(function() {
|
|
||||||
let popupWin = window.open("{% url 'create_sistemas_form' %}", "popupWin", "width=800,height=600");
|
|
||||||
popupWin.focus();
|
|
||||||
});
|
|
||||||
window.addEventListener('message', function(event) {
|
|
||||||
let response = event.data;
|
|
||||||
let id_sistema = response.id;
|
|
||||||
let nombre_sistema = response.nombre_sistema;
|
|
||||||
let version = response.version;
|
|
||||||
let option = '<option value="' + id_sistema + '" selected>' + nombre_sistema + ', version ' + version + '</option>';
|
|
||||||
$('#id_id_sistema').append(option);
|
|
||||||
$('#sistema-modal').modal('hide');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
</script>
|
</script>
|
||||||
{% endblock scripts %}
|
{% endblock scripts %}
|
||||||
@@ -24,37 +24,32 @@
|
|||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: data
|
body: data
|
||||||
})
|
})
|
||||||
.then(response => response.json())
|
|
||||||
.then(response => {
|
.then(response => {
|
||||||
window.opener.postMessage({data:response, windowName:'sistemaWindow'}, window.location.origin);
|
if(response.ok){
|
||||||
window.close();
|
return response.json();
|
||||||
})
|
}else{
|
||||||
.catch(error => console.log(error));
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
throw new Error('Network response was not ok');
|
||||||
<!--script src="https://code.jquery.com/jquery-3.6.0.min.js">
|
}
|
||||||
$(function() {
|
|
||||||
$('#sistema-form').submit(function(event) {
|
})
|
||||||
event.preventDefault();
|
.then(response => {
|
||||||
var form = $(this);
|
if(response.errors) {
|
||||||
var url = form.attr('action');
|
alert(response.errors)
|
||||||
var data = form.serialize();
|
id_nombre_sistema.value=''
|
||||||
$.ajax({
|
}else{
|
||||||
url: url,
|
window.opener.postMessage({data: response, windowName: 'sistemaWindow'}, window.location.origin);
|
||||||
data: data,
|
|
||||||
type: 'post',
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(response) {
|
|
||||||
window.opener.postMessage(response, '*');
|
|
||||||
window.close();
|
window.close();
|
||||||
},
|
}
|
||||||
error: function(xhr, status, error) {
|
})
|
||||||
console.log(xhr.responseText);
|
.catch(error => {
|
||||||
|
if(error.response){
|
||||||
|
alert('Error System AS_000')
|
||||||
|
}else{
|
||||||
|
alert('Error System AS_001')
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});*/
|
});
|
||||||
</script>
|
</script>
|
||||||
{% endblock scripts %}
|
{% endblock scripts %}
|
||||||
|
|||||||
Reference in New Issue
Block a user