Development Environment for the Visualization of Organizational Tasks Inspired Obviously by Notion
Requiere Python 3.9 o superior.
pip install -r requirements.txt
gunicorn devotion.wsgi
☆ = Requiere autenticación de token Bearer.
Para crear o actualizar un recurso, el usuario debe ser líder del proyecto papá. La única excepción a esto es PUT /tasks/<id>/status/
, que puede ser ejecutado por cualquier miembro del proyecto. Ser un superuser sobrepasa todas estas restricciones.
- GET
/test/
- Hola, mundo
Users
- POST
/users/
- Crear usuario - POST
/login/
- Iniciar sesión - GET
/users/
- Obtener todos los usuarios ☆ - GET
/me/
- Obtener usuario ☆ - PUT
/me/
- Actualizar usuario ☆ - GET
/me/projects/
- Obtener proyectos del usuario ☆ - GET
/me/calendar/
- Obtener calendario global del usuario ☆
Projects
- POST
/projects/
- Crear proyecto ☆ - GET
/projects/<id>/
- Obtener proyecto - GET
/projects/<id>/members/
- Obtener miembros del proyecto ☆ - PUT
/projects/<id>/
- Actualizar proyecto ☆ - DELETE
/projects/<id>/
- Eliminar proyecto ☆
Tasks
- POST
/tasks/
- Crear tarea ☆ - GET
/tasks/<id>/
- Obtener tarea - PUT
/tasks/<id>/
- Actualizar tarea ☆ - PUT
/tasks/<id>/status/
- Cambiar estado de tarea ☆ - DELETE
/tasks/<id>/
- Eliminar tarea ☆
Dashboard (Aún no tan)
- GET
/projects/<id>/dashboard/
- Obtener dashboard del proyecto - POST
/projects/<id>/dashboard/widgets/
- Crear widget - PUT
/projects/<id>/dashboard/widgets/
- Actualizar widget - POST
/projects/<id>/dashboard/sources/
- Crear fuente de datos
Entrada
email
password
first_names
last_names
Salida
{
"id": 1,
"token": "eyJ0..."
}
Entrada
email
password
Salida
{
"access": "eyJ0...",
"refresh": "eyJ0..."
}
Salida
[
{
"id": "e729a80d-0033-4e0e-8891-20085212b445",
"email": "[email protected]",
"firstNames": "Sergio",
"lastNames": "Pérez"
},
{
"id": "42e74cee-497c-41f5-834e-ac3578229cb6",
"email": "[email protected]",
"firstNames": "Lewis",
"lastNames": "Hamilton"
},
...
]
Salida
{
"id": "e729a80d-0033-4e0e-8891-20085212b445",
"email": "[email protected]",
"firstNames": "Sergio",
"lastNames": "Pérez"
}
Entrada
email
(opcional)first_names
(opcional)last_names
(opcional)
Salida
[
{
"id": "4bfca576-83d2-447a-9b79-cdc778417c84",
"name": "FSAE 2024",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin volutpat tortor eget lacus ultricies, nec ullamcorper risus viverra. Pellentesque non ultrices nibh."
},
...
]
Salida
Nota: las fechas son arreglos de dos números, que representan la posición de la tarea (o tareas) en la matriz del calendario.
{
"tasks": [
{
"date": [
0,
1
],
"tasks": [
{
"id": "f8ed4488-0fbc-44b4-9b96-c626caf6a44a",
"name": "Junta inicial 123",
"status": 2,
"priority": 0
},
...
]
},
...
],
"today": [
1,
5
]
}
Entrada
name
description
parent
(opcional) - ID del proyecto papáleaders
- IDs de usuarios líderes separados por ","members
- IDs de usuarios miembros separados por ","
Query params
get
- Para obtener respuestas parciales de solo la información del proyecto o solo las tareas del mismo (sí ahorra mucho tiempo).- Opciones:
info
,tasks
,all
, default esall
- Opciones:
view
- Cambia el formato de la respuesta para facilitar el front.- Opciones:
table
,kanban
,calendar
, default estable
- Opciones:
assigned
- Mostrar solo tareas asignadas al usuario. Si la request no tiene autenticación, este parámetro se ignora.- Opciones:
true
,false
, default esfalse
- Opciones:
subtree
- Mostrar todo el subárbol de tareas debajo del proyecto actual.- Opciones:
true
,false
, default esfalse
- Opciones:
Salida
Parámetros default:
{
"id": "887ebfdd-bd39-417c-9b42-90396c2b8e59",
"name": "Chasis",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin volutpat tortor eget lacus ultricies, nec ullamcorper risus viverra. Pellentesque non ultrices nibh.",
"breadcrumbs": [
[
"4bfca576-83d2-447a-9b79-cdc778417c84",
"FSAE 2024",
false
],
...
],
"projects": [
{
"id": "169bdff0-30d5-4b7f-ad7a-c2793a1a7328",
"name": "Cockpit",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin volutpat tortor eget lacus ultricies, nec ullamcorper risus viverra. Pellentesque non ultrices nibh."
},
...
],
"tasks": [
{
"id": "0191827d-1e38-4647-885c-aef73ea494b0",
"name": "Peso y distribución",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidid.",
"status": 3,
"priority": 0,
"startDate": "2024-02-13",
"dueDate": "2024-02-21",
"assignee": "Alexander Albon",
"parentProject": "887ebfdd-bd39-417c-9b42-90396c2b8e59",
"parentTask": null
},
...
],
"progress": 50
}
Ejemplo con get=tasks
&view=calendar
:
Nota: las fechas son arreglos de dos números, que representan la posición de la tarea (o tareas) en la matriz del calendario.
{
"tasks": [
{
"date": [
0,
3
],
"tasks": [
{
"id": "9bcfd443-9ff2-42cd-b69e-75aa032891e1",
"name": "Diseño del chasis",
"status": 0,
"priority": 0
},
...
]
},
...
],
"today": [
1,
5
]
}
Ejemplo con get=tasks
&view=kanban
:
{
"tasks": {
"notStarted": [
{
"id": "95a7529b-e750-4c2a-867c-cdb9b167ae34",
"name": "Investigación de nuevos materiales para la construcción del chasis",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidid.",
"priority": 1,
"assignee": {
"id": "f8c2280f-3840-490f-b85a-0779badd8f66",
"name": "George Russell"
}
},
...
],
"inProgress": [
...
],
"inReview": [
...
],
"done": [
...
]
}
}
Salida
[
{
"id": "4fceb6df-d3ac-4f5a-b177-995ac5673d1a",
"email": "[email protected]",
"firstNames": "Valtteri",
"lastNames": "Bottas"
},
...
]
Entrada
name
(opcional)description
(opcional)parent
(opcional) - ID del proyecto papáleaders
(opcional) - IDs de usuarios líderes separados por ","members
(opcional) - IDs de usuarios miembros separados por ","
Entrada
name
description
(opcional)priority
(opcional) - Entero. 0 es baja, 1 es media, 2 es alta, default es 0start_date
(opcional) - Fecha de inicio en formato YYYY-MM-DD, default es hoy, odue_date
si ésta es del pasadodue_date
- Formato YYYY-MM-DDparent_project
- ID del proyecto papáparent_task
(opcional) - ID de la tarea papáassignee
- ID del usuario asignado
Query params
get
- Para obtener respuestas parciales de solo la información de la tarea o solo las subtareas de la misma (sí ahorra mucho tiempo).- Opciones:
info
,tasks
,all
, default esall
- Opciones:
view
- Cambia el formato de la respuesta para facilitar el front.- Opciones:
table
,kanban
,calendar
, default estable
- Opciones:
assigned
- Mostrar solo tareas asignadas al usuario. Si la request no tiene autenticación, este parámetro se ignora.- Opciones:
true
,false
, default esfalse
- Opciones:
subtree
- Mostrar todo el subárbol de tareas debajo de la tarea actual.- Opciones:
true
,false
, default esfalse
- Opciones:
Salida
Ejemplo con parámetros default:
{
"id": "0191827d-1e38-4647-885c-aef73ea494b0",
"name": "Peso y distribución",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidid.",
"status": 3,
"priority": 0,
"startDate": "2024-02-13",
"dueDate": "2024-02-21",
"assignee": "Alexander Albon",
"breadcrumbs": [
[
"4bfca576-83d2-447a-9b79-cdc778417c84",
"FSAE 2024",
false
],
...
],
"tasks": [
{
"id": "0191827d-1e38-4647-885c-aef73ea494b0",
"name": "Peso y distribución",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidid.",
"status": 3,
"priority": 0,
"startDate": "2024-02-13",
"dueDate": "2024-02-21",
"assignee": "Alexander Albon",
"parentProject": "887ebfdd-bd39-417c-9b42-90396c2b8e59",
"parentTask": null
},
...
]
}
Ejemplo con get=tasks
&view=calendar
:
Nota: las fechas son arreglos de dos números, que representan la posición de la tarea (o tareas) en la matriz del calendario.
{
"tasks": [
{
"date": [
0,
3
],
"tasks": [
{
"id": "9bcfd443-9ff2-42cd-b69e-75aa032891e1",
"name": "Diseño del chasis",
"status": 0,
"priority": 0
},
...
]
},
...
],
"today": [
1,
5
]
}
Ejemplo con get=tasks
&view=kanban
:
{
"tasks": {
"notStarted": [
{
"id": "95a7529b-e750-4c2a-867c-cdb9b167ae34",
"name": "Investigación de nuevos materiales para la construcción del chasis",
"description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidid.",
"priority": 1,
"assignee": {
"id": "f8c2280f-3840-490f-b85a-0779badd8f66",
"name": "George Russell"
}
},
...
],
"inProgress": [
...
],
"inReview": [
...
],
"done": [
...
]
}
}
Entrada
name
(opcional)description
(opcional)priority
(opcional) - Entero. 0 es baja, 1 es media, 2 es alta, default es 0start_date
(opcional) - Fecha de inicio en formato YYYY-MM-DD, default es hoy, odue_date
si ésta es del pasadodue_date
(opcional) - Formato YYYY-MM-DDparent_project
(opcional) - ID del proyecto papáparent_task
(opcional) - ID de la tarea papáassignee
(opcional) - ID del usuario asignado
Entrada
status
- Entero. 0 es pendiente, 1 es en progreso, 2 es en revisión, 3 es completada
Powered by SALAD, Society of Academic Labor and Application Development.