Saltar al contenido principal

migracion-de-campos-informacion

Ver en Git


Migraciones

migración de lotes.​

aurapi_src/apis/internal/data_migration.py -> ChangeFarmOwnerAPI

Efectúa el cambio de dueño sobre uno o varios campos, así como todos los lotes de estos. Para ello cancela todos los permisos que haya sobre los campos y sus lotes. Tanto del dueño actual como de cualquiera al que le hayan compartido esos campos/lotes Finalmente se generan los registros de dueño sobre el nuevo dueño indicado.

DISCLAIMER:​

Como lo que se mueven son los permisos, el nuevo dueño tendrá acceso a todos los registros que estén asociados sólo a los lotes (labores, zonas de gestión).

Sin embargo, pueden quedar algunos registros que van atados al id_usuario y fueron creados por el dueño anterior. Por ejemplo, insumos, cultivos. El nuevo dueño los podrá ver cargados en la labor, pero no los podrá usar (en el selector de insumos por ejemplo, no lo va a ver).

  • Se migran los reportes. Si bien quedan vinculados al usuario anterior en el modelo de datos, se pueden ver y borrar.

  • No se migran los recursos (maquinas). PUEDE QUEDAR INCONSISTENCIA DE DATOS

  • No se migran las empresas. PUEDE QUEDAR INCONSISTENCIA DE DATOS

  • Se migran PARCIALMENTE las tags. Se van a poder ver pero no las van a poder editar porque quedan asociadas al usuario anterior.

  • Se migran los mapas.

    Se migran TODOS los mapas de los lotes. Incluyendo los que crearon usuarios a los que se lo habian compartido.

    Notar que no queda registro del movimiento de mapas, porque se hace un UPDATE sobre la tabla mapas. Si se quisieran duplicar los registros de la tabla, habría que moverlos también de S3, ya que se identifican con el ID de la tabla

IMPORTANTE: esta query NO altera los addons, esos deben ser actualizados de forma manual

Tiene 2 pasos. uno de validación y otro para efectivamente transferir.

Validación​

El usuario que hace la consulta debe ser SUDO

application/json
POST /api/internal/farms/change_owner/validate
Body:
{
"farms": [3698, 3706],
"current_owner": 1996,
"new_owner": 2131
}
  • current_owner : int. El usuario dueño actual del campo.
  • new_owner : int. El usuario que será dueño del campo y los lotes de ahora en adelante
  • farms : int array. Arreglo con los IDs de aquellos campos que se desean transferir.

Respuestas (todas application/json):

  • Error:
    • code 0: Si el usuario que hace la consulta no es SUDO
    • code 1: Si no existen todos y cada uno de los campos indicados
    • code 2: Si todos y cada uno los campos indicados no pertenecen al current_owner
  • Success :
{
"farms": [
{
"farm": "lote 11",
"fields": [
"john deere"
]
},
{
"farm": "random",
"fields": [
"asd",
"hola",
"chau",
"chau2",
"12"
]
}
],
"new_owner": "bruno marengo",
"current_owner": "brunasio marengasio"
}
  • current_owner: str. nombre del actual dueño
  • new_owner: str. nombre del nuevo dueño
  • farms: Es un array de objetos con las keys:
    • farm: nombre del campo
    • fields: array con nombre de los lotes que se van a transferir

Transferencia​

El usuario que hace la consulta debe ser SUDO

application/json
POST /api/internal/farms/change_owner

Mismo Body que el /validate

Respuestas (todas application/json):

  • Error:
    • code 0: Si el usuario que hace la consulta no es SUDO
    • code 1: Si no existen todos y cada uno de los campos indicados
    • code 2: Si todos y cada uno los campos indicados no pertenecen al current_owner
    • code 3: Si no se migraron porque la consulta no arrojó resultados
  • Success :
{
"info": "success",
"transferred": {
"fields": 11,
"farms": 2,
"maps": 5
}
}
  • fields: int. La cantidad de lotes migrados (incluye los que estaban eliminados)
  • farms: int. La cantidad de campos migrados (incluye los que estaban eliminados)
  • maps: int. La cantidad de mapas migrados (incluye los que estaban eliminados)