changes for sistemas

This commit is contained in:
fjrodriguez
2023-03-09 09:40:17 -06:00
parent c84ef13d33
commit 5b5e79f430
7 changed files with 108 additions and 89 deletions

View File

@@ -491,3 +491,11 @@ class ClientesCreateView(UserPassesTestMixin,LoginRequiredMixin,CreateView):
return JsonResponse(data)
else:
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

View File

@@ -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')},
),
]

View File

@@ -38,13 +38,11 @@ class sistemas_por_cliente(models.Model):
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)
num_licencias= models.IntegerField(default=1)
def __str__(self):
return f'{self.cliente.Nombre}'
class Meta:
ordering= ('-cliente','id_sistema')
unique_together = ('id_sistema', 'cliente')
class DeviceManager(BaseUserManager):
def generate_unique_username(self,client, device_name, ip_address):

View File

@@ -74,8 +74,8 @@ class UploadZipVersionView(APIView):
return redirect('uploadZipViewHTML')
version = request.POST.get('version')
sistema = request.POST.get('sistema')
print('version',version, ' sistema',sistema)
except KeyError:
except KeyError as ker:
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)
try:
versionSistema = Sistema.objects.get(id=sistema)
@@ -100,18 +100,15 @@ class UploadZipVersionView(APIView):
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def download_version_FromServer(request):
""""""
"""dw"""
try:
sys= request.GET.get('sys')
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if sys:
filename=f'{sys}.zip'
else:
filename = 'CFDI.zip'
filepath = f'{BASE_DIR }/downloadSystems/{filename}'
#path = open(filepath, 'r')
with open(filepath, 'rb') as path:
mime_type, _ = mimetypes.guess_type(filepath)
response = HttpResponse(path.read(),content_type=mime_type)
@@ -122,6 +119,7 @@ def download_version_FromServer(request):
return HttpResponse(status=204)
class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
"""CV"""
model = User
template_name= 'Sistemas/Usuarios/lista.html'
@@ -153,7 +151,6 @@ class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
return users
class SistemasXCliente_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView):
model = sistemas_por_cliente
paginate_by = 20
template_name = 'Sistemas/Xclientes/lista.html'
@@ -184,7 +181,6 @@ class SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, Detail
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
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
sistemas_por_cliente = self.object
@@ -213,7 +209,9 @@ class Sistema_CreateView(CreateView):
'version': self.object.version,
}
return JsonResponse(data)
def form_invalid(self, form):
errors =form.errors.as_text()
return JsonResponse({'errors': f'{errors}'}, status=200)
'''
========================= API Views
'''

View File

@@ -38,41 +38,32 @@
document.addEventListener("DOMContentLoaded", ()=>{
if(window.name ==='popupWin')
{
console.log('popupWin')
document.querySelector("#cliente-form").addEventListener('submit',(event)=>{
event.preventDefault();
let form= event.target;
let url = `{% url 'add_cliente' %}`;
let data = new FormData(form);
let xhr = new XMLHttpRequest();
xhr.open('POST',url);
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xhr.onreadystatechange = ()=>{
if(xhr.readyState===XMLHttpRequest.DONE){
if(xhr.status===200){
let response = JSON.parse(xhr.responseText);
if(response.errors){
alert(response.errors)
}else{
window.opener.postMessage({data:response, windowName:'clientWindow'},window.location.origin);
window.close();
}
}else{
console.error('Request error ',xhr.statusText);
}
}
};
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{
console.log('not popupWin')

View File

@@ -6,12 +6,26 @@
<form method="post">
{% 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="form-group">
<div class="form">
{{ form.id_sistema.label }}
{{ form.id_sistema }}
<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>
@@ -19,11 +33,25 @@
{{ form.cliente.label}}
{{ form.cliente }}
<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 class="form-group">
{{ form.num_licencias.label }}
{{ 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>
<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>
{% endblock scripts %}

View File

@@ -24,37 +24,32 @@
method: 'POST',
body: data
})
.then(response => response.json())
.then(response => {
if(response.ok){
return response.json();
}else{
throw new Error('Network response was not ok');
}
})
.then(response => {
if(response.errors) {
alert(response.errors)
id_nombre_sistema.value=''
}else{
window.opener.postMessage({data: response, windowName: 'sistemaWindow'}, window.location.origin);
window.close();
}
})
.catch(error => console.log(error));
});
});
/*
<!--script src="https://code.jquery.com/jquery-3.6.0.min.js">
$(function() {
$('#sistema-form').submit(function(event) {
event.preventDefault();
var form = $(this);
var url = form.attr('action');
var data = form.serialize();
$.ajax({
url: url,
data: data,
type: 'post',
dataType: 'json',
success: function(response) {
window.opener.postMessage(response, '*');
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>
{% endblock scripts %}