Premier essai lancement tahce rapide depuis projet
This commit is contained in:
parent
969d730233
commit
1cd1d131ef
|
@ -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)
|
|
||||||
|
|
|
@ -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")
|
||||||
|
@ -51,12 +53,13 @@ class BrowseView:
|
||||||
for proj in projects:
|
for proj in projects:
|
||||||
cdp = User(proj.responsable)
|
cdp = User(proj.responsable)
|
||||||
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))
|
||||||
|
|
||||||
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
|
||||||
|
@ -77,7 +81,17 @@ class BrowseView:
|
||||||
for proj in projects:
|
for proj in projects:
|
||||||
cdp = User(proj.responsable)
|
cdp = User(proj.responsable)
|
||||||
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
|
||||||
|
|
|
@ -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é"
|
||||||
|
|
Loading…
Reference in a new issue