예제 #1
0
 def _create_new_tickets(my_planning_grid: planning_grid.PlanningGrid) -> None:
     TicketModel.create_ticket_new_projects()
     for ticket_model in TicketModel.get_tickets_new():
         ticket = Ticket(ticket_model, my_planning_grid)
         today_row = my_planning_grid.get_today_row()
         column = (
             ticket._get_column_owner_backlog()  # pylint: disable=protected-access
         )
         ticket.move_to(today_row, column, force_move=False)
예제 #2
0
 def _tickets(self) -> List[Ticket]:
     return [
         Ticket(ticket_model, self.planning_grid)
         for ticket_model in TicketModel.select().where(
             TicketModel.project == self.model.id
         )
     ]
예제 #3
0
 def _refresh_planning_grid(self) -> None:
     my_main_window = self.importer.my_main_window
     planning_grid = my_main_window.centralWidget()
     tickets = (
         TicketModel.select().join(ProjectModel).where(
             ProjectModel.id << self.projects_updated)  #type: ignore
     )
     planning_grid.refresh_grid(tickets)
예제 #4
0
 def _is_fully_scheduled(self) -> bool:
     is_fully_scheduled = True
     tickets_backlog = list(
         TicketModel.select().where(
             TicketModel.project == self.model.id, TicketModel.is_scheduled == 0,
         )
     )
     for ticket in tickets_backlog:
         if ticket.length != 0:
             is_fully_scheduled = False
     return is_fully_scheduled
예제 #5
0
 def _create_ticket(self) -> None:
     new_ticket = TicketModel(
         owner=self.project_model.owner,
         project=self.project_model,
         duration=1,
         is_fixed=False,
         advancement=0,
     )
     layout = self.scrollAreaWidgetContents.layout()
     ticket_counter = len(self._find_ticket_widgets(self)) + 1
     self._add_empty_space()
     self._add_ticket(new_ticket, ticket_counter, layout)
예제 #6
0
    def draw_all_tickets(my_planning_grid: planning_grid.PlanningGrid) -> None:
        """
        Draws all existing tickets on the planning grid.

        Parameters
        ----------
        my_planning_grid

        """
        Ticket._create_new_tickets(my_planning_grid)
        for ticket_model in TicketModel.select():
            Ticket(ticket_model, my_planning_grid).draw_cells()
예제 #7
0
 def _create_ticket_model(
     row: Row, column: Column, my_planning_grid: planning_grid.PlanningGrid
 ) -> Tuple[TicketModel, CellModel]:
     owner = my_planning_grid.get_member_from_column(column)
     ticket_model = TicketModel(owner=owner,
                                description="",
                                is_fixed=False,
                                duration=1,
                                advancement=0)
     first_cell_model = CellModel(row=row,
                                  column=column,
                                  ticket=ticket_model)
     return ticket_model, first_cell_model
예제 #8
0
    def refresh_grid(self,
                     tickets: Optional[List[TicketModel]] = None) -> None:
        """
        Refreshes tickets on the grid.

        Parameters
        ----------
        tickets
            A list of tickets to refresh. Default is None, in which case all tickets
            on the grid will be refreshed.

        """
        if tickets is None:
            tickets = TicketModel.select()
        total = len(tickets)
        counter = 0
        for ticket_model in tickets:
            ticket = Ticket(ticket_model, self)
            ticket.refresh()
            counter += 1
            print(f"{counter} sur {total}")
예제 #9
0
 def _create_models(
     row: Row, column: Column, my_planning_grid: planning_grid.PlanningGrid
 ) -> Tuple[ProjectModel, TicketModel, CellModel]:
     owner = my_planning_grid.get_member_from_column(column)
     assert owner is not None
     project_model = ProjectModel(
         name="",
         charge=1,
         owner=owner,
         id=owner.get_next_available_key(),
         status="active",
     )
     ticket_model = TicketModel(
         owner=owner,
         description="",
         is_fixed=False,
         duration=0,
         advancement=0,
         project=project_model,
     )
     first_cell_model = CellModel(ticket=ticket_model,
                                  row=row,
                                  column=column)
     return project_model, ticket_model, first_cell_model
예제 #10
0
 def _get_ticket_models(self) -> List[TicketModel]:
     ticket_models = list(TicketModel.select().where(
         TicketModel.project == self.project_model.id))
     if len(ticket_models) == 0:
         ticket_models = [self.ticket_clicked]
     return ticket_models
예제 #11
0
 def _get_tickets_scheduled(self) -> peewee.ModelSelect:
     return TicketModel.select().where(
         TicketModel.project == self.model.id, TicketModel.is_scheduled == 1
     )
예제 #12
0
 def _draw_tickets(self) -> None:
     for ticket in self._tickets_to_update:
         Ticket(
             TicketModel.get(id=ticket), self.ticket.planning_grid
         ).update_models()
         Ticket(TicketModel.get(id=ticket), self.ticket.planning_grid).draw_cells()