Dar de alta sistmeas en ajax popup

This commit is contained in:
fjrodriguez
2023-02-16 10:38:28 -06:00
parent 3aaa0cd909
commit 0de2d8a735
9 changed files with 401 additions and 68 deletions

View File

@@ -480,3 +480,16 @@ class ClientesCreateView(UserPassesTestMixin,LoginRequiredMixin,CreateView):
def test_func(self): def test_func(self):
#self.request.user.groups.all() #self.request.user.groups.all()
return self.request.user.groups.filter(name= 'admin_soft') return self.request.user.groups.filter(name= 'admin_soft')
def form_valid(self, form):
response = super().form_valid(form)
if self.request.headers.get('X-Requested-With') == 'XMLHttpRequest':
data={
'id':self.object.id,
'RFC':self.object.RFC,
'Nombre':self.object.Nombre,
'Activo':self.object.Activo,
}
return JsonResponse(data)
else:
return response

View File

@@ -1,6 +1,30 @@
from django import forms from django import forms
from .models import Sistema from .models import Sistema,sistemas_por_cliente
class SistemaForm(forms.ModelForm): class SistemaForm(forms.ModelForm):
class Meta: class Meta:
model = Sistema model = Sistema
fields = ['nombre_sistema','version'] fields = ['nombre_sistema','version']
class sistemas_por_clienteForm(forms.ModelForm):
nombre_sistema = forms.CharField(max_length=100)
version = forms.CharField(max_length=25)
class Meta:
model = sistemas_por_cliente
fields = ['cliente', 'num_licencias']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['cliente'].empty_label = None
def save(self, commit=True):
sistema = Sistema.objects.create(
nombre_sistema=self.cleaned_data['nombre_sistema'],
version=self.cleaned_data['version'],
)
sistema_por_cliente = super().save(commit=False)
sistema_por_cliente.id_sistema = sistema
if commit:
sistema_por_cliente.save()
return sistema_por_cliente

View File

@@ -43,7 +43,7 @@ class DeviceSerializer(serializers.ModelSerializer):
try: try:
sistemaxCli = sistemas_por_cliente.objects.get(id_sistema=sistema,cliente=client) sistemaxCli = sistemas_por_cliente.objects.get(id_sistema=sistema,cliente=client)
except sistemas_por_cliente.DoesNotExist: except sistemas_por_cliente.DoesNotExist:
raise serializers.ValidationError('No existe licencia para este sistmea y/o cliente') raise serializers.ValidationError('No existe licencia para este sistema y/o cliente')
if sistemaxCli.num_licencias <= Device.objects.filter(sistema=sistemaxCli.id_sistema).count(): if sistemaxCli.num_licencias <= Device.objects.filter(sistema=sistemaxCli.id_sistema).count():
raise serializers.ValidationError(f"No hay licencias disponibles para este sistema:{sistema} y cliente:{client}") raise serializers.ValidationError(f"No hay licencias disponibles para este sistema:{sistema} y cliente:{client}")
return data return data

View File

