Premier essai lancement tahce rapide depuis projet

This commit is contained in:
Matt Marcha 2017-08-30 23:03:50 +02:00
parent 969d730233
commit 1cd1d131ef
3 changed files with 51 additions and 28 deletions

View file

@ -3,12 +3,14 @@
import sys import sys
import os import os
from tkinter.messagebox import *
DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__)) DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__))
DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT) DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT)
sys.path.append(DOSSIER_PARENT) sys.path.append(DOSSIER_PARENT)
from Controllers.Functions import Functions from Controllers.Functions import Functions
from DB.dbLink import DBLink as DB from DB.dbLink import DBLink as DB
from Projects.Model import Project from Projects.Model import Project
from Views.quickTask import QuickTask as QT
class BrowseController: class BrowseController:
@ -65,14 +67,21 @@ class BrowseController:
return proj_list return proj_list
#def launch_quick_task(self, proj):
# if QT.activate is True:
# if askyesno("switchtask", "Cette action va terminer et enregistrer la tâche actuellement en cours. Continuer ?"):
# QT.timer(QT)
# QT.timer(QT)
# else:
# pass
# else:
# QT.project.set(proj)
# QT.timer(QT)
############## TESTS ################# ############## TESTS #################
test = BrowseController()
liste = test.get_projects_search_results("ou")
for elem in liste:
print(elem.nom)

View file

@ -10,6 +10,7 @@ DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT)
sys.path.append(DOSSIER_PARENT) sys.path.append(DOSSIER_PARENT)
from Controllers.BrowseController import BrowseController from Controllers.BrowseController import BrowseController
from Users.Model import User from Users.Model import User
from Views.quickTask import QuickTask as QT
class BrowseView: class BrowseView:
@ -41,7 +42,8 @@ class BrowseView:
###Treeview listant les projets ###Treeview listant les projets
Label(pr_tab, text="Liste des projets").pack() Label(pr_tab, text="Liste des projets").pack()
####Headers ####Headers
self.pr_list = Treeview(pr_tab, selectmode="browse", show="headings", columns=("nom", "chef", "client", "num")) self.pr_list = Treeview(pr_tab, selectmode="browse", show="headings",
columns=("nom", "chef", "client", "num"))
self.pr_list.heading("nom", text="Nom") self.pr_list.heading("nom", text="Nom")
self.pr_list.heading("chef", text="Chef de projet") self.pr_list.heading("chef", text="Chef de projet")
self.pr_list.heading("client", text="client") self.pr_list.heading("client", text="client")
@ -56,7 +58,8 @@ class BrowseView:
self.pr_list.pack() self.pr_list.pack()
Button(pr_tab, text="Voir le projet").pack() Button(pr_tab, text="Voir le projet").pack()
Button(pr_tab, text="Démarrer une tâche rapide pour ce projet").pack() Button(pr_tab, text="Démarrer une tâche rapide pour ce projet",
command=self.launch_task).pack()
##Tâches ##Tâches
@ -69,6 +72,7 @@ class BrowseView:
tabs.pack() tabs.pack()
def search(self): def search(self):
"""Fonction de recherche"""
#on récupère les résultats #on récupère les résultats
projects = self.ctrl.get_projects_search_results(self.search_input.get()) projects = self.ctrl.get_projects_search_results(self.search_input.get())
#on vide l'arbre #on vide l'arbre
@ -79,5 +83,15 @@ class BrowseView:
self.pr_list.insert("", 1, values=(proj.nom, (cdp.nom, cdp.prenom), self.pr_list.insert("", 1, values=(proj.nom, (cdp.nom, cdp.prenom),
proj.client, proj.num_dossier)) proj.client, proj.num_dossier))
# def launch_task(self):
# """Lancement d'une tâche rapide"""
# selected_proj = self.pr_list.item(self.pr_list.focus(), "values")
# if selected_proj:
# self.ctrl.launch_quick_task(selected_proj[0])
# else:
# print("aucun projet sélectionné")
#test #test

View file

