From 88dc5cbf56626f52ccd840f67ae56dc50bd418fa Mon Sep 17 00:00:00 2001 From: Aveias Date: Sat, 5 Aug 2017 17:24:10 +0200 Subject: [PATCH] =?UTF-8?q?v=C3=A9rification=20heures=20avant=20enregistre?= =?UTF-8?q?ment=20tache=20+=20ajout=20vue=20=C3=A0=20barreoutils?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/TasksController.py | 1 - Menu/barreOutils.py | 34 ++++++-------- Tasks/Model.py | 2 - Views/quickTask.py | 84 +++++++++++++++++----------------- 4 files changed, 56 insertions(+), 65 deletions(-) diff --git a/Controllers/TasksController.py b/Controllers/TasksController.py index 41dc373..619d0ba 100644 --- a/Controllers/TasksController.py +++ b/Controllers/TasksController.py @@ -25,7 +25,6 @@ class TasksController: self.task = Task(heure_debut=heured, heure_fin=heuref, commentaire=comm, id_util=Auth.current_user_id, id_proj=idpro, desc=descr, date=day, id_type=idty) - print(day) self.task.register() diff --git a/Menu/barreOutils.py b/Menu/barreOutils.py index cc7f848..75b6841 100644 --- a/Menu/barreOutils.py +++ b/Menu/barreOutils.py @@ -1,12 +1,14 @@ # -*- coding: utf-8 -*- import sys import os -DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__)) -DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT) -sys.path.append(DOSSIER_PARENT) from tkinter import * from tkinter.messagebox import * from PIL import Image, ImageTk +DOSSIER_COURRANT = os.path.dirname(os.path.abspath(__file__)) +DOSSIER_PARENT = os.path.dirname(DOSSIER_COURRANT) +sys.path.append(DOSSIER_PARENT) +from Views.quickTask import QuickTask + class BarreOutils(): @@ -81,41 +83,31 @@ class BarreOutils(): self.bouton_deconnexion.grid(row=7,column=1) self.bouton_deconnexion.image = photo ################################################################################################################ - def deconnexion(self,*args): + def deconnexion(self, *args): """L'utilisateur veut fermer le programme et se deconnecter""" self.callback() if self.fermer == True: self.fenetre.destroy() - def open_taches_rapides(self,*args): + def open_taches_rapides(self, *args): """L'utilisateur veut ouvrir la fenetre des taches rapides""" - toplevel = Toplevel(self.fenetre) - toplevel.title('Subroot') + QuickTask(mother=self.fenetre) # TODO : ouvrir la fenetre des taches rapides - def open_nouveau_projet(self,*args): + def open_nouveau_projet(self, *args): """L'utilisateur veut ouvrir la fenetre des nouveaux projets""" # TODO : ouvrir la fenetre des nouveaux projets - def open_rapports(self,*args): + def open_rapports(self, *args): """L'utilisateur veut ouvrir la fenetre des rapports""" # TODO : ouvrir la fenetre des rapports - def naviguer(self,*args): + def naviguer(self, *args): """L'utilisateur veut ouvrir la fenetre des rapports""" # TODO : ouvrir la fenetre de navigation self.fenetre.state('iconic') - def geoliste(self,g): + def geoliste(self, g): r=[i for i in range(0,len(g)) if not g[i].isdigit()] return [int(g[0:r[0]]),int(g[r[0]+1:r[1]]),int(g[r[1]+1:r[2]]),int(g[r[2]+1:])] def callback(self): - if askyesno('Deconnexion', 'Êtes-vous sûr de vouloir vous deconnecter ?'): - self.fermer = True - else: + self.fermer = askyesno('Deconnexion', 'Êtes-vous sûr de vouloir vous deconnecter ?') #showinfo('Titre 3', 'Vous avez peur!') #showerror("Titre 4", "Aha") - self.fermer = False - -b = BarreOutils() -print(b.fenetre.geometry()) -print(b.largeurBoutons) -print(b.hauteurBoutons) -b.fenetre.mainloop() diff --git a/Tasks/Model.py b/Tasks/Model.py index 5da7350..54979a1 100644 --- a/Tasks/Model.py +++ b/Tasks/Model.py @@ -92,8 +92,6 @@ class Task: query = "INSERT INTO dates \ SET LaDate = (%s)" result = link.commit(query, [self.date, ]) - print(result.lastrowid) - #Récupération de l'ID self.id_date = result.lastrowid diff --git a/Views/quickTask.py b/Views/quickTask.py index 334c673..c4fa60c 100644 --- a/Views/quickTask.py +++ b/Views/quickTask.py @@ -1,6 +1,8 @@ # -*-coding:utf8 -* """Fenêtre de rapide : Vue""" #TODO: Rajouter une checkbox pour ajout d'une entrée de temps manuel (sans chrono) +#TODO: Passer toutes les vérifications des champs dans le controleur + import sys import os @@ -17,12 +19,12 @@ from Controllers.TasksController import TasksController as TasksCont class QuickTask: """Fenêtre d'ajout rapide de tâche""" - def __init__(self, project_name='Sélectionner...', activate=False): + def __init__(self, mother, project_name='Sélectionner...', activate=False): #Initialisation des variables QuickTask.activate = activate link = db() #On aura besoin de la BDD pour récupérer projets et types - QuickTask.fenetre = Tk() + QuickTask.fenetre = Toplevel(mother) QuickTask.fenetre.title("Tâche rapide") ###Titre @@ -121,38 +123,48 @@ class QuickTask: if QuickTask.project.get() != 'Sélectionner...' \ and QuickTask.type_value.get() != 'Sélectionner...' \ and QuickTask.input_desc.get() != '': - #Oui ? ok on va pour enregistrer + #On gère l'heure de fin QuickTask.h_fin_value = datetime.now() - timedelta(minutes=decalage) - QuickTask.heure_fin['state'] = NORMAL - QuickTask.heure_fin.insert(0, QuickTask.h_fin_value.strftime('%H:%M')) - QuickTask.heure_fin['state'] = DISABLED - QuickTask.start_stop['text'] = "Démarrer" - self.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.input_desc.get(), - self.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 - QuickTask.heure_debut.delete(0, 'end') - QuickTask.heure_debut['state'] = DISABLED - QuickTask.heure_fin['state'] = NORMAL - QuickTask.heure_fin.delete(0, 'end') - QuickTask.heure_fin['state'] = DISABLED - QuickTask.input_comm.delete('1.0', 'end') - QuickTask.input_min.delete(0, 'end') - QuickTask.input_min.insert(0, 0) + #Et on vérifie que l'heure de début est inférieure à celle de fin + ecart_temps = QuickTask.h_fin_value - QuickTask.h_debut_value - #Désactivation du bouton annuler et vidage de champs - QuickTask.cancel['state'] = DISABLED - QuickTask.input_desc.delete(0, 'end') + if QuickTask.h_fin_value > QuickTask.h_debut_value \ + and ecart_temps.seconds > 60: + #tout est ok ? on va enregistrer + #On modifie le champ d'heure de fin + QuickTask.heure_fin['state'] = NORMAL + QuickTask.heure_fin.insert(0, QuickTask.h_fin_value.strftime('%H:%M')) + 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 " + # 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.input_desc.get(), + self.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 + QuickTask.heure_debut.delete(0, 'end') + QuickTask.heure_debut['state'] = DISABLED + QuickTask.heure_fin['state'] = NORMAL + QuickTask.heure_fin.delete(0, 'end') + QuickTask.heure_fin['state'] = DISABLED + QuickTask.input_comm.delete('1.0', 'end') + QuickTask.input_min.delete(0, 'end') + QuickTask.input_min.insert(0, 0) - #On affiche un message disant OK - self.msg['text'] = "Tâche enregistrée" + #Désactivation du bouton annuler et vidage de champs + QuickTask.cancel['state'] = DISABLED + QuickTask.input_desc.delete(0, 'end') + + #On affiche un message disant OK + self.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" else: #non ? on affiche un message et on valide rien du tout, namého @@ -174,13 +186,3 @@ class QuickTask: #AFfichage du message self.msg['text'] = "Enregistrement de la tâche annulé" - - - - - - - -#Test de la fenêtre -fen = QuickTask() -fen.fenetre.mainloop()