Properties rework, States, StatesDefinitions, DeviceLog, and Notes #37

Open
rskthomas wants to merge 104 commits from feature/states into main
Owner

Esto atina a resolver ereuse/projectes#108

Se encuentran también los cambios comentados por @cayop en ereuse/devicehub-django#31 y los comentados más abajo en este PR.

Este PR abarca:

  1. Rework de annotations a properties (SystemProperties, UserProperties y LotProperties).

  2. CRUD de StateDefinitions: los cuales son estados custom que el admin administra.

  3. Cambio de estados en dispositivos, y un comando para agregar StatesDefinitions por default.

  4. CRUD de notas: visualización, edición y borrado (solo admin o owner) .

  5. Todas estas operaciones que tienen que ver con un device se guardan a la tabla DeviceLog y se muestran en el tab /log


image
image
image
image

Esto atina a resolver ereuse/projectes#108 Se encuentran también los cambios comentados por @cayop en ereuse/devicehub-django#31 y los comentados más abajo en este PR. Este PR abarca: 1. Rework de annotations a properties (SystemProperties, UserProperties y LotProperties). 2. CRUD de StateDefinitions: los cuales son estados custom que el admin administra. 3. Cambio de estados en dispositivos, y un comando para agregar StatesDefinitions por default. 4. CRUD de notas: visualización, edición y borrado (solo admin o owner) . 5. Todas estas operaciones que tienen que ver con un _device_ se guardan a la tabla DeviceLog y se muestran en el tab /log - - - - ![image](/attachments/0ded5a2e-2658-49e4-a28b-f5c8b9635275) ![image](/attachments/61e23fb3-1b6f-496a-95ec-2c7d05fce819) ![image](/attachments/513c3fcc-9dfb-4856-bda1-b2b13746ccba) ![image](/attachments/e94994b6-fe53-4755-beb5-58a6adee3421)
rskthomas added 55 commits 2024-12-11 18:54:35 +00:00
rskthomas added 3 commits 2024-12-11 20:36:15 +00:00
rskthomas added 1 commit 2024-12-12 19:10:40 +00:00
rskthomas added 1 commit 2024-12-12 19:48:54 +00:00
rskthomas added 2 commits 2024-12-12 21:18:48 +00:00
rskthomas added 1 commit 2024-12-13 19:08:12 +00:00
rskthomas added 1 commit 2024-12-13 19:31:00 +00:00
rskthomas added 1 commit 2024-12-13 20:06:48 +00:00
rskthomas added 2 commits 2024-12-14 19:45:47 +00:00
rskthomas added 2 commits 2024-12-16 19:20:47 +00:00
rskthomas added 1 commit 2024-12-16 20:50:56 +00:00
rskthomas added 1 commit 2024-12-17 16:35:34 +00:00
rskthomas changed title from WIP: States and StatesDefinitions to Changed annotation syntax and States/StatesDefinitions 2024-12-17 17:27:55 +00:00
rskthomas requested review from cayop 2024-12-17 17:54:16 +00:00
rskthomas requested review from pedro 2024-12-17 17:54:16 +00:00
rskthomas changed title from Changed annotation syntax and States/StatesDefinitions to Changed annotation syntax and added States/StatesDefinitions 2024-12-17 20:24:03 +00:00
Owner

Nos lo hemos mirado @cayop y yo y aquí vienen nuestras notas

De momento puedes probar en demo.ereuse.org

Pronto vamos a habilitar dominios lab1.ereuse.org para dejar una instancia en marcha con estas cosas

Nos lo hemos mirado @cayop y yo y aquí vienen nuestras notas De momento puedes probar en demo.ereuse.org Pronto vamos a habilitar dominios lab1.ereuse.org para dejar una instancia en marcha con estas cosas - [ ] Bugs 1. [ ] No puedo crear tag <https://demo.ereuse.org/evidence/> 2. [ ] <https://demo.ereuse.org/lot/1/property/add> 1. [ ] No se puede editar 2. [ ] No se puede crear key que ya existe (problema UNIQUE) 3. [ ] <https://demo.ereuse.org/device/9ee50ab0456259a71b35306f280eb9ee3c8e95d0b3e47b68752c59ae934c00b0/> 1. [ ] No se puede crear key que ya existe (problema UNIQUE) 4. [ ] De todas estas acciones no hay ningún log aquí <https://demo.ereuse.org/device/7b769bd6e9191d5ff163fa4a206b9220dad10c47b45d210d3d4d31d586f6a4b6/#log> 5. [ ] Si edito estado por otro que ya existe UNIQUE constraint failed <https://demo.ereuse.org/admin/states/edit/1/> 6. [ ] La nota del log no se ve 7. [ ] Cuando se cambia un estado sale un mensaje en verde tal como "Action to 'TODO' has been added", cambiar por "State changed from Previous-State to Current-State" - [ ] Cambios propuestos 1. [ ] Quitar tabla de Current State (en caso de necesitar ver o revertir, tienes el log para revisar) 2. [ ] Cambiar la forma en que se añaden notas o estados - [ ] renombrar botón Action por "Change state (Current state)", dando click a un estado, lo cambia inmediatamente, en el selector no sale el mismo estado donde ya estoy (Current state) - [ ] añadir botón "Add nota", que hace modal/formulario de campo de descripción 3. [x] Añadir comando de django que se crean estos estados por defecto: 1 INBOX, 2 VISUAL INSPECTION, 3 REPAIR, 4 INSTALL, 5 TEST, 6 PACKAGING, 7 DONATION, 8 DISMANTLE
Owner

Unos comentarios:

  • veo algo de confusión entre estados y acciones. Mientras que INBOX puede ser un estado, el resto son acciones y creo genera confusión. Se habla de ready for ... or done: por ejemplo: REPAIR es una acción. Quiere decir (ya reparado: operational) o clasificado FOR-REPAIR o READY-FOR-REPAIR (veo en la pantalla "A reparar"). Lo mismo para el resto.

  • En relación a UNTP, DONATION es una forma concreta de transferencia. O bien cambiarlo por READY-FOR-TRANSFER o añadir READY-FOR-TRANSFER como estado.

  • Aplica a dispositivos y también a lotes?

Unos comentarios: - veo algo de confusión entre estados y acciones. Mientras que INBOX puede ser un estado, el resto son acciones y creo genera confusión. Se habla de ready for ... or done: por ejemplo: REPAIR es una acción. Quiere decir (ya reparado: operational) o clasificado FOR-REPAIR o READY-FOR-REPAIR (veo en la pantalla "A reparar"). Lo mismo para el resto. - En relación a UNTP, DONATION es una forma concreta de transferencia. O bien cambiarlo por READY-FOR-TRANSFER o añadir READY-FOR-TRANSFER como estado. - Aplica a dispositivos y también a lotes?
rskthomas changed title from Changed annotation syntax and added States/StatesDefinitions to WIP: Changed annotation syntax and added States/StatesDefinitions 2024-12-18 11:53:32 +00:00
Owner

Hola @leandro

Si te parece, vamos a continuar como hemos definido cayo y yo, almenos para esta iteración; y dejamos tus comentarios como retrospectiva posterior. Motivo: porque va a haber mucho trabajo en estabilizarlo, cerramos esta fase, y podríamos volver a reflexionar en dónde estamos y hacia dónde vamos más adelante. Ahora mismo creo que necesitamos ir cerrando almenos estas funcionalidades para que vengan las siguientes y poder tenerlas para que ekoa nos devuelva feedback. Además, esta rama se está haciendo muy grande y nadie quisiera alargar mucho esta discusión ahora.

También he movido tu comentario donde creo que tiene más sentido que es en el Proyecto ISOC F3.2, cuando trabajemos esa parte ereuse/projectes#84 (comment)

Te respondo ya a los puntos de tus comentarios como 1, 2 y 3

  1. @cayop y yo lo tenemos muy claro, después de muchas horas de reunión decidimos evitar y desvincularnos del concepto de "acciones". En el modelo planteado no existen las acciones, existen los estados y las notas, de tal forma que es muy flexible para los operadores y organizaciones. Estamos partiendo de unos estados por defecto (porque ahora no hay estados por defecto, y para reducir la fricción inicial de UX) en base a cómo ekoa trabaja (que por cierto es similar a cómo lo hace tau) [1]. De hecho, esta funcionalidad es para ekoa, para que pueda dejar de usar glpi con una herramienta más avanzada o específica para esto. Y ellos con los estados, y ciertas "notas" ya tienen suficiente. Si alguien quiere cambiar los nombres de los estados, hay un menú para hacerlo que @rskthomas desarrolló y que está muy bien.

  2. Pusimos INBOX porque era lo más parecido a "Recepción", otras ideas, bienvenidas sean (excepto "Reception")

  3. En cuanto a DONATION, es como sale en [1], es lo que necesita ekoa. Aquí no estamos entrando en cómo lo necesita UNTP, y de momento las notas y los estados solo aplican a dispositivos. Es probable que necesitemos algo parecido con los lotes, pero de momento, es suficientemenete complejo y nos queremos quedar con la sencillez como lo hemos definido en ereuse/projectes#108

[1]
(esta info está recogida en el informe del viaje de argentina también)

image

Hola @leandro Si te parece, vamos a continuar como hemos definido cayo y yo, almenos para esta iteración; y dejamos tus comentarios como retrospectiva posterior. Motivo: porque va a haber mucho trabajo en estabilizarlo, cerramos esta fase, y podríamos volver a reflexionar en dónde estamos y hacia dónde vamos más adelante. Ahora mismo creo que necesitamos ir cerrando almenos estas funcionalidades para que vengan las siguientes y poder tenerlas para que ekoa nos devuelva feedback. Además, esta rama se está haciendo muy grande y nadie quisiera alargar mucho esta discusión ahora. También he movido tu comentario donde creo que tiene más sentido que es en el *Proyecto ISOC F3.2*, cuando trabajemos esa parte https://farga.pangea.org/ereuse/projectes/issues/84#issuecomment-2624 Te respondo ya a los puntos de tus comentarios como 1, 2 y 3 1. @cayop y yo lo tenemos muy claro, después de muchas horas de reunión decidimos evitar y desvincularnos del concepto de "acciones". En el modelo planteado no existen las acciones, existen los estados y las notas, de tal forma que es muy flexible para los operadores y organizaciones. Estamos partiendo de unos estados por defecto (porque ahora no hay estados por defecto, y para reducir la fricción inicial de UX) en base a cómo ekoa trabaja (que por cierto es similar a cómo lo hace tau) [1]. De hecho, esta funcionalidad es para ekoa, para que pueda dejar de usar glpi con una herramienta más avanzada o específica para esto. Y ellos con los estados, y ciertas "notas" ya tienen suficiente. Si alguien quiere cambiar los nombres de los estados, hay un menú para hacerlo que @rskthomas desarrolló y que está muy bien. 2. Pusimos INBOX porque era lo más parecido a "Recepción", otras ideas, bienvenidas sean (excepto "Reception") 3. En cuanto a DONATION, es como sale en [1], es lo que necesita ekoa. Aquí no estamos entrando en cómo lo necesita UNTP, y de momento las notas y los estados solo aplican a dispositivos. Es probable que necesitemos algo parecido con los lotes, pero de momento, es suficientemenete complejo y nos queremos quedar con la sencillez como lo hemos definido en https://farga.pangea.org/ereuse/projectes/issues/108 [1] (esta info está recogida en el informe del viaje de argentina también) ![image](/attachments/156ef078-a33e-493d-a3ef-08b8b9a1de35)
rskthomas added 1 commit 2024-12-18 12:56:00 +00:00
rskthomas added 1 commit 2024-12-18 15:38:29 +00:00
rskthomas added 3 commits 2024-12-18 16:15:41 +00:00
rskthomas added 1 commit 2024-12-19 21:17:38 +00:00
rskthomas added 2 commits 2024-12-19 23:18:00 +00:00
rskthomas added 1 commit 2024-12-19 23:28:21 +00:00
rskthomas added 5 commits 2024-12-20 18:37:49 +00:00
rskthomas added 1 commit 2024-12-20 19:12:25 +00:00
rskthomas added 3 commits 2024-12-30 18:43:00 +00:00
rskthomas added 2 commits 2025-01-03 06:24:44 +00:00
rskthomas added 2 commits 2025-01-04 05:25:10 +00:00
rskthomas added 1 commit 2025-01-08 00:14:06 +00:00
rskthomas added 1 commit 2025-01-08 04:29:37 +00:00
rskthomas added 1 commit 2025-01-08 04:49:36 +00:00
rskthomas added 1 commit 2025-01-08 07:31:50 +00:00
rskthomas changed title from WIP: Changed annotation syntax and added States/StatesDefinitions to WIP: Properties rework, States, StatesDefinitions, DeviceLog, and Notes 2025-01-08 17:54:12 +00:00
rskthomas added 3 commits 2025-01-08 18:39:56 +00:00
rskthomas added 1 commit 2025-01-08 20:11:55 +00:00
rskthomas changed title from WIP: Properties rework, States, StatesDefinitions, DeviceLog, and Notes to Properties rework, States, StatesDefinitions, DeviceLog, and Notes 2025-01-08 21:02:32 +00:00
Owner

