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
emailpasswordfirst_nameslast_names
Salida
{
"id": 1,
"token": "eyJ0..."
}Entrada
emailpassword
Salida
{
"access": "eyJ0...",
"refresh": "eyJ0..."
}Salida
[
{
"id": "e729a80d-0033-4e0e-8891-20085212b445",
"email": "sergioperez@example.com",
"firstNames": "Sergio",
"lastNames": "Pérez"
},
{
"id": "42e74cee-497c-41f5-834e-ac3578229cb6",
"email": "lewishamilton@example.com",
"firstNames": "Lewis",
"lastNames": "Hamilton"
},
...
]Salida
{
"id": "e729a80d-0033-4e0e-8891-20085212b445",
"email": "sergioperez@example.com",
"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
namedescriptionparent(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": "valtteribottas@example.com",
"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
namedescription(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_datesi é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_datesi é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.