DocString

This commit is contained in:
sidya82 2015-02-08 02:55:45 +01:00
parent e92819cbb7
commit 506e2e65b9
12 changed files with 140 additions and 125 deletions

View File

@ -1,8 +1,5 @@
from src.c.Main import Main
__author__ = 'sidya'
if __name__ == "__main__":
# lancement du controleur principal
main = Main()

View File

@ -1,3 +1,7 @@
"""
Module Controleur de la vue des bornes permettant l'accès au parking
"""
from PyQt4 import QtGui, QtCore
from src.c.Teleporteur import Teleporteur
from src.m.Parking import Placement
@ -9,23 +13,23 @@ from src.v.MyQt import MyQWidget
from src.v.Ui_User import Ui_Borne
__author__ = 'sidya'
##Controleur de la vue des bornes permettant l'accès au parking
class Borne:
"""
Controleur de la vue des bornes permettant l'accès au parking
"""
bornes = []
## Met a jour l'affichages du nombres de places dispo sur toutes les bornes
@staticmethod
def MajBornes():
for b in Borne.bornes:
b.MajBorne()
## Met a jour l'affichage du nombre de places dispo sur la borne courante
def MajBorne(self):
self.__ui.lcdNumber.display(self.__parking.nbPlacesLibresParking)
## Contructeur du controleur de borne
# @param main Controleur parent Main
# @param parking Parking auquel la borne est associé
def __init__(self, main, parking):
self.__nomBorne = "Borne " + str(len(self.bornes) + 1)
self.__parking = parking
@ -63,7 +67,7 @@ class Borne:
Borne.bornes.append(self)
Borne.MajBornes()
## block l'ensmeble des éléments de la fenetre
def blockAll(self):
self.__ui.box_abo.setDisabled(True)
self.__ui.box_garer.setDisabled(True)
@ -74,11 +78,8 @@ class Borne:
self.__ui.btn_annuler.setDisabled(True)
self.__ui.btn_desabo.setDisabled(True)
## Met en etat initial de départ sans voiture
def nonVoiture(self):
"""
Met en etat initial de départ sans voiture
:return:
"""
self.__main.activity(self.__nomBorne + " : En Attente d'une voiture", self.__main.lvl.INFO)
self.__ui.label_aff.setText("Dream park")
self.__c = None
@ -106,11 +107,8 @@ class Borne:
self.__ui.dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime())
Borne.MajBornes()
## Met en etat d'arrive de voiture detecte par la camera
def newVoiture(self):
"""
Meten etat d'arrive de voiture detecte par la camera
:return:
"""
self.__ui.btn_Voiture.setDisabled(True)
self.__v_actuel = Camera.donnerVoiture()
self.__main.activity(self.__nomBorne + " : Arrivee : " + str(self.__v_actuel), self.__main.lvl.INFO)
@ -121,12 +119,8 @@ class Borne:
self.__ui.label_aff.setText("Bienvenue !")
self.__ui.btn_quitter.setDisabled(True)
## Gestion de l'identification a partir d'un abo a partir de son id (lineedit)
def identification(self):
"""
Gestion de l'identification a partir d'un abo a partir de son id (lineedit)
:return:
"""
try:
self.__c = Client(self.__ui.lineEdit_id.text())
self.__ui.label_aff.setText("Bonjour " + str(self.__c.nom) + " " + str(self.__c.prenom))
@ -150,11 +144,8 @@ class Borne:
self.__main.activity(self.__nomBorne + " : Erreur lors de l'indentification " + str(e),
self.__main.lvl.FAIL)
## Gestion validation formulaire d'abonnement
def abo(self):
"""
Gestion validation formulaire d'abonnement
:return:
"""
if self.__c != None:
if self.__ui.checkBox.isChecked():
self.__c.maj(str(self.__ui.nomLineEdit.text()),
@ -187,6 +178,7 @@ class Borne:
self.identification()
self.__ui.label_aff.setText("Votre id membre est : " + self.__c.id)
## Gestion du desabonnment du client identifié
def desabo(self):
self.__c.desabo()
self.__c = None
@ -199,12 +191,8 @@ class Borne:
self.__ui.box_service.setDisabled(True)
## Gestion de la validation pour garer son vehicule
def garer(self):
"""
Gestion de la validation de garer son vehicule
:return:
"""
placement = None
if self.__c is None:
p = self.__parking.recherchePlace(self.__v_actuel)
@ -247,12 +235,8 @@ class Borne:
self.__main.activity(self.__nomBorne + " : Pas de place dispo pour " + str(self.__v_actuel),
self.__main.lvl.INFO)
## Gestion de recuperation une voiture avec le numero de ticket (lineedit)
def recuperer(self):
"""
Essaie de recuperer une voiture avec le numero de ticket (lineedit)
:return:
"""
p = None
try:
p = Placement(self.__ui.numeroTicketLineEdit.text())
@ -281,18 +265,20 @@ class Borne:
self.__ui.pushButton.setDisabled(False)
self.__ui.numeroTicketLineEdit.setDisabled(True)
## Gestion du payeent
def payer(self):
self.ticketRetrait(self.__placementAPayer, Service.getAllServicePlacement(self.__placementAPayer))
self.__main.activity(self.__nomBorne + " : Recuperation Anonyme : " + str(self.__placementAPayer), self.__main.lvl.INFO)
self.nonVoiture()
## generation ticket depot
def ticketDepot(self, id):
QtGui.QMessageBox.information(self.__w,
"Ticket",
"Votre numero ticket : " + str(id)
)
## generation ticket retrait
def ticketRetrait(self, placement, services):
if placement.voiture.client == "NULL":
prix = placement.place.typePlace.prix
@ -322,27 +308,18 @@ class Borne:
str(s)
)
## Gestion affichage de la vue borne
def showWindow(self):
"""
Gestion affichage de la vue borne
:return:
"""
self.__w.show()
## Gestion de sortie de la vue borne
def quitter(self):
"""
Gestion de sortie de la vue borne
:return:
"""
self.__main.activity(self.__nomBorne + " : Quitter", self.__main.lvl.INFO)
self.__main.showWindow()
## Generation Qdialog d'erreur
# @param msg message d'erreur a afficher
def error(self, msg):
"""
Qdialog message erreur
:return:
"""
QtGui.QMessageBox.warning(self._w,
"Erreur ...",
"Erreur lors de la création du parking ...\n" +

View File

@ -1,3 +1,7 @@
"""
Contrileur Principal de l'application
"""
import sys
from PyQt4 import QtGui, QtCore
@ -16,8 +20,9 @@ from src.v.MyQt import MyQMainWindow
from src.v.Ui_Admin import Ui_MainWindow
## Controleur principal de l'application administration
class Main:
## Contructeur
def __init__(self):
# Init des logs
self.lvl = lvl() # Public : Acces au constante
@ -53,11 +58,14 @@ class Main:
self.showWindow()
sys.exit(app.exec_())
## Methode d'ecriture dans les logs
# @param msg message a ecrire
# @param lvl lvl du message (niveau d'importance)
def activity(self, msg, lvl):
self.__log.printL(msg, lvl)
self.addItemActivite(self.activite.readlines()[-1])
## Chargement des derniers log
def loadLastActivity(self):
try:
self.activite = open("log/activity.log", "r")
@ -74,12 +82,14 @@ class Main:
def addItemActivite(self, line):
self.__ui.listWidget.addItem(line)
## Mise a jour de la liste des parking
def majListeParking(self):
self.__ui.comboBox.clear()
self.__ui.comboBox.addItem("Selectionner un parking")
for p in Parking.getAllActif():
self.__ui.comboBox.addItem(p.nom)
## Action a réaliser lorque un parking est selectionné
def selectParking(self):
# onglet detail parking
self.__ui.nom.clear()
@ -132,7 +142,7 @@ class Main:
self.__ui.labelNbSuperAbo.setText(str(Client.nbSuperAbo()))
self.__ui.labelMoySta.setText(str(Placement.dureeMoyPlacement()))
## Gestion de la realisation d'une maintenance
def doMaintenance(self):
if len(self.__serviceMaintenance) > 0:
try:
@ -144,6 +154,7 @@ class Main:
self.error("Livraision echoué.")
self.selectParking()
## Gestion de la realisation d'un entrerien
def doEntretien(self):
if len(self.__serviceEntretien) > 0:
try:
@ -155,6 +166,7 @@ class Main:
self.error("Entretien echoué.")
self.selectParking()
## Gestion de la realisation d'une livraison
def doLivraison(self):
if len(self.__serviceLivraisons) > 0:
try:
@ -167,6 +179,7 @@ class Main:
self.error("Livraison echoué.")
self.selectParking()
## Gestion de la mise a our d'une livraison
def majLivraison(self):
if len(self.__serviceLivraisons) > 0:
try:
@ -179,10 +192,12 @@ class Main:
self.error("Maj Livraison echoué.")
self.selectParking()
## Gestion de l'ouverture d'une fenetre de CreaParking
def creerParking(self):
self.__view.hide()
self.__widgetCourant = CreaParking(self)
## Suppresion d'un parking
def rmParking(self):
if self.__ui.comboBox.currentIndex() != 0:
result = QtGui.QMessageBox.question(self.__view,
@ -201,17 +216,20 @@ class Main:
self.__view.hide()
self.showWindow()
## Affichage d'une fentre DetailsPlaces des places d'un parking
def detailsPlacesParking(self):
if self.__ui.comboBox.currentIndex() != 0:
self.__view.hide()
self.__widgetCourant = DetailsPlaces(self, Parking.getAllActif()[self.__ui.comboBox.currentIndex() - 1])
## Gestion affichage des Borne
def afficherBornes(self):
if self.__ui.comboBox.currentIndex() != 0:
self.__view.hide()
Borne(self, Parking.getAllActif()[self.__ui.comboBox.currentIndex() - 1])
Borne(self, Parking.getAllActif()[self.__ui.comboBox.currentIndex() - 1])
## Gestion reinitilaisation de la BD
def nouveau(self):
result = QtGui.QMessageBox.question(self.__view,
"Confirmer Nouveau...",
@ -225,6 +243,7 @@ class Main:
Parking.removeAllRam()
self.majListeParking()
## gestion du chargement d'une BD enregistre dans un fichier
def charger(self):
path = QtGui.QFileDialog.getOpenFileName(self.__view, "Charger", ".")
if path:
@ -236,6 +255,7 @@ class Main:
self.error("Le chargement a echoué.")
self.majListeParking()
## Gestion suvegarde de la BD dans un fichier
def sauver(self):
path = QtGui.QFileDialog.getSaveFileName(self.__view, "Sauvegarder", ".")
if path:
@ -247,9 +267,11 @@ class Main:
self.error("La sauvegarde a echoué.")
self.majListeParking()
## Gestion quitter
def quitter(self):
self.__view.close()
## Gestion affichage Main
def showWindow(self):
self.activity("Chargement de la fenetre principal", self.lvl.INFO)
self.majListeParking()
@ -258,11 +280,9 @@ class Main:
Borne.bornes = []
self.__view.focusWidget() # reprend le focus sur la fenetre principal
## Gestion affichage QDialog d'erreur
# @param msg le message d'erreur
def error(self, msg):
"""
Qdialog message erreur
:return:
"""
QtGui.QMessageBox.warning(self.__widgetCourant,
"Erreur ...",
msg

View File

@ -1,15 +1,17 @@
"""
Module Controleur de gestion de parking
"""
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import QTableWidgetItem
from src.m.Parking import TypePlace, Parking
from src.v.MyQt import MyQWidget
from src.v.Ui_Admin import Ui_CreaParking
#Controleur de creation de parking
class CreaParking:
"""
Controleur de cretion de parking
"""
## Contructeur
# @param main Controleur parent
def __init__(self, main):
self._main = main
self._main.activity("Debut Creation Parking", self._main.lvl.INFO)
@ -31,25 +33,16 @@ class CreaParking:
self._ui.tableWidget.insertRow(self._ui.tableWidget.rowCount())
self.showWindow()
## Ajoute une ligne de creation de place
def addRow(self):
"""
Ajoute une ligne de creation de place
:return:
"""
self._ui.tableWidget.insertRow(self._ui.tableWidget.rowCount())
## Enleve une ligne de creation de place
def rmRow(self):
"""
Enleve une ligne de creation de place
:return:
"""
self._ui.tableWidget.removeRow(self._ui.tableWidget.rowCount() - 1)
## Gestion annulation creation parking
def annuler(self):
"""
Gestion annulation creation parking
:return:
"""
result = QtGui.QMessageBox.question(self._w,
"Confirmer Fermeture...",
"Etes vous sur de vouloir abandonner ?\n"
@ -61,11 +54,8 @@ class CreaParking:
self._w.hide()
self._main.showWindow()
## Gestion validation de formulaire de creation de parking
def valider(self):
"""
Gestion validation de formulaire de creation de parking.
:return:
"""
if self._ui.lineEdit_nom.text() == "":
self._main.activity("Erreur lors de la creations du Parking. Nom Invalide.\n", self._main.lvl.FAIL)
self.error("Nom Invalide!")
@ -86,26 +76,24 @@ class CreaParking:
self._main.activity("Erreur lors de la creations du Parking \n" + str(e), self._main.lvl.FAIL)
self.error("Verifiez que votre saisie est valide !")
## Gestion affichage CreaParking
def showWindow(self):
"""
Gestion affichage vue Creation de Parking
:return:
"""
self._w.show()
## Gestion affichage QDialog d'erreur
# @param msg le message d'erreur
def error(self, msg):
"""
Qdialog message erreur
:return:
"""
QtGui.QMessageBox.warning(self._w,
"Erreur ...",
"Erreur lors de la création du parking ...\n" +
msg
)
## Controleur d'affichage des details des places d'un parking existant
class DetailsPlaces(CreaParking):
## Contructeur
# @param main Controleur parent
# @param parking praking dont on veux afficher le détail
def __init__(self, main, parking):
self.__parking = parking
super(DetailsPlaces, self).__init__(main)
@ -125,6 +113,7 @@ class DetailsPlaces(CreaParking):
self._ui.btn_addRow.setVisible(False)
self._ui.btn_rmRow.setVisible(False)
## Gestion de retour sur le fenetre principal
def valider(self):
self._w.hide()
self._main.showWindow()

View File

@ -1,21 +1,31 @@
"""
Gestion de teleportation de voiture
"""
from src.m.Parking import Placement
__author__ = 'sidya'
## Gestion de teleportation de Voiture
class Teleporteur:
## Teleportation d'une voiture standars
# @param voiture Voiture a garer
# @param place Place ou garer la voiture
# @return Placement creer
@staticmethod
def teleporterVoiture(voiture, place):
p = Placement(None, voiture, place)
place.prendre()
return p
## Teleportation d'une voiture d'un superAbo
# @param voiture Voiture a garer
# @param parking Parking ou garer la voiture
# @return Placement creer
@staticmethod
def teleporterVoitureSuperAbonne(voiture, parking):
place = parking.addPlaceSuperAbo(parking)
p = Placement(None, voiture, place)
return p
## Teleportation de la voiture vers la sortie
# @param placement Placement de lavoiture que l'on veut sortir
@staticmethod
def teleporterVersSortie(placement):
placement.end()

View File

@ -1,11 +1,15 @@
"""
Module de gestion de la base de Donnée Sqlite
"""
from shutil import copyfile
import sqlite3
## Classe de connexion a la bd
class connexionBDD:
__chemin = "m/BDDprojetPython.sq3"
__sql = "m/table.sql"
## Construeur de la connexion. Initialise la bd en cas d'inexistance
def __init__(self):
try:
with open(self.__chemin):
@ -19,33 +23,42 @@ class connexionBDD:
self.__conn.row_factory = sqlite3.Row
self.__cur = self.__conn.cursor()
## Execute une requete avec des param
# @param req la requete a execute
# @param param un tuple contenant les donnees a inserer dans la requete
def execute(self, req, param=()):
r = None
# try:
r = self.__cur.execute(req, param)
self.__conn.commit()
"""except Exception as e:
print (e)"""
try:
r = self.__cur.execute(req, param)
self.__conn.commit()
except Exception as e:
print (e)
r = None
return r
## Id genere par la derniere requete
# @return Id genere par la derniere requete
def lastId(self):
return self.__cur.lastrowid
## Deconnexion de la BD
def seDeconnecter(self):
self.__cur.close()
self.__conn.close()
## Initialise la BD
def initialisationBDD(self):
with open(self.__sql) as f:
sql = f.read()
self.__conn.executescript(sql)
self.__conn.commit()
## Creer une copie de la bd
# @param path le chemin du fichier de sauvegarde de la bd
@staticmethod
def sauver(path):
copyfile(connexionBDD.chemin, path)
## Charge une copie de la bd
# @param path le chemin du fichier a charger pour la bd
@staticmethod
def charger(path):
copyfile(path, connexionBDD.chemin)

View File

@ -1,5 +1,6 @@
"""
Module de gestion de Log
Module : Log
(Realisé dans le cadre du Projet Tuteuré 2013/2014 MI Blagnac)
"""
import logging
@ -56,9 +57,9 @@ class Log(object):
def __init__(self):
"""
Define 3 differents utils :
activity.utils -> all activity
warning.utils -> only warning
error.utils -> error
activity.log -> all activity
warning.log -> only warning
error.log -> error
Write all message on terminal too
"""
self.logger = logging.getLogger()
@ -84,9 +85,9 @@ class Log(object):
def printL(self, pMsg, pLvl):
"""
Add color and write in utils with an define level
pMsg : message to write in utils
pLvl : level of utils message
Add color and write in log with an define level
pMsg : message to write in log
pLvl : level of log message
"""
if pLvl == lvl.DEBUG:
pMsg = bcolors.DEBUG + str(pMsg) + bcolors.ENDC

View File

@ -1,8 +1,14 @@
"""
Module de simaultaion d'une camera
"""
import random
import string
from src.m.Voiture import Voiture
## Une Camera
class Camera:
## Retourne une voiture genere aleatoirement de longueur entre 150 et 300 cm et de hauteur entre 100 et 200 cm
@staticmethod
def donnerVoiture():
v = Voiture(None, None, random.randint(150, 300), random.randint(100, 200), ''.join(

View File

@ -1,3 +0,0 @@

View File

@ -1,7 +1,12 @@
"""
Module de Gestion personnalisée d'élément Qt
"""
from PyQt4 import QtGui
## QMainWindow personnalisé
class MyQMainWindow(QtGui.QMainWindow):
## Ajout d'une boite de dialogue a la fermeture de la fenetre
def closeEvent(self, event):
result = QtGui.QMessageBox.question(self,
"Confirmer Fermeture...",
@ -11,22 +16,15 @@ class MyQMainWindow(QtGui.QMainWindow):
if result == QtGui.QMessageBox.Yes:
event.accept()
def error(self, msg):
"""
Qdialog message erreur
:return:
"""
QtGui.QMessageBox.warning(self._w,
"Erreur ...",
msg
)
## QWydget personnalisé
class MyQWidget(QtGui.QWidget):
## Ajout d'un controleur parent en parametre lors de la creation d'un Qwidget
def __init__(self, main):
super(MyQWidget, self).__init__()
self.__main = main
## Ajout d'une boite de dialogue a la fermeture de la fenetre
def closeEvent(self, event):
result = QtGui.QMessageBox.question(self,
"Confirmer Fermeture...",

View File

@ -1,3 +1,6 @@
"""
Module des classes d'affichage UI generés par QtDesigner pour les UI Admin
"""
from PyQt4 import QtCore, QtGui
try:
@ -15,7 +18,7 @@ except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
## UI page principal d'administration
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName(_fromUtf8("MainWindow"))
@ -248,7 +251,7 @@ class Ui_MainWindow(object):
self.action.setText(_translate("MainWindow", "?", None))
self.actionNouveau_2.setText(_translate("MainWindow", "Nouveau", None))
## UI de creatoin de parking
class Ui_CreaParking(object):
def setupUi(self, CreaParking):
CreaParking.setObjectName(_fromUtf8("CreaParking"))

View File

@ -1,3 +1,7 @@
"""
Module des classes d'affichage UI generés par QtDesigner pour les UI Utilisateurs
"""
from PyQt4 import QtCore, QtGui
try:
@ -15,7 +19,7 @@ except AttributeError:
def _translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
## Ui de la Borne
class Ui_Borne(object):
def setupUi(self, Borne):
Borne.setObjectName(_fromUtf8("Borne"))