Hola Thomas, Un gran cambio. Felicidades.
Estaba viendo el código. Aun no he terminado de hacerlo pero mientras tanto me puedes arreglar una cosa?
En el los tabs de los detalles de un device no me va el tab de componentes. A ti te va? me falta algun fichero?

pd. Solo como sugerencia. No es muy buena idea poner property como nombre de variable en el código porque property es un decorador de metodo en python, es como si llamaras a una variable dict o list o int. Puedes sobrevivir con ello, pero mejor no tenerlo porque nunca sabes donde van a terminar estas variables. Te propongo que a partir de ahora uses algo como prop o algo asi.

Hola Thomas, Un gran cambio. Felicidades. Estaba viendo el código. Aun no he terminado de hacerlo pero mientras tanto me puedes arreglar una cosa? En el los tabs de los detalles de un device no me va el tab de componentes. A ti te va? me falta algun fichero? pd. Solo como sugerencia. No es muy buena idea poner property como nombre de variable en el código porque property es un decorador de metodo en python, es como si llamaras a una variable dict o list o int. Puedes sobrevivir con ello, pero mejor no tenerlo porque nunca sabes donde van a terminar estas variables. Te propongo que a partir de ahora uses algo como prop o algo asi.
Owner

Hay otro problema que puedes ir solucionando.
En una evidencia como la que hay por defecto en examples
http://localhost:8000/evidence/7928afeb-e6a4-464a-a842-0c3de0d01677
no me aparecen los SystemProperties. En teoría ahi deberíamos de ver unos enlaces con los diferentes device que poedes ver segun el algoritmo elegido.
Mira como esta ahora en main para hacerte una idea.
Ten en cuenta también que si en esta vista pones un tag entonces se considera un CUSTOM_ID y también se tiene que ver ahi. Toda evidencia solo puede tener un tag en esta sección, osea que o se crea uno, o se sobre escribe el que hay o se borra.

