vérification heures avant enregistrement tache + ajout vue à barreoutils

This commit is contained in:
Matt Marcha 2017-08-05 17:24:10 +02:00
parent b13d2577ca
commit 88dc5cbf56
4 changed files with 56 additions and 65 deletions

View file

@ -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()

View file

@ -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()

View file

@ -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

View file

@ -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()