Labels
This describes the label functionality, which allows users to create labels on a project and assign them to both users and tasks, so that users can look at their assigned tasks.
From project_page view (GET /project/{id}):
project_page view (GET /project/{id}):project_labels = ( request.dbsession.query(Label.id, Label.label_name, Label.label_hex_color) .filter_by(project_id=project_id) .order_by(Label.label_name.asc()) .all() )member_labels_query = ( request.dbsession.query(ProjectsUser.user_id, LabelsProjectsUser.labels_id) .join(LabelsProjectsUser, ProjectsUser.id == LabelsProjectsUser.projects_users_id) .filter(ProjectsUser.project_id == project_id) ) member_labels = defaultdict(list) for user_id, label_id in member_labels_query: member_labels[user_id].append(label_id)labels_by_task = defaultdict(list) task_labels_query = ( request.dbsession.query(LabelsTask.tasks_id, LabelsTask.labels_id) .join(Task) .filter(Task.project_id == project_id) ) for task_id, label_id in task_labels_query: labels_by_task[task_id].append(label_id)member_labels = {} label_assignments = request.dbsession.query( ProjectsUser.user_id, LabelsProjectsUser.labels_id ).join( LabelsProjectsUser, ProjectsUser.id == LabelsProjectsUser.projects_users_id ).filter( ProjectsUser.project_id == project_id ).all() for user_id, label_id in label_assignments: if user_id not in member_labels: member_labels[user_id] = []label_id_to_name = {label.id: label.label_name for label in project_labels} tasks_by_label_status = {} for label in project_labels: tasks_by_label_status[label.label_name] = { 'assigned': [], 'in_progress': [], 'under_review': [], 'completed': [] } for status, task_list in tasks_by_status.items(): for task in task_list: task_labels = labels_by_task.get(task.id, []) for label_id in task_labels: label_name = label_id_to_name.get(label_id) if label_name: task_info = { "title": task.task_title or "Sin título", "due_date": task.due_date.strftime('%Y-%m-%d') if task.due_date else None } tasks_by_label_status[label_name][status].append(task_info)
From edit_member view (POST /project/{id}/edit_member):
edit_member view (POST /project/{id}/edit_member):From kanban_partial view (GET /project/{id}/kanban_partial):
kanban_partial view (GET /project/{id}/kanban_partial):Labels Handling Workflow
1. Loading Labels in Project View (project_page)
project_page)2. Editing Member Labels (edit_member)
edit_member)3. Loading Labels in Kanban Partial View (kanban_partial)
kanban_partial)Last updated