Advertisement
pjmakey2

execute_module call

Feb 27th, 2020
463
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //save_params es la definicion del module->class_name->method_name que vas a llamar en el backend
  2. //El metodo del backed al cual llamas siempre va a recibir (esto mejor no cambiarlo por disenho) los siguientes parametros
  3. //como args va a recibir el objecto usuario de django
  4. //despues como kwargs va a recibir las siguientes llaves
  5. //qdict = que contienen los datos de tu formulario, segun se ve en el ejempplo de abajo
  6. //rq = que es el request de django mismo
  7. //files = si por ahi tu formulario tiene adjuntos
  8. //A continuacion  esta la definicion de lo explicado arriba, osea esto seria el llamado dinamico de autentificar, tomando
  9. //como referencia el ejemplo:
  10. //    response = SbLMethod(userobj=request.user,qdict=request.POST, files=request.FILES, rq=request)
  11. // esto esta en njo_std/views.py, esta vista no deberia ser cambiada a no ser que sea para agregar una funcionalidad standad, comun para todos los metodos.
  12.  
  13. //La respuesta del metodo siempre debe de ser un diccionario que contenga la llave exitos en caso de que sea un resultado favorable
  14. //o error caso de que no
  15. //rsp = {'exitos': 'Guardado',}
  16. //Aparte de esta llave se le puede poner los datos que uno quiera, para utilizarlo en el promise de axios
  17. //como en el caso del ejemplo se pasa una llave llamada dtemplate
  18. save_params = [
  19.     {name: 'module_name', value: 'njo_std.mng_auth'},
  20.     {name: 'class_name', value: 'MAuth'},
  21.     {name: 'method_name', value: 'autentificar'},
  22. ];
  23. formd = new FormData();
  24. //Esto utilizamos para insertar save_params en el objecto formd
  25. Object.keys(save_params).forEach(key => formd.append(save_params[key].name, save_params[key].value));
  26. //Lees tu formulario
  27. form_sel = '#form_algunformulario';
  28. ffdata = sforms.form_json(sforms.serializeform(document.querySelector(form_sel)));
  29. //Insertas el input del usuario en formd
  30. for (let idx in ffdata) {
  31.     formd.append(idx, ffdata[idx]);
  32. }
  33. //La url deberias de pasar desde la construccion del datatables.
  34. //y la  estructura inicial de module_name->class_name->method_name tambien
  35. //Esto es para tener una centralizacion del armado del Ui y no ir cambiando nada a mitad de camnino en el javascript
  36. //Ya en el html del formulario se puede meter nuevamente javascript de algun tipo si se necesita
  37. axios.post('{% url "execute_module" %}', formd).then(function (rsp) {
  38.     response = rsp.data;
  39.     if (response.hasOwnProperty('exitos')) {
  40.         document.querySelector(form_sel).reset();
  41.         toastr.success(response.exitos);
  42.     }
  43.     if (response.hasOwnProperty('rsp')) {
  44.         if (response.rsp[0].hasOwnProperty('exitos')) {
  45.             document.querySelector(form_sel).reset();
  46.         }
  47.         for (idx in response.rsp) {
  48.             rspobj = response.rsp[idx];
  49.             if (rspobj.exitos) {
  50.                 toastr.success(rspobj.exitos);
  51.             }
  52.             if (rspobj.error) {
  53.                 toastr.success(rspobj.error);
  54.             }
  55.         }
  56.     }
  57.     if (response.hasOwnProperty('dtemplate')) {
  58.         view_manag.get_dinamic(response.dtemplate, response.params, response.selector);
  59.     }
  60. }).catch(err => toastr.error(err));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement