[Gvsig_desarrolladores] Crear proyecto usando otro como plantilla

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Mar Abr 25 20:08:37 CEST 2017


El 25 de abril de 2017, 18:45, Alex Irmel Oviedo Solis <
alleinerwolf en gmail.com> escribió:

> Buenos dias, ¿habra alguna de crear un proyecto nuevo usando otro como
> plantilla desde un script?
>
> La pregunta va en el sentido de que tengo unos proyectos preconfigurados
> que no quisiera que los usuarios modifiquen accidentalmente.
>
> La respuesta simple... no.
Pero no todo lo que queremos es simple, asi que si nos complicamos la vida
se podria hacer algo.
Va a depender de lo complicado que sea al proyecto o de lo que realmente
quieres hacer.

Vamos a ver la opcion mas simple... y algo bruta.

Te haces una herramienta que sea crear proyecto desde plantilla.
Por ejemplo podria presentar una ventana con:
- Lista de plantillas.
- boton para seleccionar la carpeta donde crear el proyecto.

Y que se encargue de copiar el proyecto (shutil.copytree) desde su
ubicacion en las plantillas a la carpeta que ha seleccionado el usuario, y
luego lo abre desde esa ubicacion.

Dependiendo del tipo de capas que haya en el proyecto y su volumen puede
ser "costoso".
Capas locales en disco como shapes o tiff grandes podria significar que se
copian, con el coste en espacio consiguiente.
Capas de servicios web o BBDD no se copiarian.
Depende del tipo de proyecto puede ser aceptable o no.

Si no quieres copiar los datos de las capas la cosa se complica un poco,
pero tambien tendrias algunas alternativas.
La mas simplona... manipular, con delicadeza, el gvsproj. El fichero de
proyecto es un zip con un xml dentro.
Lo mas simple seria, por ejemplo, una vez lista la plantilla, sacas el xml,
y en la ruta de los ficheros que vayan a estar en un posicion fija respecto
a la instalacion de gvSIG, metes alguna cadena como "@@#{RUTA1}#@@/pp.shp",
guardas el xml y lo vuelves a meter en el zip. El proyecto asi no se podra
abrir con gvSIG, pero tras el proceso de copia y antes de abrir el
proyecto,en tu script, extraes el xml del zip, reemplazas "@@#{RUTA1}#@@"
por la ruta de verdad y lo vuelves a meter en el zip. Y luego ya abres el
proyecto.
Si lo haces asi, ten en cuenta que si los usuarios editan esas capas
modifican los datos de la plantilla.

Se me ocurra alguna otra opcion mas... aprovechando la opcion del
DataManager (setOpenErrorHandler) de que te avise cuando no puede abrir un
fichero. Mas limpio pero bastante mas complicado de implementar, pero como
no se ha usado nunca para eso no se si puede ir fino.

Otra opcion...
podrias ver que clase de operaciones son las que no quieres que hagan tus
usuarios sobre esos proyectos y ver si se pueden atrapar para que no las
puedan hacer. Bastante mas constoso de programar a priori. De todos modos
si tienes la lista de cosas que quieres desactivar puedo tratar de ver como
se haria.

Un saludo
Joaquin



> Saludos cordiales
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> https://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>


-- 
--------------------------------------
Joaquin Jose del Cerro Murciano
Development and software arquitecture manager at gvSIG Team
jjdelcerro en gvsig.com
jjdelcerro en gvsig.org
gvSIG Association
www.gvsig.com
www.gvsig.org
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20170425/8187167f/attachment.html>


Más información sobre la lista de distribución gvSIG_desarrolladores