Modelo de Datos: Project
Modulo: project
Total Modelos: 6+
Modelos Documentados: 5 (principales)
1. Indice de Modelos Principales
| Modelo |
Descripcion |
Lineas |
Archivo |
| project.task |
Tareas |
2,212 |
project_task.py |
| project.project |
Proyectos |
1,443 |
project_project.py |
| project.task.type |
Etapas tareas |
239 |
project_task_type.py |
| project.milestone |
Hitos |
143 |
project_milestone.py |
| project.project.stage |
Etapas proyectos |
83 |
project_project_stage.py |
2. Detalle por Modelo
2.1 project.task (Tareas)
Archivo: models/project_task.py
Descripcion: Task
Hereda de: portal.mixin, mail.thread.cc, mail.activity.mixin, rating.mixin, mail.tracking.duration.mixin
Estados (state)
| Estado |
Nombre UI |
Tipo |
| 01_in_progress |
In Progress |
OPEN |
| 02_changes_requested |
Changes Requested |
OPEN |
| 03_approved |
Approved |
OPEN |
| 04_waiting_normal |
Waiting |
OPEN |
| 1_done |
Done |
CLOSED |
| 1_canceled |
Cancelled |
CLOSED |
Campos Principales
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Nombre tarea |
| active |
Boolean |
No |
Activa |
| state |
Selection |
Si |
Estado actual |
| stage_id |
Many2one |
No |
Etapa kanban |
| priority |
Selection |
No |
Prioridad (0/1) |
| sequence |
Integer |
No |
Orden |
| is_closed |
Boolean |
No |
Estado cerrado (computed) |
Campos de Proyecto
| Campo |
Tipo |
Descripcion |
| project_id |
Many2one |
Proyecto contenedor |
| displayed_image_id |
Many2one |
Imagen destacada |
| partner_id |
Many2one |
Cliente |
| company_id |
Many2one |
Empresa |
Campos de Asignacion
| Campo |
Tipo |
Descripcion |
| user_ids |
Many2many |
Asignados |
| date_assign |
Datetime |
Fecha asignacion |
Campos de Fechas
| Campo |
Tipo |
Descripcion |
| date_deadline |
Datetime |
Fecha limite |
| date_end |
Datetime |
Fecha fin |
| date_last_stage_update |
Datetime |
Ultima actualizacion etapa |
Campos de Subtareas
| Campo |
Tipo |
Descripcion |
| parent_id |
Many2one |
Tarea padre |
| child_ids |
One2many |
Subtareas |
| subtask_count |
Integer |
Cantidad subtareas |
Campos de Dependencias
| Campo |
Tipo |
Descripcion |
| depend_on_ids |
Many2many |
Bloqueada por |
| dependent_ids |
Many2many |
Bloquea a |
Campos de Milestone
| Campo |
Tipo |
Descripcion |
| milestone_id |
Many2one |
Hito asociado |
Campos de Recurrencia
| Campo |
Tipo |
Descripcion |
| recurring_task |
Boolean |
Es recurrente |
| recurrence_id |
Many2one |
Patron recurrencia |
| repeat_interval |
Integer |
Cada X periodos |
| repeat_unit |
Selection |
day/week/month/year |
| repeat_type |
Selection |
forever/until |
| repeat_until |
Date |
Fecha fin recurrencia |
Campos Etapas Personales
| Campo |
Tipo |
Descripcion |
| personal_stage_type_ids |
Many2many |
Etapas del usuario |
| personal_stage_id |
Many2one |
Etapa personal actual |
2.2 project.project (Proyectos)
Archivo: models/project_project.py
Descripcion: Project
Hereda de: portal.mixin, mail.alias.mixin, rating.parent.mixin, mail.activity.mixin, analytic.plan.fields.mixin
Campos Principales
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Nombre proyecto |
| active |
Boolean |
No |
Activo |
| sequence |
Integer |
No |
Orden |
| partner_id |
Many2one |
No |
Cliente |
| company_id |
Many2one |
Si |
Empresa |
| user_id |
Many2one |
No |
Project Manager |
| date_start |
Date |
No |
Fecha inicio |
| date |
Date |
No |
Fecha fin |
Campos de Tareas
| Campo |
Tipo |
Descripcion |
| task_ids |
One2many |
Tareas del proyecto |
| task_count |
Integer |
Total tareas |
| open_task_count |
Integer |
Tareas abiertas |
| closed_task_count |
Integer |
Tareas cerradas |
| type_ids |
Many2many |
Etapas habilitadas |
Campos de Visibilidad
| Campo |
Tipo |
Descripcion |
| privacy_visibility |
Selection |
Visibilidad |
| privacy_visibility_warning |
Char |
Advertencia |
Campos Analiticos
| Campo |
Tipo |
Descripcion |
| account_id |
Many2one |
Cuenta analitica |
Campos de Configuracion
| Campo |
Tipo |
Descripcion |
| allow_subtasks |
Boolean |
Permitir subtareas |
| allow_milestones |
Boolean |
Permitir milestones |
| allow_task_dependencies |
Boolean |
Permitir dependencias |
| allow_recurring_tasks |
Boolean |
Permitir recurrencia |
2.3 project.task.type (Etapas de Tareas)
Archivo: models/project_task_type.py
Descripcion: Task Stage
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Nombre etapa |
| sequence |
Integer |
No |
Orden (default=1) |
| fold |
Boolean |
No |
Etapa final/plegada |
| project_ids |
Many2many |
No |
Proyectos asociados |
| user_id |
Many2one |
No |
Propietario (personal) |
| rating_active |
Boolean |
No |
Solicitar calificacion |
| rotting_threshold_days |
Integer |
No |
Dias sin actualizar |
| mail_template_id |
Many2one |
No |
Template email |
2.4 project.milestone (Hitos)
Archivo: models/project_milestone.py
Descripcion: Project Milestone
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Nombre hito |
| deadline |
Date |
No |
Fecha limite |
| is_reached |
Boolean |
No |
Alcanzado |
| project_id |
Many2one |
Si |
Proyecto |
| task_ids |
One2many |
No |
Tareas vinculadas |
| task_count |
Integer |
No |
Total tareas |
| done_task_count |
Integer |
No |
Tareas completadas |
2.5 project.project.stage (Etapas de Proyectos)
Archivo: models/project_project_stage.py
Descripcion: Project Stage
| Campo |
Tipo |
Req |
Descripcion |
| name |
Char |
Si |
Nombre etapa |
| sequence |
Integer |
No |
Orden |
| fold |
Boolean |
No |
Plegada |
| color |
Integer |
No |
Color |
| mail_template_id |
Many2one |
No |
Template notificacion |
3. Diagrama Entidad-Relacion
┌───────────────────────┐ task_ids ┌───────────────────────┐
│ project.project │─────────────────────►│ project.task │
│ │ │ │
│ - name │ project_id │ - name │
│ - task_count │◄──────────────────────│ - state │
│ - allow_subtasks │ │ - stage_id │
│ - account_id │ │ - user_ids │
└───────────┬───────────┘ └───────────┬───────────┘
│ │
│ type_ids parent_id, child_ids
▼ │
┌───────────────────────┐ ┌───────────┴───────────┐
│ project.task.type │ │ project.task │
│ │ │ (subtarea) │
│ - fold │ └───────────────────────┘
│ - sequence │
│ - project_ids │ milestone_id ┌───────────────────────┐
└───────────────────────┘ │ project.milestone │
│ │
┌───────────────────────┐◄──────────────────────│ - deadline │
│ project.task │ │ - is_reached │
│ │ │ - task_count │
│ - milestone_id │ └───────────────────────┘
└───────────────────────┘
DEPENDENCIAS:
┌───────────────────────┐ depend_on_ids ┌───────────────────────┐
│ project.task │◄────────────────────►│ project.task │
│ (bloqueada) │ dependent_ids │ (bloquea) │
└───────────────────────┘ └───────────────────────┘
4. Constantes del Modulo
# Estados cerrados
CLOSED_STATES = {
'1_done': 'Done',
'1_canceled': 'Cancelled',
}
# Estados abiertos = todos excepto CLOSED_STATES
# Campos leibles por portal
PROJECT_TASK_READABLE_FIELDS = {
'id', 'active', 'priority', 'project_id',
'user_ids', 'date_deadline', 'subtask_count',
'milestone_id', 'stage_id', 'tag_ids', ...
}
# Campos escribibles por portal
PROJECT_TASK_WRITABLE_FIELDS = {
'name', 'description', 'partner_id',
'date_deadline', 'stage_id', 'state', ...
}
5. Tabla Etapas Personales
project.task.stage.personal (tabla: project_task_user_rel)
| task_id | user_id | stage_id |
|---------|---------|----------|
| 1 | 5 | 10 |
| 1 | 7 | 12 |
Cada usuario puede tener diferente etapa para la misma tarea
6. Constraints (Restricciones)
| Modelo |
Campos |
Validacion |
Mensaje |
| project.task |
company_id, partner_id |
Tarea y partner deben ser misma empresa |
Task and partner must be same company |
| project.task |
child_ids, project_id |
Tarea con subtareas no puede ser privada |
Task with subtasks cannot be private |
| project.task |
depend_on_ids |
No dependencias ciclicas |
Two tasks cannot depend on each other |
| project.task |
parent_id |
No jerarquia recursiva |
Cannot create recursive hierarchy |
| project.task.type |
user_id, project_ids |
Etapa personal no puede vincularse a proyectos |
Personal stage cannot link to projects |
| project.project |
stage_id |
Etapa debe ser misma empresa |
Stage must be same company as project |
| project.task.recurrence |
repeat_interval |
Intervalo debe ser > 0 |
Interval should be greater than 0 |
| project.task.recurrence |
repeat_type, repeat_until |
Fecha fin debe ser futura |
End date should be in the future |
Referencias:
- Carpeta models:
addons/project/models/