Hay otro problema que puedes ir solucionando. En una evidencia como la que hay por defecto en examples http://localhost:8000/evidence/7928afeb-e6a4-464a-a842-0c3de0d01677 no me aparecen los SystemProperties. En teoría ahi deberíamos de ver unos enlaces con los diferentes device que poedes ver segun el algoritmo elegido. Mira como esta ahora en main para hacerte una idea. Ten en cuenta también que si en esta vista pones un tag entonces se considera un CUSTOM_ID y también se tiene que ver ahi. Toda evidencia solo puede tener un tag en esta sección, osea que o se crea uno, o se sobre escribe el que hay o se borra.
rskthomas added 1 commit 2025-01-14 17:02:00 +00:00
Author
Owner

Hola Cayo! Ahí agregué el tab de componentes que me faltó (ahora muestra componentes tanto con tag y sin) y estoy viendo lo de la evidencia 7928afeb-e6a4-464a-a842-0c3de0d01677. Ahora comparo con main a ver qué será.

Tenés razón lo del decorador @property, si querés lo cambio, no creo que tarde mucho y así ya queda más prolijo el código

Hola Cayo! Ahí agregué el tab de componentes que me faltó (ahora muestra componentes tanto con tag y sin) y estoy viendo lo de la evidencia 7928afeb-e6a4-464a-a842-0c3de0d01677. Ahora comparo con main a ver qué será. Tenés razón lo del decorador @property, si querés lo cambio, no creo que tarde mucho y así ya queda más prolijo el código
rskthomas added 1 commit 2025-01-14 19:25:56 +00:00
rskthomas added 1 commit 2025-01-14 21:20:33 +00:00
Author
Owner

Hay otro problema que puedes ir solucionando.
En una evidencia como la que hay por defecto en examples
http://localhost:8000/evidence/7928afeb-e6a4-464a-a842-0c3de0d01677
no me aparecen los SystemProperties. En teoría ahi deberíamos de ver unos enlaces con los diferentes device que poedes ver segun el algoritmo elegido.
Mira como esta ahora en main para hacerte una idea.
Ten en cuenta también que si en esta vista pones un tag entonces se considera un CUSTOM_ID y también se tiene que ver ahi. Toda evidencia solo puede tener un tag en esta sección, osea que o se crea uno, o se sobre escribe el que hay o se borra.

Bien! Ahí luego de un rato encontré lo que era: un if en el template que chequeaba por el valor de Type, el cual ya es obsoleto para SystemProperty. Ahora muestra bien los enlaces:

image

> Hay otro problema que puedes ir solucionando. > En una evidencia como la que hay por defecto en examples > http://localhost:8000/evidence/7928afeb-e6a4-464a-a842-0c3de0d01677 > no me aparecen los SystemProperties. En teoría ahi deberíamos de ver unos enlaces con los diferentes device que poedes ver segun el algoritmo elegido. > Mira como esta ahora en main para hacerte una idea. > Ten en cuenta también que si en esta vista pones un tag entonces se considera un CUSTOM_ID y también se tiene que ver ahi. Toda evidencia solo puede tener un tag en esta sección, osea que o se crea uno, o se sobre escribe el que hay o se borra. Bien! Ahí luego de un rato encontré lo que era: un if en el template que chequeaba por el valor de Type, el cual ya es obsoleto para SystemProperty. Ahora muestra bien los enlaces: ![image](/attachments/153c505e-d205-4c20-8628-5c7a12bcfbc9)
This pull request has changes conflicting with the target branch.
  • api/views.py
  • dashboard/views.py
  • device/models.py
  • device/templates/details.html
  • device/views.py
  • evidence/forms.py
  • evidence/models.py
  • evidence/parse.py
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/states:feature/states
git checkout feature/states

Merge

Merge the changes and update on Forgejo.
git checkout main
git merge --no-ff feature/states
git checkout main
git merge --ff-only feature/states
git checkout feature/states
git rebase main
git checkout main
git merge --no-ff feature/states
git checkout main
git merge --squash feature/states
git checkout main
git merge --ff-only feature/states
git checkout main
git merge feature/states
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
4 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: ereuse/devicehub-django#37
No description provided.