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 os
from tkinter.messagebox import *
DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__))
DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT)
sys.path.append(DOSSIER_PARENT)
from Controllers.Functions import Functions
from DB.dbLink import DBLink as DB
from Projects.Model import Project
from Views.quickTask import QuickTask as QT
class BrowseController:
@ -65,14 +67,21 @@ class BrowseController:
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 #################
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)
from Controllers.BrowseController import BrowseController
from Users.Model import User
from Views.quickTask import QuickTask as QT
class BrowseView:
@ -41,7 +42,8 @@ class BrowseView:
###Treeview listant les projets
Label(pr_tab, text="Liste des projets").pack()
####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("chef", text="Chef de projet")
self.pr_list.heading("client", text="client")
@ -51,12 +53,13 @@ class BrowseView:
for proj in projects:
cdp = User(proj.responsable)
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()
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
@ -69,6 +72,7 @@ class BrowseView:
tabs.pack()
def search(self):
"""Fonction de recherche"""
#on récupère les résultats
projects = self.ctrl.get_projects_search_results(self.search_input.get())
#on vide l'arbre
@ -77,7 +81,17 @@ class BrowseView:
for proj in projects:
cdp = User(proj.responsable)
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

View file

@ -29,36 +29,36 @@ class QuickTask:
###Titre
Label(QuickTask.fenetre, text="Ajout d'une tâche").pack()
self.msg = Label(QuickTask.fenetre, text='')
self.msg.pack()
QuickTask.msg = Label(QuickTask.fenetre, text='')
QuickTask.msg.pack()
###Champ de projet
Label(QuickTask.fenetre, text="Nom du projet :").pack()
# Create a Tkinter variable
QuickTask.project = StringVar(QuickTask.fenetre)
self.proj_choices = dict()
QuickTask.proj_choices = dict()
#Récupération des types et insertion comme options
# Attention : si deux projets ouverts ont le même intitulé,
# seul le plus récent sera pris en compte
projects = link.query("SELECT IDProj, Intitulé FROM projet WHERE IDStat = 1", []).fetchall()
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
OptionMenu(QuickTask.fenetre, QuickTask.project, *self.proj_choices).pack()
OptionMenu(QuickTask.fenetre, QuickTask.project, *QuickTask.proj_choices).pack()
###Champ de type
# Create a Tkinter variable
QuickTask.type_value = StringVar(QuickTask.fenetre)
self.ty_choices = dict()
QuickTask.ty_choices = dict()
#Récupération des types et insertion comme options
types = link.query("SELECT * FROM type ", []).fetchall()
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
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
Label(QuickTask.fenetre, text="Description :").pack()
@ -72,8 +72,8 @@ class QuickTask:
###Minutes de décalage pour le bouton démarrer/arrêter
Label(QuickTask.fenetre, text="Décalage : ").pack()
self.min_label = Label(QuickTask.fenetre, text="Tâche commencée il y a ")
self.min_label.pack()
QuickTask.min_label = Label(QuickTask.fenetre, text="Tâche commencée il y a ")
QuickTask.min_label.pack()
QuickTask.input_min = Entry(QuickTask.fenetre)
QuickTask.input_min.insert(0, 0)
QuickTask.input_min.pack()
@ -111,7 +111,7 @@ class QuickTask:
QuickTask.heure_debut['state'] = DISABLED
#Modification des labels
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
QuickTask.activate = not QuickTask.activate
QuickTask.cancel['state'] = NORMAL
@ -137,14 +137,14 @@ class QuickTask:
QuickTask.heure_fin['state'] = DISABLED
#Et les labels
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
controller = TasksCont()
controller.register(QuickTask.heure_debut.get(), QuickTask.heure_fin.get(),
QuickTask.input_comm.get('1.0', 'end'),
self.proj_choices[QuickTask.project.get()],
QuickTask.proj_choices[QuickTask.project.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
QuickTask.activate = not QuickTask.activate
QuickTask.heure_debut['state'] = NORMAL
@ -162,20 +162,20 @@ class QuickTask:
QuickTask.input_desc.delete(0, 'end')
#On affiche un message disant OK
self.msg['text'] = "Tâche enregistrée"
QuickTask.msg['text'] = "Tâche enregistrée"
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:
#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):
"""Annulation d'une tâche démarrée"""
#Gestion des labels
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
QuickTask.activate = not QuickTask.activate
QuickTask.heure_debut['state'] = NORMAL
@ -185,4 +185,4 @@ class QuickTask:
QuickTask.cancel['state'] = DISABLED
#AFfichage du message
self.msg['text'] = "Enregistrement de la tâche annulé"
QuickTask.msg['text'] = "Enregistrement de la tâche annulé"