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, 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_util=Auth.current_user_id, id_proj=idpro, desc=descr, date=day,
id_type=idty) id_type=idty)
print(day)
self.task.register() self.task.register()

View file

@ -1,12 +1,14 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import sys import sys
import os 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 import *
from tkinter.messagebox import * from tkinter.messagebox import *
from PIL import Image, ImageTk 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(): class BarreOutils():
@ -81,41 +83,31 @@ class BarreOutils():
self.bouton_deconnexion.grid(row=7,column=1) self.bouton_deconnexion.grid(row=7,column=1)
self.bouton_deconnexion.image = photo self.bouton_deconnexion.image = photo
################################################################################################################ ################################################################################################################
def deconnexion(self,*args): def deconnexion(self, *args):
"""L'utilisateur veut fermer le programme et se deconnecter""" """L'utilisateur veut fermer le programme et se deconnecter"""
self.callback() self.callback()
if self.fermer == True: if self.fermer == True:
self.fenetre.destroy() self.fenetre.destroy()
def open_taches_rapides(self,*args): def open_taches_rapides(self, *args):
"""L'utilisateur veut ouvrir la fenetre des taches rapides""" """L'utilisateur veut ouvrir la fenetre des taches rapides"""
toplevel = Toplevel(self.fenetre) QuickTask(mother=self.fenetre)
toplevel.title('Subroot')
# TODO : ouvrir la fenetre des taches rapides # 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""" """L'utilisateur veut ouvrir la fenetre des nouveaux projets"""
# TODO : 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""" """L'utilisateur veut ouvrir la fenetre des rapports"""
# TODO : 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""" """L'utilisateur veut ouvrir la fenetre des rapports"""
# TODO : ouvrir la fenetre de navigation # TODO : ouvrir la fenetre de navigation
self.fenetre.state('iconic') 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()] 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:])] 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): def callback(self):
if askyesno('Deconnexion', 'Êtes-vous sûr de vouloir vous deconnecter ?'): self.fermer = askyesno('Deconnexion', 'Êtes-vous sûr de vouloir vous deconnecter ?')
self.fermer = True
else:
#showinfo('Titre 3', 'Vous avez peur!') #showinfo('Titre 3', 'Vous avez peur!')
#showerror("Titre 4", "Aha") #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 \ query = "INSERT INTO dates \
SET LaDate = (%s)" SET LaDate = (%s)"
result = link.commit(query, [self.date, ]) result = link.commit(query, [self.date, ])
print(result.lastrowid)
#Récupération de l'ID #Récupération de l'ID
self.id_date = result.lastrowid self.id_date = result.lastrowid

View file

@ -1,6 +1,8 @@
# -*-coding:utf8 -* # -*-coding:utf8 -*
"""Fenêtre de rapide : Vue""" """Fenêtre de rapide : Vue"""
#TODO: Rajouter une checkbox pour ajout d'une entrée de temps manuel (sans chrono) #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 sys
import os import os
@ -17,12 +19,12 @@ from Controllers.TasksController import TasksController as TasksCont
class QuickTask: class QuickTask:
"""Fenêtre d'ajout rapide de tâche""" """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 #Initialisation des variables
QuickTask.activate = activate QuickTask.activate = activate
link = db() #On aura besoin de la BDD pour récupérer projets et types 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") QuickTask.fenetre.title("Tâche rapide")
###Titre ###Titre
@ -121,38 +123,48 @@ class QuickTask:
if QuickTask.project.get() != 'Sélectionner...' \ if QuickTask.project.get() != 'Sélectionner...' \
and QuickTask.type_value.get() != 'Sélectionner...' \ and QuickTask.type_value.get() != 'Sélectionner...' \
and QuickTask.input_desc.get() != '': 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.h_fin_value = datetime.now() - timedelta(minutes=decalage)
QuickTask.heure_fin['state'] = NORMAL #Et on vérifie que l'heure de début est inférieure à celle de fin
QuickTask.heure_fin.insert(0, QuickTask.h_fin_value.strftime('%H:%M')) ecart_temps = QuickTask.h_fin_value - QuickTask.h_debut_value
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)
#Désactivation du bouton annuler et vidage de champs if QuickTask.h_fin_value > QuickTask.h_debut_value \
QuickTask.cancel['state'] = DISABLED and ecart_temps.seconds > 60:
QuickTask.input_desc.delete(0, 'end') #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 #Désactivation du bouton annuler et vidage de champs
self.msg['text'] = "Tâche enregistrée" 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: 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
@ -174,13 +186,3 @@ class QuickTask:
#AFfichage du message #AFfichage du message
self.msg['text'] = "Enregistrement de la tâche annulé" self.msg['text'] = "Enregistrement de la tâche annulé"
#Test de la fenêtre
fen = QuickTask()
fen.fenetre.mainloop()