@ -29,36 +29,36 @@ class QuickTask:
###Titre ###Titre
Label(QuickTask.fenetre, text="Ajout d'une tâche").pack() Label(QuickTask.fenetre, text="Ajout d'une tâche").pack()
self.msg = Label(QuickTask.fenetre, text='') QuickTask.msg = Label(QuickTask.fenetre, text='')
self.msg.pack() QuickTask.msg.pack()
###Champ de projet ###Champ de projet
Label(QuickTask.fenetre, text="Nom du projet :").pack() Label(QuickTask.fenetre, text="Nom du projet :").pack()
# Create a Tkinter variable # Create a Tkinter variable
QuickTask.project = StringVar(QuickTask.fenetre) QuickTask.project = StringVar(QuickTask.fenetre)
self.proj_choices = dict() QuickTask.proj_choices = dict()
#Récupération des types et insertion comme options #Récupération des types et insertion comme options
# Attention : si deux projets ouverts ont le même intitulé, # Attention : si deux projets ouverts ont le même intitulé,
# seul le plus récent sera pris en compte # seul le plus récent sera pris en compte
projects = link.query("SELECT IDProj, Intitulé FROM projet WHERE IDStat = 1", []).fetchall() projects = link.query("SELECT IDProj, Intitulé FROM projet WHERE IDStat = 1", []).fetchall()
for elem in projects: for elem in projects:
self.proj_choices[elem[1]] = elem[0] QuickTask.proj_choices[elem[1]] = elem[0]
QuickTask.project.set(project_name) # set the default option QuickTask.project.set(project_name) # set the default option
OptionMenu(QuickTask.fenetre, QuickTask.project, *self.proj_choices).pack() OptionMenu(QuickTask.fenetre, QuickTask.project, *QuickTask.proj_choices).pack()
###Champ de type ###Champ de type
# Create a Tkinter variable # Create a Tkinter variable
QuickTask.type_value = StringVar(QuickTask.fenetre) QuickTask.type_value = StringVar(QuickTask.fenetre)
self.ty_choices = dict() QuickTask.ty_choices = dict()
#Récupération des types et insertion comme options #Récupération des types et insertion comme options
types = link.query("SELECT * FROM type ", []).fetchall() types = link.query("SELECT * FROM type ", []).fetchall()
for elem in types: for elem in types:
self.ty_choices[elem[1]] = elem[0] QuickTask.ty_choices[elem[1]] = elem[0]
QuickTask.type_value.set("Sélectionner...") # set the default option QuickTask.type_value.set("Sélectionner...") # set the default option
Label(QuickTask.fenetre, text="Type de tâche :").pack() Label(QuickTask.fenetre, text="Type de tâche :").pack()
OptionMenu(QuickTask.fenetre, QuickTask.type_value, *self.ty_choices).pack() OptionMenu(QuickTask.fenetre, QuickTask.type_value, *QuickTask.ty_choices).pack()
###Champ de description ###Champ de description
Label(QuickTask.fenetre, text="Description :").pack() Label(QuickTask.fenetre, text="Description :").pack()
@ -72,8 +72,8 @@ class QuickTask:
###Minutes de décalage pour le bouton démarrer/arrêter ###Minutes de décalage pour le bouton démarrer/arrêter
Label(QuickTask.fenetre, text="Décalage : ").pack() Label(QuickTask.fenetre, text="Décalage : ").pack()
self.min_label = Label(QuickTask.fenetre, text="Tâche commencée il y a ") QuickTask.min_label = Label(QuickTask.fenetre, text="Tâche commencée il y a ")
self.min_label.pack() QuickTask.min_label.pack()
QuickTask.input_min = Entry(QuickTask.fenetre) QuickTask.input_min = Entry(QuickTask.fenetre)
QuickTask.input_min.insert(0, 0) QuickTask.input_min.insert(0, 0)
QuickTask.input_min.pack() QuickTask.input_min.pack()
@ -111,7 +111,7 @@ class QuickTask:
QuickTask.heure_debut['state'] = DISABLED QuickTask.heure_debut['state'] = DISABLED
#Modification des labels #Modification des labels
QuickTask.start_stop['text'] = "Terminer" QuickTask.start_stop['text'] = "Terminer"
self.min_label['text'] = "Tâche terminée il y a " QuickTask.min_label['text'] = "Tâche terminée il y a "
#On change le statut du bouton, on active l'annulation, on vide le champ décalage #On change le statut du bouton, on active l'annulation, on vide le champ décalage
QuickTask.activate = not QuickTask.activate QuickTask.activate = not QuickTask.activate
QuickTask.cancel['state'] = NORMAL QuickTask.cancel['state'] = NORMAL
@ -137,14 +137,14 @@ class QuickTask:
QuickTask.heure_fin['state'] = DISABLED QuickTask.heure_fin['state'] = DISABLED
#Et les labels #Et les labels
QuickTask.start_stop['text'] = "Démarrer" QuickTask.start_stop['text'] = "Démarrer"
self.min_label['text'] = "Tâche commencée il y a " QuickTask.min_label['text'] = "Tâche commencée il y a "
# appel à la fonction controleur enregistrant la tâche en BDD # appel à la fonction controleur enregistrant la tâche en BDD
controller = TasksCont() controller = TasksCont()
controller.register(QuickTask.heure_debut.get(), QuickTask.heure_fin.get(), controller.register(QuickTask.heure_debut.get(), QuickTask.heure_fin.get(),
QuickTask.input_comm.get('1.0', 'end'), QuickTask.input_comm.get('1.0', 'end'),
self.proj_choices[QuickTask.project.get()], QuickTask.proj_choices[QuickTask.project.get()],
QuickTask.input_desc.get(), QuickTask.input_desc.get(),
self.ty_choices[QuickTask.type_value.get()]) QuickTask.ty_choices[QuickTask.type_value.get()])
#On change le statut du bouton et on vide les champs #On change le statut du bouton et on vide les champs
QuickTask.activate = not QuickTask.activate QuickTask.activate = not QuickTask.activate
QuickTask.heure_debut['state'] = NORMAL QuickTask.heure_debut['state'] = NORMAL
@ -162,20 +162,20 @@ class QuickTask:
QuickTask.input_desc.delete(0, 'end') QuickTask.input_desc.delete(0, 'end')
#On affiche un message disant OK #On affiche un message disant OK
self.msg['text'] = "Tâche enregistrée" QuickTask.msg['text'] = "Tâche enregistrée"
else: else:
self.msg['text'] = "L'heure de fin doit être supérieure ou égale à l'heure de début" QuickTask.msg['text'] = "L'heure de fin doit être supérieure ou égale à l'heure de début"
else: else:
#non ? on affiche un message et on valide rien du tout, namého #non ? on affiche un message et on valide rien du tout, namého
self.msg['text'] = "Tous les champs doivent êtres remplis pour enregistrer la tâche" QuickTask.msg['text'] = "Tous les champs doivent êtres remplis pour enregistrer la tâche"
def stop(self): def stop(self):
"""Annulation d'une tâche démarrée""" """Annulation d'une tâche démarrée"""
#Gestion des labels #Gestion des labels
QuickTask.start_stop['text'] = "Démarrer" QuickTask.start_stop['text'] = "Démarrer"
self.min_label['text'] = "Tâche commencée il y a " QuickTask.min_label['text'] = "Tâche commencée il y a "
#On change le statut du bouton et on vide les champs #On change le statut du bouton et on vide les champs
QuickTask.activate = not QuickTask.activate QuickTask.activate = not QuickTask.activate
QuickTask.heure_debut['state'] = NORMAL QuickTask.heure_debut['state'] = NORMAL
@ -185,4 +185,4 @@ class QuickTask:
QuickTask.cancel['state'] = DISABLED QuickTask.cancel['state'] = DISABLED
#AFfichage du message #AFfichage du message
self.msg['text'] = "Enregistrement de la tâche annulé" QuickTask.msg['text'] = "Enregistrement de la tâche annulé"