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)
def _tickets(self) -> List[Ticket]: return [ Ticket(ticket_model, self.planning_grid) for ticket_model in TicketModel.select().where( TicketModel.project == self.model.id ) ]
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)
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
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)
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()
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
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}")
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
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
def _get_tickets_scheduled(self) -> peewee.ModelSelect: return TicketModel.select().where( TicketModel.project == self.model.id, TicketModel.is_scheduled == 1 )
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()