@@ -6,8 +6,7 @@ from .views import (
SistemasXCliente_ListView, SistemasXCliente_ListView,
SistemasXCliente_DetailView, SistemasXCliente_DetailView,
UsersConnectedList, UsersConnectedList,
SistemasxCliente_CreateView,
#DRF APIViews #DRF APIViews
RegisterDeviceView, RegisterDeviceView,
@@ -15,14 +14,18 @@ from .views import (
LogoutView, LogoutView,
CheckVersionView, CheckVersionView,
UploadZipVersionView, UploadZipVersionView,
Sistema_CreateView,
#function #function
download_version_FromServer, download_version_FromServer,
uploadZipViewHTML uploadZipViewHTML,
) )
urlpatterns = [ urlpatterns = [
path('',SistemasXCliente_ListView.as_view(),name='lista_sistmas'), path('',SistemasXCliente_ListView.as_view(),name='lista_sistmas'),
path('detail/<str:pk>/',SistemasXCliente_DetailView.as_view(),name='detail_sistemas'), path('detail/<str:pk>/',SistemasXCliente_DetailView.as_view(),name='detail_sistemas'),
path('create_sistemas_form/',Sistema_CreateView.as_view(), name='create_sistemas_form'),
path('crearSistema/',SistemasxCliente_CreateView.as_view(), name='create_sistemas'),
path('registerPC/',RegisterDeviceView.as_view(),name='register_PC'), path('registerPC/',RegisterDeviceView.as_view(),name='register_PC'),
path('authenticatePC/',AuthenticateDeviceView.as_view(), name="authenticateDevice"), path('authenticatePC/',AuthenticateDeviceView.as_view(), name="authenticateDevice"),
path('logout/', LogoutView.as_view(), name='logout_sistemas'), path('logout/', LogoutView.as_view(), name='logout_sistemas'),

View File

@@ -1,19 +1,28 @@
from django.shortcuts import render,redirect from django.shortcuts import render,redirect
from django.http import JsonResponse
from django.urls import reverse_lazy
from django.contrib.auth import logout from django.contrib.auth import logout
from django.views.generic.list import ListView from django.views.generic.list import ListView
from django.views.generic.detail import DetailView from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView
from rest_framework.authentication import TokenAuthentication from rest_framework.authentication import TokenAuthentication
from rest_framework.decorators import authentication_classes,api_view,permission_classes
from rest_framework.exceptions import AuthenticationFailed
from rest_framework.permissions import IsAuthenticated
from rest_framework.views import APIView from rest_framework.views import APIView
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from rest_framework import status, permissions from rest_framework import status, permissions
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
from .models import sistemas_por_cliente, DeviceHistory,Device from .models import sistemas_por_cliente, DeviceHistory,Device
from .serializers import DeviceSerializer from .serializers import DeviceSerializer
from .permissions import HasAuthorizationHeader from .permissions import HasAuthorizationHeader
from .models import Sistema, BitacoraErrores from .models import Sistema, BitacoraErrores
from .forms import SistemaForm,sistemas_por_clienteForm
from django.utils import timezone from django.utils import timezone
import re import re
@@ -28,10 +37,9 @@ import os
import mimetypes import mimetypes
import traceback import traceback
from django.core.files.storage import default_storage
from django.core.files.base import ContentFile from django.core.files.base import ContentFile
from .customStorage import CustomStorage from .customStorage import CustomStorage
from .forms import SistemaForm
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
@login_required @login_required
@@ -54,20 +62,25 @@ def uploadZipViewHTML(request):
class UploadZipVersionView(APIView): class UploadZipVersionView(APIView):
"""API CLASS for upload the CFDI Version into the server""" """API CLASS for upload the CFDI Version into the server"""
authentication_classes = (TokenAuthentication,) #this is by default in settings.py
permissions_classes=[IsAuthenticated,] permissions_classes=[IsAuthenticated,]
#authentication_classes = (TokenAuthentication,) #this is by default in settings.py
def post(self,request,format=None): def post(self,request,format=None):
try: try:
zip_file=request.FILES['zip_file'] zip_file=request.FILES['zip_file']
if zip_file:
fileN, file_ext = os.path.splitext(zip_file.name)
if file_ext !=".zip":
messages.error(self.request, f'El archivo {fileN} no es .zip')
return redirect('uploadZipViewHTML')
version = request.POST.get('version') version = request.POST.get('version')
sistema = request.POST.get('sistema') sistema = request.POST.get('sistema')
#print(request.POST) print('version',version, ' sistema',sistema)
except KeyError: except KeyError:
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)
versionSistema.version=version versionSistema.version=version
print('versionSistema: ',versionSistema.version)
versionSistema.save() versionSistema.save()
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
@@ -75,13 +88,19 @@ class UploadZipVersionView(APIView):
custom_storage = CustomStorage(location=download_system_dir) custom_storage = CustomStorage(location=download_system_dir)
#print('path exist? ',os.path.exists(download_system_dir)) #print('path exist? ',os.path.exists(download_system_dir))
fileName = custom_storage.save(zip_file.name, ContentFile(zip_file.read())) fileName = custom_storage.save(zip_file.name, ContentFile(zip_file.read()))
messages.success(request, 'The files has been upload successfully')
except Exception as ex: except Exception as ex:
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.UploadZipVersionView') BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.UploadZipVersionView')
messages.error(request, f'was an error trying upload the zip file: {ex}')
return Response({'error':str(ex)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return Response({'error':str(ex)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
return Response({'message':'File uploaded successfully'}, status=status.HTTP_201_CREATED) return Response({'message':'File uploaded successfully'}, status=status.HTTP_201_CREATED)
#need to add it to C# header request or webclient in CFDI and Actualizador
@api_view(['GET'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def download_version_FromServer(request): def download_version_FromServer(request):
""""""
try: try:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print('BASE_DIR',BASE_DIR) print('BASE_DIR',BASE_DIR)
@@ -89,38 +108,20 @@ def download_version_FromServer(request):
filepath = f'{BASE_DIR }/downloadSystems/{filename}' filepath = f'{BASE_DIR }/downloadSystems/{filename}'
#path = open(filepath, 'r') #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)
response['Content-Disposition']= f'attachment; filename={filename}' response['Content-Disposition']= f'attachment; filename={filename}'
return response return response
except Exception as ex: except Exception as ex:
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.download_version_FromServer') BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.download_version_FromServer')
return HttpResponse(status=204) return HttpResponse(status=204)
def get_logged_in_users():
sessions = Session.objects.filter(expire_date__gte=timezone.now())
# Get all non-expired tokens
#tokens = Token.objects.filter(created__gte=timezone.now() - timedelta(hours=1))
tokens = Token.objects.all()
# Get a list of logged-in user ids
uid_list = [token.user_id for token in tokens]
# Get the logged-in users
users = User.objects.filter(id__in=uid_list)
for user,session in zip(users,sessions):
user.session_data = session.get_decoded()
user.session_expire = session.expire_date
return users
class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView): class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
model = User model = User
template_name= 'Sistemas/Usuarios/lista.html' template_name= 'Sistemas/Usuarios/lista.html'
def get_queryset(self): def get_queryset(self):
return get_logged_in_users() return self.get_logged_in_users()
def test_func(self): def test_func(self):
res = self.request.user.groups.filter(name= 'admin_soft') res = self.request.user.groups.filter(name= 'admin_soft')
@@ -128,6 +129,24 @@ class UsersConnectedList(UserPassesTestMixin,LoginRequiredMixin,ListView):
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_logged_in_users(self):
""""""
sessions = Session.objects.filter(expire_date__gte=timezone.now())
# Get all non-expired tokens
#tokens = Token.objects.filter(created__gte=timezone.now() - timedelta(hours=1))
tokens = Token.objects.all()
# Get a list of logged-in user ids
uid_list = [token.user_id for token in tokens]
# Get the logged-in users
users = User.objects.filter(id__in=uid_list)
for user,session in zip(users,sessions):
user.session_data = session.get_decoded()
user.session_expire = session.expire_date
return users
class SistemasXCliente_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView): class SistemasXCliente_ListView(UserPassesTestMixin,LoginRequiredMixin, ListView):
model = sistemas_por_cliente model = sistemas_por_cliente
paginate_by = 5 paginate_by = 5
@@ -148,7 +167,25 @@ class SistemasXCliente_DetailView(UserPassesTestMixin,LoginRequiredMixin, Detail
return res return res
class SistemasxCliente_CreateView(CreateView):
model = sistemas_por_cliente
fields = ['id_sistema', 'cliente', 'num_licencias']
template_name = 'Sistemas/Xclientes/sistema_create.html'
success_url = reverse_lazy('lista_sistmas')
class Sistema_CreateView(CreateView):
model = Sistema
fields = ['nombre_sistema', 'version', 'id']
template_name = 'Sistemas/Xclientes/sistema_create_form.html'
success_url = '/sistemas/'
def form_valid(self, form):
response = super().form_valid(form)
data = {
'id': self.object.id,
'nombre_sistema': self.object.nombre_sistema,
'version': self.object.version,
}
return JsonResponse(data)
''' '''
========================= API Views ========================= API Views
@@ -217,7 +254,7 @@ class CheckVersionView(APIView):
version = request.data.get('version') version = request.data.get('version')
client_version = [int(x) for x in version.split(".")] client_version = [int(x) for x in version.split(".")]
#print('client_version: ',client_version)
try: try:
ver = Sistema.objects.get(nombre_sistema="CFDI") ver = Sistema.objects.get(nombre_sistema="CFDI")
server_version = [int(x) for x in ver.version.split(".")] server_version = [int(x) for x in ver.version.split(".")]
@@ -225,18 +262,17 @@ class CheckVersionView(APIView):
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.CheckVersionView') BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.CheckVersionView')
return Response({'Error':f'{ex}','isError':True}) return Response({'Error':f'{ex}','isError':True})
print('client_version: ',client_version)
print('server_version', server_version) print('server_version', server_version)
result=False result=False
#for i in range(len(client_version)):
for cont, ele in enumerate(client_version): for cont, ele in enumerate(client_version):
if client_version[cont] < server_version[cont]: if client_version[cont] != server_version[cont]:
print('server verion is grater') print('client version does not match server version')
result = True result = True
break break
else: else:
result= False result = False
print('equal') print('client version matches server version')
return Response({'success':True, 'actualizar':result}) return Response({'success':True, 'actualizar':result})
except Exception as ex: except Exception as ex:
BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.CheckVersionView') BitacoraErrores.objects.create(level=2, message=str(ex), traceback=traceback.format_exc(), view='Sistemas.CheckVersionView')

View File

@@ -6,7 +6,7 @@
{% block content %} {% block content %}
<form method="POST" action="."> <form method="POST" action="." id="cliente-form">
{% csrf_token %} {% csrf_token %}
<div class="form-group"> <div class="form-group">
<label for="{{form.RFC.name}}"><strong> {{form.RFC.label|capfirst}} </strong></label> <label for="{{form.RFC.name}}"><strong> {{form.RFC.label|capfirst}} </strong></label>
@@ -34,7 +34,51 @@
{% block scripts %} {% block scripts %}
<script> <script>
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);
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')
}
})
window.addEventListener("load", (event)=>{ window.addEventListener("load", (event)=>{
if(!id_Activo.checked){ if(!id_Activo.checked){
id_fecha_baja.setAttribute('required','') id_fecha_baja.setAttribute('required','')

View File

@@ -0,0 +1,110 @@
<!-- sistema_create.html -->
{% extends 'base.html' %}
{% block content %}
<h1>Create a new sistemas por cliente</h1>
<form method="post">
{% csrf_token %}
<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>
</div>
</div>
<div class="form-group">
{{ form.cliente.label}}
{{ form.cliente }}
<button id="add-cliente-btn" type="button" class="btn btn-info">Add Cliente</button>
</div>
<div class="form-group">
{{ form.num_licencias.label }}
{{ form.num_licencias }}
</div>
<button class="btn btn-success" type="submit">Create</button>
</div>
</form>
{% endblock %}
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
/*add Sistema*/
document.querySelector('#add-sistema-btn').addEventListener('click', function() {
let parentWidth = window.innerWidth;
let parentHeight = window.innerHeight;
let childWidth = 800;
let childHeight = 600;
let left =(parentWidth - childWidth);
let top = (parentHeight - childHeight);
//let popupWin = window.open("{% url 'create_sistemas_form' %}", "popupWin", "width=800,height=600");
let popupWin = window.open("{% url 'create_sistemas_form' %}", "popupWin", "width=" + childWidth + ",height=" + childHeight + ",left=" + left + ",top=" + top);
popupWin.focus();
});
/*Add cliente*/
document.querySelector("#add-cliente-btn").addEventListener('click',()=>{
let parentWidth = window.innerWidth;
let parentHeight = window.innerHeight;
let childWidth = 800;
let childHeight = 600;
let left =(parentWidth - childWidth);
let top = (parentHeight - childHeight);
let popupWin = window.open("{% url 'add_cliente' %}", "popupWin", "width=" + childWidth + ",height=" + childHeight + ",left=" + left + ",top=" + top);
popupWin.focus();
});
window.addEventListener('message', function(event) {
let response = event.data.data;
let windowName = event.data.windowName;
if(windowName==='clientWindow'){
let id_cliente = response.id;
let Nombre = response.Nombre;
let option= `<option value="${id_cliente}" selected> ${Nombre}</option>`;
document.querySelector("#id_cliente").insertAdjacentHTML('beforeend',option);
}
else if (windowName==='sistemaWindow'){
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>';
document.querySelector('#id_id_sistema').insertAdjacentHTML('beforeend', option);
}
});
});
/*
$(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

@@ -0,0 +1,60 @@
<!-- sistema_create_form.html -->
{% block content %}
<h1>Create a new Sistema</h1>
<form id="sistema-form" method="post" action="{% url 'create_sistemas_form' %}">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Create</button>
</form>
{% endblock %}
{% block scripts %}
<script>
document.addEventListener('DOMContentLoaded', function() {
document.querySelector('#sistema-form').addEventListener('submit', function(event) {
event.preventDefault();
var form = event.target;
var url = form.getAttribute('action');
var data = new FormData(form);
fetch(url, {
method: 'POST',
body: data
})
.then(response => response.json())
.then(response => {
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);
}
});
});
});*/
</script>
{% endblock scripts %}

View File

@@ -6,38 +6,58 @@
{% block content %} {% block content %}
<form id="upload-form"> <form id="upload-form">
<input type="file" name="zip_file" required> <div class="form-group">
<hr> <input type="file" name="zip_file" required accept=".zip">
<label for="id_sistema">Sistema </label> </div>
<select id="id_sistema" name="sistema" required> <hr>
{% for sistema in sistemas %} <div class="form-group">
<option value="{{ sistema.id }}">{{ sistema.nombre_sistema }} ({{ sistema.version }})</option> <label for="id_sistema">Sistema </label>
{% endfor %} <select id="id_sistema" name="sistema" required class="form-control">
</select><br><br> {% for sistema in sistemas %}
<label for="id_version">version </label> <option value="{{ sistema.id }}">{{ sistema.nombre_sistema }} ({{ sistema.version }})</option>
<input id="id_version" type="text" name="version"><br><br> {% endfor %}
<label for="anio">Año:</label> </select>
<input type="number" id="anio" name="anio" required min="23" max="30" required> </div>
<label for="mes">Mes:</label>
<input type="number" id="mes" name="mes" required min="1" max="12" required> <div class="form-group row">
<label for="mayor">Mayor:</label>
<input type="number" id="mayor" name="mayor" required min="0" max="99" value="0" required> <div class="col-sm-2">
<label for="menor">Menor:</label> <label for="anio" >Año:</label>
<input type="number" id="menor" name="menor" required min="0" max="99" value="0" required> <input type="number" id="anio" name="anio" class="form-control" required min="23" max="30">
<br><br> </div>
<button type="submit">Upload</button> <div class="col-sm-2">
<label for="mes" >Mes:</label>
<input type="number" id="mes" name="mes" class="form-control" required min="1" max="12">
</div>
<div class="col-sm-2">
<label for="mayor" >Mayor:</label>
<input type="number" id="mayor" name="mayor" class="form-control" required min="0" max="99" value="0">
</div>
<div class="col-sm-2">
<label for="menor">Menor:</label>
<input type="number" id="menor" name="menor" class="form-control" required min="0" max="99" value="0">
</div>
</div>
<div class="form-group">
<label for="id_version">version </label>
<input id="id_version" type="text" name="version" class="form-control" required>
</div>
<button class="btn btn-primary" type="submit">Upload</button>
</form> </form>
<input type="hidden" id="id_token" name="token" value="{{ token }}"> <input type="hidden" id="id_token" name="token" value="{{ token }}">
{% endblock content %} {% endblock content %}
{% block scripts %} {% block scripts %}
<script> <script>
var actualVersionSystem = document.querySelector('#id_sistema')
var currentYear = (new Date()).getFullYear(); var currentYear = (new Date()).getFullYear();
var currentMonthNUm = (new Date()).getMonth() +1; var currentMonthNUm = (new Date()).getMonth() +1;
console.log('currentMonth',currentMonthNUm)
var anio = document.getElementById("anio"); var anio = document.getElementById("anio");
anio.value = currentYear.toString().slice(-2); anio.value = currentYear.toString().slice(-2);
@@ -54,9 +74,32 @@
mes.addEventListener("change", updateVersion); mes.addEventListener("change", updateVersion);
mayor.addEventListener("change", updateVersion); mayor.addEventListener("change", updateVersion);
menor.addEventListener("change", updateVersion); menor.addEventListener("change", updateVersion);
actualVersionSystem.addEventListener('change',()=>{
getActualVersion()
})
actualVersionSystem.addEventListener('load', getActualVersion())
function getActualVersion(){
let options = actualVersionSystem.options;
let selectedIndex = actualVersionSystem.selectedIndex;
let selectedOption = options[selectedIndex];
let sistemaId = selectedOption.value;
let sistemaVersion = selectedOption.text.match(/\((.*)\)/)[1];
let sistemaVersionArray = sistemaVersion.split(".");
anio.value =sistemaVersionArray[0]
mes.value =sistemaVersionArray[1]
mayor.value=sistemaVersionArray[2]
menor.value=sistemaVersionArray[3]
version.value = sistemaVersion
//console.log(sistemaVersion, sistemaVersionArray)
}
function updateVersion() { function updateVersion() {
console.log('sss',anio.value.toString() )
version.value = anio.value.toString()+"."+mes.value.toString() +"."+mayor.value.toString()+"."+menor.value.toString(); version.value = anio.value.toString()+"."+mes.value.toString() +"."+mayor.value.toString()+"."+menor.value.toString();
} }