diff --git a/src/Launchme.py b/src/Launchme.py
index 1443164..d2e4ead 100644
--- a/src/Launchme.py
+++ b/src/Launchme.py
@@ -4,9 +4,6 @@ from src.c.Main import Main
__author__ = 'sidya'
if __name__ == "__main__":
- # c = connexionBDD()
- #c.initialisationBDD()
- #c.seDeconnecter()
# lancement du controleur principal
main = Main()
diff --git a/src/c/log/__init__.py b/src/__init__.py
similarity index 100%
rename from src/c/log/__init__.py
rename to src/__init__.py
diff --git a/src/c/Acces.py b/src/c/Acces.py
deleted file mode 100644
index dcbbd43..0000000
--- a/src/c/Acces.py
+++ /dev/null
@@ -1,27 +0,0 @@
-from src.v import Ui_Panneau, Ui_Borne, Camera
-from src.m import Parking
-
-
-__author__ = 'sidya'
-
-
-class Acces:
- """
- Controleur Acces
- """
-
- def __init__(self):
- self.__parking = Parking()
- self.__camera = Camera()
- self.__borne = Ui_Borne()
- self.__panneau = Ui_Panneau()
-
- def actionnerCamera(self):
- return self.__camera.donnerVoiture()
-
- def majPanneau(self):
- self.__panneau.afficherNbPlaceDisponible()
-
- def lancerProcedureEntree(self, client):
- self.__borne.afficher("Inserer votre carte ou valider")
-
diff --git a/src/c/Borne.py b/src/c/Borne.py
index c3a745d..0428000 100644
--- a/src/c/Borne.py
+++ b/src/c/Borne.py
@@ -1,13 +1,12 @@
from PyQt4 import QtGui, QtCore
-
from src.c.Teleporteur import Teleporteur
from src.m.Parking import Placement
-from src.m.Client import Client
+from src.m.Abonnement import Client
+from src.m.Abonnement import TypeAbonnement
from src.m.Service import Service, TypeService
-from src.m.Client import TypeAbonnement
from src.v.Camera import Camera
-from src.v.MyQWidget import MyQWidget
-from src.v.Ui_Borne import Ui_Borne
+from src.v.MyQt import MyQWidget
+from src.v.Ui_User import Ui_Borne
__author__ = 'sidya'
@@ -43,10 +42,10 @@ class Borne:
self.__ui.btn_annuler.clicked.connect(self.nonVoiture)
self.__ui.btn_validerID.clicked.connect(self.identification)
self.__ui.btn_valider_abo.clicked.connect(self.abo)
+ self.__ui.btn_desabo.clicked.connect(self.desabo)
self.__ui.btn_garer.clicked.connect(self.garer)
self.__ui.btn_recuperer.clicked.connect(self.recuperer)
-
-
+ self.__ui.pushButton.clicked.connect(self.payer)
# Validator
validatorText = QtGui.QRegExpValidator(QtCore.QRegExp('^([a-zA-Z\'àâéèêôùûçñãõÀÂÉÈÔÙÛÑÃÕÇ\s-]{2,30})$'))
@@ -90,6 +89,7 @@ class Borne:
self.__ui.box_service.setDisabled(True)
self.__ui.btn_Voiture.setDisabled(False)
self.__ui.btn_desabo.setDisabled(True)
+ self.__ui.btn_quitter.setDisabled(False)
self.__ui.nomLineEdit.setText("")
self.__ui.prenomLineEdit.setText("")
@@ -98,6 +98,12 @@ class Borne:
self.__ui.lineEdit_id.setText("")
self.__ui.numeroTicketLineEdit.setText("")
self.__ui.labIdClient.setText("Non identifier")
+ self.__ui.btn_valider_abo.setText("Valider")
+ self.__ui.checkBox_Maintenance_2.setChecked(False)
+ self.__ui.checkBox_Entretien_2.setChecked(False)
+ self.__ui.checkBox_Livraison_2.setChecked(False)
+ self.__ui.lieuLineEdit_2.setText("")
+ self.__ui.dateTimeEdit.setDateTime(QtCore.QDateTime.currentDateTime())
Borne.MajBornes()
def newVoiture(self):
@@ -113,6 +119,7 @@ class Borne:
self.__ui.box_id.setDisabled(False)
self.__ui.box_recup.setDisabled(True)
self.__ui.label_aff.setText("Bienvenue !")
+ self.__ui.btn_quitter.setDisabled(True)
def identification(self):
@@ -128,6 +135,10 @@ class Borne:
self.__ui.box_service.setDisabled(False)
self.__ui.btn_desabo.setDisabled(False)
self.__v_actuel.setClient(self.__c)
+ self.__ui.nomLineEdit.setText(self.__c.nom)
+ self.__ui.prenomLineEdit.setText(self.__c.prenom)
+ self.__ui.numeroCarteLineEdit.setText(self.__c.cb)
+ self.__ui.btn_valider_abo.setText("Modifier")
self.__main.activity(self.__nomBorne + " : Mise a jour : " + str(self.__v_actuel), self.__main.lvl.INFO)
self.__main.activity(self.__nomBorne + " : Identification : " + str(self.__c), self.__main.lvl.INFO)
except IndexError:
@@ -145,10 +156,16 @@ class Borne:
:return:
"""
if self.__c != None:
- self.__c.maj(self.__ui.nomLineEdit,
- self.__ui.prenomLineEdit,
- "",
- TypeAbonnement.SUPER_ABONNE)
+ if self.__ui.checkBox.isChecked():
+ self.__c.maj(str(self.__ui.nomLineEdit.text()),
+ str(self.__ui.prenomLineEdit.text()),
+ str(self.__ui.numeroCarteLineEdit.text()),
+ TypeAbonnement.SUPER_ABONNE)
+ else:
+ self.__c.maj(str(self.__ui.nomLineEdit.text()),
+ str(self.__ui.prenomLineEdit.text()),
+ str(self.__ui.numeroCarteLineEdit.text()),
+ TypeAbonnement.ABONNE)
self.__ui.label_aff.setText("Mise a jour de votre abonnement effectué")
self.__main.activity(self.__nomBorne + " : Mise à jour : " + str(self.__c), self.__main.lvl.INFO)
else:
@@ -156,18 +173,31 @@ class Borne:
self.__c = Client(None,
str(self.__ui.nomLineEdit.text()),
str(self.__ui.prenomLineEdit.text()),
- "",
+ str(self.__ui.numeroCarteLineEdit.text()),
TypeAbonnement.SUPER_ABONNE)
else:
self.__c = Client(None,
str(self.__ui.nomLineEdit.text()),
str(self.__ui.prenomLineEdit.text()),
- "",
+ str(self.__ui.numeroCarteLineEdit.text()),
TypeAbonnement.ABONNE)
- self.identification()
+
self.__main.activity(self.__nomBorne + " : Ajout : " + str(self.__c), self.__main.lvl.INFO)
- self.__ui.label_aff.setText("Votre id membre est : " + self.__c.id)
self.__ui.lineEdit_id.setText(self.__c.id)
+ self.identification()
+ self.__ui.label_aff.setText("Votre id membre est : " + self.__c.id)
+
+ def desabo(self):
+ self.__c.desabo()
+ self.__c = None
+ self.__ui.nomLineEdit.setText("")
+ self.__ui.prenomLineEdit.setText("")
+ self.__ui.numeroCarteLineEdit.setText("")
+ self.__ui.lineEdit_id.setText("")
+ self.__ui.checkBox.setChecked(False)
+ self.__ui.box_id.setDisabled(False)
+ self.__ui.box_service.setDisabled(True)
+
def garer(self):
@@ -181,12 +211,23 @@ class Borne:
if p is not None:
placement = Teleporteur.teleporterVoiture(self.__v_actuel, p)
else:
- if self.__c.abonnement != TypeAbonnement.SUPER_ABONNE:
- p = self.__parking.recherchePlace(self.__v_actuel)
- if p is not None:
- placement = Teleporteur.teleporterVoiture(self.__v_actuel, p)
+ p = self.__parking.recherchePlace(self.__v_actuel)
+ if p is not None:
+ placement = Teleporteur.teleporterVoiture(self.__v_actuel, p)
+
+ # Si superAbo on cree une place sur mesure dans le cas ou acun est valide
+ if p is None and self.__c.abonnement == TypeAbonnement.SUPER_ABONNE:
+ placement = Teleporteur.teleporterVoitureSuperAbonne(self.__v_actuel, self.__parking)
+ p = placement.place
+ self.__main.activity(self.__nomBorne + " : Nouveau place SuperAbo : " + str(p), self.__main.lvl.INFO)
+
+ # Creation des service
+ if p is not None:
+ try :
if self.__ui.checkBox_Livraison_2.isChecked():
- s = Service(None, self.__c, placement, TypeService.LIVRAISON)
+ s = Service(None, self.__c, placement, TypeService.LIVRAISON,
+ self.__ui.dateTimeEdit.dateTime().toPyDateTime().timestamp(),
+ self.__ui.lieuLineEdit_2.text())
self.__main.activity(self.__nomBorne + " : Nouveau : " + str(s), self.__main.lvl.INFO)
if self.__ui.checkBox_Entretien_2.isChecked():
s = Service(None, self.__c, placement, TypeService.ENTRETIEN)
@@ -194,12 +235,13 @@ class Borne:
if self.__ui.checkBox_Maintenance_2.isChecked():
s = Service(None, self.__c, placement, TypeService.MAINTENANCE)
self.__main.activity(self.__nomBorne + " : Nouveau : " + str(s), self.__main.lvl.INFO)
- else:
- placement = Teleporteur.teleporterVoitureSuperAbonne(self.__v_actuel, self.__parking)
+ except Exception :
+ self.__main.activity(self.__nomBorne + " : Echec creation service : " + str(s), self.__main.lvl.FAIL)
+ self.error("Erreur lors de la creation des Services")
if placement is not None:
self.nonVoiture()
- self.ticketDepot(placement.id)
self.__main.activity(self.__nomBorne + " : Nouveau : " + str(placement), self.__main.lvl.INFO)
+ self.ticketDepot(placement.id)
else:
self.__ui.label_aff.setText("Aucune Place Correspondante. Devenez Super Abonné!")
self.__main.activity(self.__nomBorne + " : Pas de place dispo pour " + str(self.__v_actuel),
@@ -219,13 +261,31 @@ class Borne:
self.__main.activity(self.__nomBorne + " : Mauvais numero de ticket", self.__main.lvl.INFO)
try:
Teleporteur.teleporterVersSortie(p)
- except Exception:
- self.__ui.label_aff.setText("Voiture déjà recuperé")
+ except Exception as e :
+ self.__ui.label_aff.setText("Voiture déjà recuperée")
self.__main.activity(self.__nomBorne + " : Recuperation déjà effectué : " + str(p), self.__main.lvl.INFO)
+ if p.place.estSuperAbo :
+ p.place.supprimer()
+ self.__main.activity(self.__nomBorne + " : Suppresion place SuperAbo : " , self.__main.lvl.INFO)
if p is not None:
- self.nonVoiture()
- self.ticketRetrait(p, Service.getAllServicePlacement(p))
- self.__main.activity(self.__nomBorne + " : Recuperation : " + str(p), self.__main.lvl.INFO)
+ if p.voiture.client != "NULL":
+ self.ticketRetrait(p, Service.getAllServicePlacement(p))
+ self.__main.activity(self.__nomBorne + " : Recuperation Abo : " + str(p), self.__main.lvl.INFO)
+ self.nonVoiture()
+ else:
+ self.__placementAPayer = p
+ self.blockAll()
+ self.__ui.box_recup.setDisabled(False)
+ self.__ui.numeroTicketLineEdit.setDisabled(True)
+ self.__ui.btn_quitter.setDisabled(True)
+ self.__ui.pushButton.setDisabled(False)
+ self.__ui.numeroTicketLineEdit.setDisabled(True)
+
+
+ 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()
def ticketDepot(self, id):
QtGui.QMessageBox.information(self.__w,
@@ -249,13 +309,13 @@ class Borne:
name = "Entretien"
else:
name = "Autre Service"
-
- if service.estRealiser():
+ if service.estRealise:
s += "\nService : " + name + " + 2€"
else:
+ service.nonRealise()
s += "\nNous n'avons pas pu réaliser le service" + name + "."
s += "\nVeuillez nous excuser de la gène ocassionée."
- s += "Le Montant sera débiter automatiquement sur votre compte."
+ s += "\nLe Montant sera débiter automatiquement sur votre compte."
s += "\nMerci de votre confiance! Bonne journée !"
QtGui.QMessageBox.information(self.__w,
"Ticket",
@@ -269,8 +329,6 @@ class Borne:
:return:
"""
self.__w.show()
- self.__child = None # supprime l'eventuel widget enfant
- self.__w.focusWidget() # reprend le focus sur la fenetre
def quitter(self):
"""
@@ -280,7 +338,6 @@ class Borne:
self.__main.activity(self.__nomBorne + " : Quitter", self.__main.lvl.INFO)
self.__main.showWindow()
-
def error(self, msg):
"""
Qdialog message erreur
@@ -288,5 +345,6 @@ class Borne:
"""
QtGui.QMessageBox.warning(self._w,
"Erreur ...",
+ "Erreur lors de la création du parking ...\n" +
msg
- )
\ No newline at end of file
+ )
diff --git a/src/c/DetailsPlaces.py b/src/c/DetailsPlaces.py
deleted file mode 100644
index 4c7c44e..0000000
--- a/src/c/DetailsPlaces.py
+++ /dev/null
@@ -1,32 +0,0 @@
-from PyQt4.QtGui import QTableWidgetItem
-
-from src.c.CreaParking import CreaParking
-
-
-__author__ = 'sidya'
-
-
-class DetailsPlaces(CreaParking):
- def __init__(self, main, parking):
- self.__parking = parking
- super(DetailsPlaces, self).__init__(main)
-
- self._ui.lineEdit_nom.setText(parking.nom)
- for p in parking.typePlacesParNiv.l:
- row = self._ui.tableWidget.rowCount() - 1
- if row != 0:
- self._ui.tableWidget.insertRow(row)
- self._ui.tableWidget.setItem(row, 0, QTableWidgetItem(str(p.hauteur)))
- self._ui.tableWidget.setItem(row, 1, QTableWidgetItem(str(p.longueur)))
- self._ui.tableWidget.setItem(row, 2, QTableWidgetItem(str(p.nb)))
-
- self._ui.lineEdit_nom.setDisabled(True)
- self._ui.tableWidget.setDisabled(True)
- self._ui.btn_annuler.setVisible(False)
- self._ui.btn_addRow.setVisible(False)
- self._ui.btn_rmRow.setVisible(False)
-
- def valider(self):
- self._w.hide()
- self._main.showWindow()
-
diff --git a/src/c/Main.py b/src/c/Main.py
index 1cbeeed..f9fef5f 100644
--- a/src/c/Main.py
+++ b/src/c/Main.py
@@ -1,20 +1,20 @@
import sys
-from PyQt4 import QtGui
+from PyQt4 import QtGui, QtCore
+import datetime
+from src.c.Teleporteur import Teleporteur
from src.c.Borne import Borne
-from src.c.DetailsPlaces import DetailsPlaces
-from src.c.log.log import Log
-from src.c.log.log import lvl
-from src.c.CreaParking import CreaParking
-from src.m.Service import Service
-from src.m.Parking import Parking
-from src.m.Service import TypeService
-from src.m.connexionBDD import connexionBDD
-from src.v.MyQMainWindow import MyQMainWindow
-from src.v.Ui_MainWindow import Ui_MainWindow
+from src.c.Parking import CreaParking, DetailsPlaces
+from src.c.utils.connexionBDD import connexionBDD
+from src.c.utils.log import Log
+from src.c.utils.log import lvl
+from src.m.Abonnement import Client
+from src.m.Parking import Parking, Placement
+from src.m.Service import Service, TypeService
+from src.v.MyQt import MyQMainWindow
+from src.v.Ui_Admin import Ui_MainWindow
-__author__ = 'sidya'
class Main:
@@ -43,6 +43,7 @@ class Main:
self.__ui.actionSauvegarder.triggered.connect(self.sauver)
self.__ui.actionCharger.triggered.connect(self.charger)
self.__ui.actionQuitter.triggered.connect(self.quitter)
+ self.__ui.btn_modif_livraison.clicked.connect(self.majLivraison)
@@ -105,6 +106,8 @@ class Main:
self.__ui.comboBox_livraison.clear()
self.__ui.comboBox_entretien.clear()
self.__ui.comboBox_maintenance.clear()
+ self.__ui.dateTimeEdit.clear()
+ self.__ui.lieuLineEdit.clear()
self.__serviceLivraisons = []
self.__serviceEntretien = []
self.__serviceMaintenance = []
@@ -113,13 +116,21 @@ class Main:
if s.typeService == TypeService.LIVRAISON:
self.__serviceLivraisons.append(s)
self.__ui.comboBox_livraison.addItem(str(s.info))
+ time = QtCore.QDateTime(datetime.datetime.fromtimestamp(s.dateService))
+ self.__ui.dateTimeEdit.setDateTime(time)
+ self.__ui.lieuLineEdit.setText(str(s.lieu))
+
if s.typeService == TypeService.ENTRETIEN:
self.__serviceEntretien.append(s)
self.__ui.comboBox_entretien.addItem(str(s.info))
if s.typeService == TypeService.MAINTENANCE:
self.__serviceMaintenance.append(s)
self.__ui.comboBox_maintenance.addItem(str(s.info))
- #Onglet Stats
+
+ #Onglet Stats
+ self.__ui.labelNbAbo.setText(str(Client.nbAbo()))
+ self.__ui.labelNbSuperAbo.setText(str(Client.nbSuperAbo()))
+ self.__ui.labelMoySta.setText(str(Placement.dureeMoyPlacement()))
def doMaintenance(self):
@@ -129,7 +140,7 @@ class Main:
s.doService()
self.activity("Livraision reussit : " + str(s), self.lvl.INFO)
except Exception as e:
- self.activity("Livraision echoue : " + str(e), self.lvl.FAIL)
+ self.activity("Livraision echoue : " + str(e), self.lvl.FAIL)
self.error("Livraision echoué.")
self.selectParking()
@@ -149,12 +160,25 @@ class Main:
try:
s = self.__serviceLivraisons[self.__ui.comboBox_livraison.currentIndex()]
s.doService()
+ Teleporteur.teleporterVersSortie(s.placement)
self.activity("Livraison reussit : " + str(s), self.lvl.INFO)
except Exception as e:
self.activity("Livraison echoue : " + str(e), self.lvl.FAIL)
self.error("Livraison echoué.")
self.selectParking()
+ def majLivraison(self):
+ if len(self.__serviceLivraisons) > 0:
+ try:
+ s = self.__serviceLivraisons[self.__ui.comboBox_livraison.currentIndex()]
+ s.maj(self.__ui.dateTimeEdit.dateTime().toPyDateTime().timestamp(),
+ self.__ui.lieuLineEdit.text())
+ self.activity("Maj Livraison reussit : " + str(s), self.lvl.INFO)
+ except Exception as e:
+ self.activity("Maj Livraison echoue : " + str(e), self.lvl.FAIL)
+ self.error("Maj Livraison echoué.")
+ self.selectParking()
+
def creerParking(self):
self.__view.hide()
self.__widgetCourant = CreaParking(self)
@@ -239,7 +263,7 @@ class Main:
Qdialog message erreur
:return:
"""
- QtGui.QMessageBox.warning(self._w,
+ QtGui.QMessageBox.warning(self.__widgetCourant,
"Erreur ...",
msg
)
\ No newline at end of file
diff --git a/src/c/CreaParking.py b/src/c/Parking.py
similarity index 77%
rename from src/c/CreaParking.py
rename to src/c/Parking.py
index 544522a..8dce0e9 100644
--- a/src/c/CreaParking.py
+++ b/src/c/Parking.py
@@ -1,11 +1,8 @@
from PyQt4 import QtGui, QtCore
-
-from src.m.Parking import Parking, TypePlace
-from src.v.MyQWidget import MyQWidget
-from src.v.Ui_CreaParking import Ui_CreaParking
-
-
-__author__ = 'sidya'
+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
class CreaParking:
@@ -95,7 +92,6 @@ class CreaParking:
:return:
"""
self._w.show()
- self._w.focusWidget() # reprend le focus sur la fenetre
def error(self, msg):
"""
@@ -106,4 +102,29 @@ class CreaParking:
"Erreur ...",
"Erreur lors de la création du parking ...\n" +
msg
- )
\ No newline at end of file
+ )
+
+
+class DetailsPlaces(CreaParking):
+ def __init__(self, main, parking):
+ self.__parking = parking
+ super(DetailsPlaces, self).__init__(main)
+
+ self._ui.lineEdit_nom.setText(parking.nom)
+ for p in parking.typePlaces :
+ row = self._ui.tableWidget.rowCount() - 1
+ if row != 0:
+ self._ui.tableWidget.insertRow(row)
+ self._ui.tableWidget.setItem(row, 0, QTableWidgetItem(str(p.hauteur)))
+ self._ui.tableWidget.setItem(row, 1, QTableWidgetItem(str(p.longueur)))
+ self._ui.tableWidget.setItem(row, 2, QTableWidgetItem(str(p.nb)))
+
+ self._ui.lineEdit_nom.setDisabled(True)
+ self._ui.tableWidget.setDisabled(True)
+ self._ui.btn_annuler.setVisible(False)
+ self._ui.btn_addRow.setVisible(False)
+ self._ui.btn_rmRow.setVisible(False)
+
+ def valider(self):
+ self._w.hide()
+ self._main.showWindow()
\ No newline at end of file
diff --git a/src/v/Ticket.py b/src/c/utils/__init__.py
similarity index 95%
rename from src/v/Ticket.py
rename to src/c/utils/__init__.py
index 20df444..934a683 100644
--- a/src/v/Ticket.py
+++ b/src/c/utils/__init__.py
@@ -1,2 +1 @@
__author__ = 'sidya'
-
diff --git a/src/m/connexionBDD.py b/src/c/utils/connexionBDD.py
similarity index 98%
rename from src/m/connexionBDD.py
rename to src/c/utils/connexionBDD.py
index 4eae26f..35d6f89 100644
--- a/src/m/connexionBDD.py
+++ b/src/c/utils/connexionBDD.py
@@ -1,7 +1,4 @@
from shutil import copyfile
-
-__author__ = 'sidya'
-
import sqlite3
diff --git a/src/c/log/log.py b/src/c/utils/log.py
similarity index 86%
rename from src/c/log/log.py
rename to src/c/utils/log.py
index 0e2d41c..928906a 100644
--- a/src/c/log/log.py
+++ b/src/c/utils/log.py
@@ -1,3 +1,7 @@
+"""
+ Module de gestion de Log
+"""
+
import logging
from logging.handlers import RotatingFileHandler
@@ -15,7 +19,7 @@ class bcolors:
class lvl:
"""
- Define constant value for level log
+ Define constant value for level utils
"""
NOTSET = 0
DEBUG = 10
@@ -51,10 +55,10 @@ class Log(object):
def __init__(self):
"""
- Define 3 differents log :
- activity.log -> all activity
- warning.log -> only warning
- error.log -> error
+ Define 3 differents utils :
+ activity.utils -> all activity
+ warning.utils -> only warning
+ error.utils -> error
Write all message on terminal too
"""
self.logger = logging.getLogger()
@@ -80,9 +84,9 @@ class Log(object):
def printL(self, pMsg, pLvl):
"""
- Add color and write in log with an define level
- pMsg : message to write in log
- pLvl : level of log message
+ Add color and write in utils with an define level
+ pMsg : message to write in utils
+ pLvl : level of utils message
"""
if pLvl == lvl.DEBUG:
pMsg = bcolors.DEBUG + str(pMsg) + bcolors.ENDC
diff --git a/src/m/Abonnement.py b/src/m/Abonnement.py
new file mode 100644
index 0000000..0948ef2
--- /dev/null
+++ b/src/m/Abonnement.py
@@ -0,0 +1,132 @@
+"""
+ Module qui implémente les classes representants les Abonnements de DreamPark.
+"""
+import random
+import string
+from src.c.utils.connexionBDD import connexionBDD
+
+## Représentation d'un Client de DreamPark
+class Client:
+ ##
+ # Contsructeur du Client
+ # @param id Si None : Création du Client dans la bd a l'aide des autres parametres.
+ # Sinon : tentative de récupération du client avec cet id dans la bd
+ # @param nom nom du Client si creation
+ # @param prenom prenom du Client si creation
+ # @param cb cb du Client si creation
+ # @param typeAbonnement typeabonnement du client si creation
+ def __init__(self, id, nom=None, prenom=None, cb=None, typeAbonnement=None):
+
+ if id is None:
+ self.__nom = nom
+ self.__prenom = prenom
+ self.__typeAbonnement = typeAbonnement
+ self.__cb = cb
+ while True:
+ id = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in
+ range(random.randint(1, 10)))
+ try:
+ Client(id)
+ except IndexError:
+ break
+ self.__id = id
+ c = connexionBDD()
+ c.execute("INSERT INTO client (idClient, nom, prenom, cb, typeAbonnement) VALUES (?,?,?,?,?)",
+ (str(self.__id), str(self.__nom), str(self.__prenom), str(self.__cb), str(self.__typeAbonnement)))
+ c.seDeconnecter()
+ else:
+ c = connexionBDD()
+ r = c.execute("SELECT * FROM client WHERE idClient='" + str(id) + "'")
+ row = r.fetchone()
+ if row is None:
+ raise IndexError("Invalid id")
+ c.seDeconnecter()
+ self.__id = id
+ self.__nom = row["nom"]
+ self.__prenom = row["prenom"]
+ self.__typeAbonnement = row["typeAbonnement"]
+ self.__cb = row["cb"]
+
+ ## Mise a jour du Client
+ # @param nom nouveau nom
+ # @param prenom nouveau prenom
+ # @param cb nouveau cb
+ # @param typeAbonnement nouveau TypeAbonnement
+ def maj(self, nom, prenom, cb, typeAbonnement):
+ self.__nom = nom
+ self.__prenom = prenom
+ self.__typeAbonnement = typeAbonnement
+ self.__cb = cb
+ c = connexionBDD()
+ c.execute("UPDATE client SET nom = ?, prenom = ?, cb = ?, typeAbonnement = ? WHERE idClient = ?",
+ (str(self.__nom), str(self.__prenom), "", str(self.__typeAbonnement), str(self.__id)))
+ c.seDeconnecter()
+
+ ## Desabonne le Client en le supprimant
+ def desabo(self):
+ c = connexionBDD()
+ c.execute("DELETE FROM client WHERE idClient ='" + str(self.__id) + "'")
+ c.seDeconnecter()
+
+ ## Propriete : prenom du Client
+ @property
+ def prenom(self):
+ return self.__prenom
+
+ ## Propriete : nom du Client
+ @property
+ def nom(self):
+ return self.__nom
+
+ ## Propriete : id du Client
+ @property
+ def id(self):
+ return self.__id
+
+ ## Propriete : cb du Client
+ @property
+ def cb(self):
+ return self.__cb
+
+ ## Propriete : abonnement du Client
+ @property
+ def abonnement(self):
+ return self.__typeAbonnement
+
+ ## Retourne le nombre de super abonné
+ # @return nombre de super abonné
+ @staticmethod
+ def nbSuperAbo():
+ c = connexionBDD()
+ r = c.execute("SELECT COUNT(*) FROM client WHERE typeAbonnement = " + str(TypeAbonnement.SUPER_ABONNE))
+ nb = r.fetchone()[0]
+ c.seDeconnecter()
+ return nb
+
+ ## Retourne le nombre d'abonné
+ # @return nombre d'abonné
+ @staticmethod
+ def nbAbo():
+ c = connexionBDD()
+ r = c.execute("SELECT COUNT(*) FROM client WHERE typeAbonnement = " + str(TypeAbonnement.ABONNE))
+ nb = r.fetchone()[0]
+ c.seDeconnecter()
+ return nb
+
+
+
+ ## Representation du Client en chaine
+ def __str__(self):
+ return "[Client :" \
+ " id = " + str(self.__id) + ", "+\
+ " prenom = " + str(self.__prenom) + ", "+\
+ " nom = " + str(self.__nom) + ", " +\
+ " cb = " + str( self.__cb) + ", " +\
+ " typeAbonnement = " + str(self.__typeAbonnement) + "]"
+
+## Classe définissant les constantes de TypeAbonnement disponible pour le Client
+class TypeAbonnement:
+ ABONNE = 0
+ SUPER_ABONNE = 1
+
+
diff --git a/src/m/Client.py b/src/m/Client.py
deleted file mode 100644
index 33b4cf6..0000000
--- a/src/m/Client.py
+++ /dev/null
@@ -1,90 +0,0 @@
-import random
-import string
-
-from src.m.connexionBDD import connexionBDD
-
-
-__author__ = 'sidya'
-
-
-class Client:
- def __init__(self, id, nom=None, prenom=None, adresse=None, typeAbonnement=None):
- if id is None:
- self.__nom = nom
- self.__prenom = prenom
- self.__typeAbonnement = typeAbonnement
- self.__adresse = adresse
- while True:
- id = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in
- range(random.randint(1, 10)))
- try:
- Client(id)
- except IndexError:
- break
- self.__id = id
- c = connexionBDD()
- c.execute("INSERT INTO client (idClient, nom, prenom, adresse, typeAbonnement) VALUES (?,?,?,?,?)",
- (str(self.__id), str(self.__nom), str(self.__prenom), "", str(self.__typeAbonnement)))
- c.seDeconnecter()
- else:
- c = connexionBDD()
- r = c.execute("SELECT * FROM client WHERE idClient='" + str(id) + "'")
- row = r.fetchone()
- if row is None:
- raise IndexError("Invalid id")
- c.seDeconnecter()
- self.__id = id
- self.__nom = row["nom"]
- self.__prenom = row["prenom"]
- self.__typeAbonnement = row["typeAbonnement"]
- self.__adresse = row["adresse"]
-
- def maj(self, nom, prenom, adresse, typeAbonnement):
- self.__nom = nom
- self.__prenom = prenom
- self.__typeAbonnement = typeAbonnement
- self.__adresse = adresse
- c = connexionBDD()
- c.execute("UPDATE client SET nom = ?, prenom = ?, adresse = ?, typeAbonnement = ? WHERE idClient = ?",
- (str(self.__nom), str(self.__prenom), "", str(self.__typeAbonnement), str(self.__id)))
- c.seDeconnecter()
-
- def desabo(self):
- c = connexionBDD()
- c.execute("DELETE FROM client WHERE idClient ='" + str(id) + "'")
- c.seDeconnecter()
-
-
- @property
- def prenom(self):
- return self.__prenom
-
- @property
- def nom(self):
- return self.__nom
-
- @property
- def id(self):
- return self.__id
-
- @property
- def adr(self):
- return self.__adresse
-
- @property
- def abonnement(self):
- return self.__typeAbonnement
-
- def __str__(self):
- return "[Client :" \
- " id = " + str(self.__id) + ", " \
- " prenom = " + str(self.__prenom) + ", " \
- " nom = " + str(self.__nom) + ", " \
- " adresse = " + str(
- self.__adresse) + ", " \
- " typeAbonnement = " + str(self.__typeAbonnement) + "]"
-
-
-class TypeAbonnement:
- ABONNE = 0
- SUPER_ABONNE = 1
\ No newline at end of file
diff --git a/src/m/Parking.py b/src/m/Parking.py
index a7f9cc2..457d107 100644
--- a/src/m/Parking.py
+++ b/src/m/Parking.py
@@ -1,22 +1,22 @@
+"""
+ Module qui implémente les classes representants un parking de DreamPark.
+"""
import random
import string
import time
-import random
-import string
-import time
+from datetime import datetime
+from src.c.utils.connexionBDD import connexionBDD
from src.m.Voiture import Voiture
-from src.m.connexionBDD import connexionBDD
-from src.m.Voiture import Voiture
-from src.m.connexionBDD import connexionBDD
-__author__ = 'sidya'
-
+## Representation d'un parking de DreamPark
class Parking:
parkings = []
+ ## Retourne un objet parking correspondant à id
+ # @param id id du Parking a retourner
@staticmethod
def get(id):
if len(Parking.parkings) == 0:
@@ -25,6 +25,7 @@ class Parking:
if p.id == id:
return p
+ ## Retourne tout les Parking actif present dans la bd
@staticmethod
def getAllActif():
if len(Parking.parkings) == 0:
@@ -36,6 +37,8 @@ class Parking:
Parking(row["idParking"], row["nom"], None)
return Parking.parkings
+ ## Supprime un parking
+ # @param parking L'objet parking a supprimer
@staticmethod
def remove(parking):
Parking.parkings.remove(parking)
@@ -43,11 +46,15 @@ class Parking:
c.execute("UPDATE parking SET actif = 0 WHERE idParking='" + str(parking.id) + "'")
c.seDeconnecter()
+ ## Supprime les parkings present dans la mémoire vive (pas dans la bd)
@staticmethod
def removeAllRam():
Parking.parkings = []
-
+ ## Constructeur du Parking
+ # @param id Si None : Cree un Parking dans la BD Sinon : tentative de récupération du Parking avec cet id dans la bd
+ # @param nom : Si creation nom du parking
+ # @param listeTypePlace : Si creation Liste des TypePlace du parking
def __init__(self, id, nom=None, listeTypePlace=None):
self.__nom = nom
if id is None:
@@ -69,43 +76,56 @@ class Parking:
self.__id = id
self.parkings.append(self)
+ ## Propriete : id du Parking
@property
def id(self):
return self.__id
+ ## propriete : nom du Parking
@property
def nom(self):
return self.__nom
+ ## propriete : nombre de Place du Parking
@property
def nbPlaces(self):
return Place.nbPlaceParking(self.__id)
+ ## propriete : nombre de Place libres du Parking
@property
def nbPlacesLibresParking(self):
return Place.nbPlaceLibreParking(self.__id)
+ ## propriete : nombre de Place super abo
@property
def nbSuperAbo(self):
return Place.nbSuperAbo(self.__id)
+ ## Recherche une place pour une voiture
+ # @param voiture voiture pour laquel on recherche la place
+ # @return Place Si touvé : Place sinon : None
def recherchePlace(self, voiture):
- """
- Permet de rechercher une place valide pour une voiture
- :param voiture: Voiture
- :return: Place
- """
return Place.placeValide(self.__id, voiture)
- def addPlaceSuperAbo(self, parking):
- return Place(None, parking, None, None, False, True)
+ ## Ajout d'une place surmesure pour super abo
+ # @param parking le parking ou il faut ajouter la place
+ def addPlaceSuperAbo(self):
+ return Place(None, self, None, None, False, True)
+ ## Representation du Parking en chaine
def __str__(self):
return "[Parking : nom = " + self.__nom + "]"
-
+## Representation d'une place de DreamPark
class Place:
- def __init__(self, id=None, parking=None, typePlace=None, numero=None, estLibre=True, estSuperAbo=False):
+ ## Contructeur de Place
+ # @param id Si None : creation de la Place dans la bd Sinon : tentative de récupération de la Place avec cet id dans la bd
+ # @param parking Si creation : le Parking ou est creer la Place
+ # @param typePlace Si creation : le TypePlace de Place
+ # @param numero Si creation : le numero de Place
+ # @param estLibre Si creation : Si la Place est libre ou non
+ # @param estSuperAbo Si creation : Si la Place est superAbo ou non
+ def __init__(self, id, parking=None, typePlace=None, numero=None, estLibre=True, estSuperAbo=False):
if id is None:
self.__parking = parking
self.__typePlace = typePlace
@@ -137,17 +157,10 @@ class Place:
self.__estSuperAbo = row["estSuperAbo"]
self.__id = id
- @property
- def id(self):
- return self.__id
+ ## Rend la Place la indisponible
def prendre(self):
- """
- Rend la place indisponible
- :param Placement:
- :return:
- """
if (self.__estLibre == False):
raise Exception("Place déjà prise")
self.__estLibre = False
@@ -155,31 +168,49 @@ class Place:
c.execute("UPDATE place SET estLibre = 0 WHERE idPlace ='" + str(self.__id) + "'")
c.seDeconnecter()
+ ## Rend la Place disponible
def liberer(self):
- """
- Libere une place non dispo
- :return:
- """
if (self.__estLibre == True):
raise Exception("Impossible de liberer une place vide")
self.__estLibre = True
c = connexionBDD()
- c.execute(
- "UPDATE place SET estLibre = 1, fin ='" + str(time.time()) + "' WHERE idPlace ='" + str(self.__id) + "'")
+ c.execute("UPDATE place SET estLibre = 1 WHERE idPlace ='" + str(self.__id) + "'")
c.seDeconnecter()
+ ## Suppression place de la bd
+ def supprimer(self):
+ c = connexionBDD()
+ c.execute("DELETE FROM place idPlace ='" + str(self.__id) + "'")
+ c.seDeconnecter()
+
+ ## propriete : id de la Place
+ @property
+ def id(self):
+ return self.__id
+
+ ## propriete : identification etage : numero de la Place
@property
def identification(self):
return str(chr(self.__typePlace.niveau + ord('A')) + ":" + str(self.__numero))
+ ## propriete : True si la place est Place
@property
def estlibre(self):
return self.__estLibre
+ ## propriete : typePlace de la Place
@property
def typePlace(self):
return self.__typePlace
+ ## propriete : typePlace de la Place
+ @property
+ def estSuperAbo(self):
+ return self.__estSuperAbo
+
+ ## Retourne les nombre de place du Parking d'id idParking
+ # @param idParking l'id du Parking
+ # @return le nombre de Place
@staticmethod
def nbPlaceParking(idParking):
c = connexionBDD()
@@ -188,6 +219,9 @@ class Place:
c.seDeconnecter()
return row[0]
+ ## Retourne les nombre de place libre du Parking d'id idParking
+ # @param idParking l'id du Parking
+ # @return le nombre de Place libre
@staticmethod
def nbPlaceLibreParking(idParking):
c = connexionBDD()
@@ -196,6 +230,9 @@ class Place:
c.seDeconnecter()
return row[0]
+ ## Retourne les nombre de place superAbo du Parking d'id idParking
+ # @param idParking l'id du Parking
+ # @return le nombre de Place superAbo
@staticmethod
def nbSuperAbo(idParking):
c = connexionBDD()
@@ -204,6 +241,10 @@ class Place:
c.seDeconnecter()
return row[0]
+ ## Retourne si une Place valide pour une Voiture dans un parking
+ # @param idParking id du Parking ou est recherché la place
+ # @param voiture Voiture pour laquelle est recherché la place
+ # @return Si non trouve : None. Sinon : Place une place valide
@staticmethod
def placeValide(idPArking, voiture):
c = connexionBDD()
@@ -220,17 +261,25 @@ class Place:
row["numero"], bool(row["estLibre"]), bool(row["estSuperAbo"]))
+ ## Representation d'une Place en chaine
def __str__(self):
- return "[Place : " \
- "Parking = " + str(self.__parking) + "," \
- "typePlace = " + str(self.__typePlace) + "," \
- "numero = " + str(
- self.__numero) + "," \
- "estLibre = " + str(self.__estLibre) + "," \
- "estSuperAbo = " + str(self.__estSuperAbo) + "]" \
- \
- \
+ return "[Place : " +\
+ "Parking = " + str(self.__parking) + ","+\
+ "typePlace = " + str(self.__typePlace) + ","+\
+ "numero = " + str(self.__numero) + ","+\
+ "estLibre = " + str(self.__estLibre) + ","+\
+ "estSuperAbo = " + str(self.__estSuperAbo) + "]"
+
+
+## Representation d'un TypePlace de DreamPark
class TypePlace:
+ ## Constructeur de TypePlace
+ # @param id Si None : creation du TypePlace dans la bd Sinon : tentative de récupération du TypePlace avec cet id dans la bd
+ # @param longueur Longueur de la Place en cm
+ # @param hauteur Hauteur de la Place en cm
+ # @param nombre Nombre de Place de ce type
+ # @param prix Le prix pur ce type de Place
+ # @param niveau Le niveau ou se trouve les Place
def __init__(self, id, longueur=None, hauteur=None, nombre=None, prix=None, niveau=None):
if id is None:
self.__longueur = longueur
@@ -257,50 +306,53 @@ class TypePlace:
self.__niveau = row["niveau"]
self.__id = id
+ ## propriete : id du Typeplace
@property
def id(self):
return self.__id
+ ## propriete : longueur du Typeplace
@property
def longueur(self):
return self.__longueur
+ ## propriete : hauteur du Typeplace
@property
def hauteur(self):
return self.__hauteur
+ ## propriete : nombre du Typeplace
@property
def nombre(self):
return self.__nombre
+ ## propriete : prix du Typeplace
@property
def prix(self):
return self.__prix
+ ## propriete : niveau du Typeplace
@property
def niveau(self):
return self.__niveau
+ ## Representation du TypePlace en chaine
def __str__(self):
return "[TypePlace : " \
- "id = " + str(self.__id) + "," \
- "longueur = " + str(self.__longueur) + "," \
- "hauteur = " + str(
- self.__hauteur) + "," \
- "nombre = " + str(self.__nombre) + "," \
- "prix = " + str(self.__prix) + "," \
- "niveau = " + str(
- self.__niveau) + "]"
-
+ "id = " + str(self.__id) + ","+\
+ "longueur = " + str(self.__longueur) + ","+\
+ "hauteur = " + str(self.__hauteur) + ","+\
+ "nombre = " + str(self.__nombre) + "," +\
+ "prix = " + str(self.__prix) + ","+\
+ "niveau = " + str(self.__niveau) + "]"
+## Representation d'un Placement de DreamPark
class Placement:
- def __init__(self, id, voiture=None, place=None, debut=None, fin=None):
- """
- Creer un placement
- :param voiture: Voiture
- :param place: Place
- :return:
- """
+ ## Constructeur Placement
+ # @param id Si None : creation du Placement dans la bd Sinon : tentative de récupération du Placement avec cet id dans la bd
+ # @param voiture Si creation : Voiture lié au Placement
+ # @param place Si creation : Place lié au Placement
+ def __init__(self, id, voiture=None, place=None):
if id is None:
self.__voiture = voiture
self.__place = place
@@ -328,33 +380,47 @@ class Placement:
self.__voiture = Voiture(row["idVoiture"])
self.__place = Place(row["idPlace"])
self.__id = id
- self.__debut = debut
- self.__fin = fin
+ self.__debut = row["debut"]
+ self.__fin = row["fin"]
+ ## Propriete : id du Placement
@property
def id(self):
return self.__id
+ ## Propriete : place liée du Placement
@property
def place(self):
return self.__place
+ ## Propriete : voiture liée du Placement
@property
def voiture(self):
return self.__voiture
+ ## Retourne la durée moyenne des placement
+ # @return duree moyenne placement
+ @staticmethod
+ def dureeMoyPlacement():
+ c = connexionBDD()
+ r= c.execute("SELECT AVG(FIN - DEBUT) AS duree FROM placement")
+ nb = r.fetchone()[0]
+ c.seDeconnecter()
+ return nb
+
+ ## Fin du placement (depart voiture)
def end(self):
self.__fin = time.time()
c = connexionBDD()
- c.execute("UPDATE placement SET fin='" + str(self.__fin) + "' WHERE idPlacement='" + str(id) + "'")
+ c.execute("UPDATE placement SET fin='" + str(self.__fin) + "' WHERE idPlacement='" + str(self.__id) + "'")
c.seDeconnecter()
self.__place.liberer()
+ ## Representation du Placement en chaine
def __str__(self):
return "[Placement : " \
- "id = " + str(self.__id) + "," \
- "Voiture = " + str(self.__voiture) + "," \
- "Place = " + str(self.__place) + "," \
- "Debut = " + str(
- self.__debut) + "," \
- "Fin = " + str(self.__fin) + "]"
\ No newline at end of file
+ "id = " + str(self.__id) + "," +\
+ "Voiture = " + str(self.__voiture) + ","+\
+ "Place = " + str(self.__place) + "," +\
+ "Debut = " + str( self.__debut) + "," +\
+ "Fin = " + str(self.__fin) + "]"
\ No newline at end of file
diff --git a/src/m/Service.py b/src/m/Service.py
index 2956bba..bcec74f 100644
--- a/src/m/Service.py
+++ b/src/m/Service.py
@@ -1,55 +1,65 @@
import time
-from src.m.Client import Client
+from src.c.utils.connexionBDD import connexionBDD
+from src.m.Abonnement import Client
from src.m.Parking import Placement
-from src.m.connexionBDD import connexionBDD
-
-
-__author__ = 'sidya'
+## Representation d'un Service de DreamPack
class Service:
+ ## Retourne tout les services en cours dans le Parking parking
+ # @param parking Parking dont on veut connaitre les services
+ # @return Liste Service en cours
@staticmethod
def getAllEnCours(parking):
c = connexionBDD()
- r = c.execute("SELECT * FROM service WHERE dateRealisation is NULL "
+ r = c.execute("SELECT idService FROM service WHERE dateRealisation is NULL "
"AND idPlacement IN (SELECT idPlacement FROM PLACEMENT WHERE "
"idPlace IN (SELECT idPlace FROM Place WHERE idParking = '" + str(parking.id) + "'))")
rows = r.fetchall()
c.seDeconnecter()
l = []
for row in rows:
- l.append(Service(row["idService"], Client(row["idClient"]), Placement(row["idPlacement"]),
- row["typeService"], row["dateDemande"], row["dateService"], row["dateRealisation"]))
+ l.append(Service(row["idService"]))
print("l = " + str(l))
return l
+ ## Retourne tout les services associé a un Placement
+ # @param parking Parking dont on veut connaitre les services
+ # @return Liste Service associé a un Placement
@staticmethod
def getAllServicePlacement(placement):
c = connexionBDD()
- r = c.execute("SELECT * FROM service WHERE idPlacement ='" + str(placement.id) + "'")
+ r = c.execute("SELECT idService FROM service WHERE idPlacement ='" + str(placement.id) + "'")
rows = r.fetchall()
c.seDeconnecter()
l = []
for row in rows:
- l.append(Service(row["idService"], Client(row["idClient"]), Placement(row["idPlacement"]),
- row["typeService"], row["dateDemande"], row["dateService"], row["dateRealisation"]))
+ l.append(Service(row["idService"]))
print("l = " + str(l))
return l
+ ## Contructeur d'un Service
+ # @param id Si None : Cree un Service dans la BD Sinon : tentative de récupération du Service avec cet id dans la bd
+ # @param client Si creation : Client associe au Service
+ # @param placement Si creation : Placement associe au Service
+ # @param typeService Si creation : TypeService du Service
+ # @param dateService Si creation : date ou sera realise le service si necessaire
+ # @param lieu Si creation : lieu ou realise le service si necessaire
def __init__(self, id, client=None, placement=None, typeService=None,
- dateService=None, dateDemande=time.time(), dateRealisation=None):
+ dateService="NULL", lieu =""):
if id is None:
self.__client = client
self.__placement = placement
self.__typeService = typeService
- self.__dateDemande = dateDemande
+ self.__dateDemande = time.time()
self.__dateService = dateService
- self.__dateRealisation = dateRealisation
+ self.__dateRealisation = "NULL"
+ self.__lieu = lieu
c = connexionBDD()
- c.execute("INSERT INTO service (idClient,idPlacement, typeService, dateDemande) VALUES (?,?,?,?)",
+ c.execute("INSERT INTO service (idClient,idPlacement, typeService, dateDemande,dateService,lieu) VALUES (?,?,?,?,?,?)",
(str(self.__client.id), str(self.__placement.id), str(self.__typeService),
- str(self.__dateDemande)))
+ str(self.__dateDemande), str(self.__dateService),str(self.__lieu)))
self.__id = c.lastId()
c.seDeconnecter()
else:
@@ -66,31 +76,44 @@ class Service:
self.__dateDemande = row["dateDemande"]
self.__dateService = row["dateService"]
self.__dateRealisation = row["dateRealisation"]
+ self.__lieu = row["lieu"]
-
+ ## Propriete : id Service
@property
def id(self):
return self.__id
+ ## Propriete : TypeService du Service
@property
def typeService(self):
return self.__typeService
+ ## Propriete : Placement associe au Service
@property
def placement(self):
return self.__placement
+ ## Propriete : date ou le Service doit etre realisé
+ @property
+ def dateService(self):
+ return self.__dateService
+
+ ## Propriete : lieu ou le Service doit etre realisé
+ @property
+ def lieu(self):
+ return self.__lieu
+
+ ## Propriete : information interessante pout l'admin pour un Service
@property
def info(self):
- str = "Place : " + self.__placement.place.identification + "Imma : " + self.__placement.voiture.immatriculation
- if self.typeService == TypeService.LIVRAISON:
- str += "Date : " + self.__dateService
- return str
+ return "Place : " + self.__placement.place.identification + " Imma : " + self.__placement.voiture.immatriculation
+ ## Propriete : Retour si un service a été réalisé du Service
@property
def estRealise(self):
- return self.__dateRealisation is None or self.__dateRealisation == "NULL"
+ return self.__dateRealisation is not None and not self.__dateRealisation == "NULL"
+ ## Passe le service comme realise
def doService(self):
self.__dateRealisation = time.time()
c = connexionBDD()
@@ -98,18 +121,37 @@ class Service:
self.__id) + "'")
c.seDeconnecter()
+ ## Passe a un service a un etat de non realisé si le Client recupere sa Voiture avant que le Service est été réalisé
+ def nonRealise(self):
+ self.__dateRealisation = 1
+ c = connexionBDD()
+ c.execute("UPDATE service SET dateRealisation = '" + str(self.__dateRealisation) + "' WHERE idService='" + str(
+ self.__id) + "'")
+ c.seDeconnecter()
+
+ ## mise a jour de infos de livraison
+ def maj(self, datetime, lieu):
+ self.__dateService = datetime
+ self.__lieu = lieu
+ c = connexionBDD()
+ c.execute("UPDATE service SET dateService = '" + str(self.__dateService) +
+ "' , lieu = '" + str(self.__lieu) +
+ "' WHERE idService='" + str(self.__id) + "'")
+ c.seDeconnecter()
+
+ ## Representation en chaine d'un Service
def __str__(self):
return "[Service : " \
- "id = " + str(self.__id) + "," \
- "Client = " + str(self.__client) + "," \
- "TypeService = " + str(
- self.__typeService) + "," \
- "DateDemande = " + str(self.__dateDemande) + "," \
- "DateService = " + str(
- self.__dateService) + "," \
- "DateRealisation = " + str(self.__dateRealisation) + "]"
-
+ "id = " + str(self.__id) + ","+\
+ "Client = " + str(self.__client) + "," +\
+ "Placement = " + str(self.__placement) + "," +\
+ "TypeService = " + str( self.__typeService) + ","+\
+ "DateDemande = " + str(self.__dateDemande) + ","+\
+ "DateService = " + str( self.__dateService) + "," +\
+ "DateRealisation = " + str(self.__dateRealisation) + \
+ "Lieu = " + str( self.__lieu) +" ]"
+## Classe Representant les différents TypeService
class TypeService:
MAINTENANCE = 1
ENTRETIEN = 2
diff --git a/src/m/Voiture.py b/src/m/Voiture.py
index 4ea6502..16346b6 100644
--- a/src/m/Voiture.py
+++ b/src/m/Voiture.py
@@ -1,10 +1,17 @@
-from src.m.Client import Client
-from src.m.connexionBDD import connexionBDD
-
-__author__ = 'sidya'
-
+"""
+ Module qui implémente les classes representants d'une voiture de DreamPark.
+"""
+from src.c.utils.connexionBDD import connexionBDD
+from src.m.Abonnement import Client
+## Representation d'une Voiture de DreamPark
class Voiture:
+ ## Constucteur Voiture
+ # @param id Si None : Cree une Voiture dans la BD Sinon : tentative de récupération de la Voiture avec cet id dans la bd
+ # @param client Si creation Client qui posséde la Voiture
+ # @param longueur Si creation longueur de la Voiture
+ # @param hauteur Si creation hauteur de la Voiture
+ # @param imma Si creation imma de la Voiture
def __init__(self, id, client=None, longueur=None, hauteur=None, imma=None):
if id is None:
if client is None:
@@ -37,38 +44,44 @@ class Voiture:
self.__hauteur = row["hauteur"]
self.__imma = row["imma"]
+ ## Met a jour la possesion d'un voiture par un Client
+ # @param client Client qui posséde la voiture
def setClient(self, client):
self.__client = client
c = connexionBDD()
c.execute("UPDATE voiture SET idClient = '" + str(client.id) + "' WHERE idVoiture='" + str(self.id) + "'")
c.seDeconnecter()
-
+ ## propriete : id Voiture
@property
def id(self):
return self.__id
+ ## propriete : hauteur Voiture
@property
def hauteur(self):
return self.__hauteur
+ ## propriete : longueur Voiture
@property
def longueur(self):
return self.__longueur
+ ## propriete : immatriculation Voiture
@property
def immatriculation(self):
return self.__imma
+ ## propriete : Client possedant Voiture
@property
def client(self):
return self.__client
+ ## Representation d'une Voiture en chaine
def __str__(self):
return "[Voiture :" \
- " id = " + str(self.__id) + ", " \
- " client = " + str(self.__client) + ", " \
- " longueur = " + str(
- self.__longueur) + ", " \
- " hauteur = " + str(self.__hauteur) + ", " \
- " imma = " + str(self.__imma) + "]"
\ No newline at end of file
+ " id = " + str(self.__id) + ", "+\
+ " client = " + str(self.__client) + ", " +\
+ " longueur = " + str(self.__longueur) + ", " +\
+ " hauteur = " + str(self.__hauteur) + ", " +\
+ " imma = " + str(self.__imma) + "]"
\ No newline at end of file
diff --git a/src/m/table.sql b/src/m/table.sql
index af40348..0bc68f5 100644
--- a/src/m/table.sql
+++ b/src/m/table.sql
@@ -50,7 +50,7 @@ CREATE TABLE client (
idClient VARCHAR(10) PRIMARY KEY,
nom VARCHAR(20),
prenom VARCHAR(20),
- adresse VARCHAR(50),
+ cb VARCHAR(50),
typeAbonnement INTEGER
);
@@ -71,6 +71,7 @@ CREATE TABLE service (
dateDemande TIMESTAMP,
dateService TIMESTAMP DEFAULT NULL,
dateRealisation TIMESTAMP DEFAULT NULL,
+ lieu VARCHAR(255),
FOREIGN KEY (idClient) REFERENCES client(idClient),
FOREIGN KEY (idPlacement) REFERENCES placement(idPlacement)
);
\ No newline at end of file
diff --git a/src/v/Camera.py b/src/v/Camera.py
index 69b6d95..dea6421 100644
--- a/src/v/Camera.py
+++ b/src/v/Camera.py
@@ -1,12 +1,7 @@
import random
import string
-
from src.m.Voiture import Voiture
-
-__author__ = 'sidya'
-
-
class Camera:
@staticmethod
def donnerVoiture():
diff --git a/src/v/MyQMainWindow.py b/src/v/MyQMainWindow.py
deleted file mode 100644
index 1b278bc..0000000
--- a/src/v/MyQMainWindow.py
+++ /dev/null
@@ -1,14 +0,0 @@
-from PyQt4 import QtGui
-
-__author__ = 'sidya'
-
-
-class MyQMainWindow(QtGui.QMainWindow):
- def closeEvent(self, event):
- result = QtGui.QMessageBox.question(self,
- "Confirmer Fermeture...",
- "Etes vous sur de vouloir quitter ?",
- QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
- event.ignore()
- if result == QtGui.QMessageBox.Yes:
- event.accept()
\ No newline at end of file
diff --git a/src/v/MyQWidget.py b/src/v/MyQWidget.py
index 82bfc28..b28b04f 100644
--- a/src/v/MyQWidget.py
+++ b/src/v/MyQWidget.py
@@ -1,19 +1,3 @@
-from PyQt4 import QtGui
-
-__author__ = 'sidya'
-class MyQWidget(QtGui.QWidget):
- def __init__(self, main):
- super(MyQWidget, self).__init__()
- self.__main = main
- def closeEvent(self, event):
- result = QtGui.QMessageBox.question(self,
- "Confirmer Fermeture...",
- "Etes vous sur de vouloir quitter ?\n",
- QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
- event.ignore()
- if result == QtGui.QMessageBox.Yes:
- event.accept()
- self.__main.showWindow()
\ No newline at end of file
diff --git a/src/v/MyQt.py b/src/v/MyQt.py
new file mode 100644
index 0000000..d3d8b83
--- /dev/null
+++ b/src/v/MyQt.py
@@ -0,0 +1,38 @@
+from PyQt4 import QtGui
+
+
+class MyQMainWindow(QtGui.QMainWindow):
+ def closeEvent(self, event):
+ result = QtGui.QMessageBox.question(self,
+ "Confirmer Fermeture...",
+ "Etes vous sur de vouloir quitter ?",
+ QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
+ event.ignore()
+ if result == QtGui.QMessageBox.Yes:
+ event.accept()
+
+ def error(self, msg):
+ """
+ Qdialog message erreur
+ :return:
+ """
+ QtGui.QMessageBox.warning(self._w,
+ "Erreur ...",
+ msg
+ )
+
+
+class MyQWidget(QtGui.QWidget):
+ def __init__(self, main):
+ super(MyQWidget, self).__init__()
+ self.__main = main
+
+ def closeEvent(self, event):
+ result = QtGui.QMessageBox.question(self,
+ "Confirmer Fermeture...",
+ "Etes vous sur de vouloir quitter ?\n",
+ QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
+ event.ignore()
+ if result == QtGui.QMessageBox.Yes:
+ event.accept()
+ self.__main.showWindow()
\ No newline at end of file
diff --git a/src/v/Ui_MainWindow.py b/src/v/Ui_Admin.py
similarity index 58%
rename from src/v/Ui_MainWindow.py
rename to src/v/Ui_Admin.py
index e507cd6..e3184a0 100644
--- a/src/v/Ui_MainWindow.py
+++ b/src/v/Ui_Admin.py
@@ -1,12 +1,3 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'main.ui'
-#
-# Created: Thu Jan 22 09:11:44 2015
-# by: PyQt4 UI code generator 4.11.3
-#
-# WARNING! All changes made in this file will be lost!
-
from PyQt4 import QtCore, QtGui
try:
@@ -32,15 +23,12 @@ class Ui_MainWindow(object):
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.tabWidget = QtGui.QTabWidget(self.centralwidget)
- self.tabWidget.setGeometry(QtCore.QRect(20, 40, 561, 501))
+ self.tabWidget.setGeometry(QtCore.QRect(10, 40, 561, 501))
self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
self.tab = QtGui.QWidget()
self.tab.setObjectName(_fromUtf8("tab"))
- self.label = QtGui.QLabel(self.tab)
- self.label.setGeometry(QtCore.QRect(40, 10, 61, 15))
- self.label.setObjectName(_fromUtf8("label"))
self.listWidget = QtGui.QListWidget(self.tab)
- self.listWidget.setGeometry(QtCore.QRect(60, 50, 431, 261))
+ self.listWidget.setGeometry(QtCore.QRect(10, 10, 531, 451))
self.listWidget.setObjectName(_fromUtf8("listWidget"))
self.tabWidget.addTab(self.tab, _fromUtf8(""))
self.tab_2 = QtGui.QWidget()
@@ -112,26 +100,60 @@ class Ui_MainWindow(object):
self.btn_effectuer_entretien.setGeometry(QtCore.QRect(326, 60, 161, 27))
self.btn_effectuer_entretien.setObjectName(_fromUtf8("btn_effectuer_entretien"))
self.groupBox_3 = QtGui.QGroupBox(self.tab_3)
- self.groupBox_3.setGeometry(QtCore.QRect(30, 290, 511, 111))
+ self.groupBox_3.setGeometry(QtCore.QRect(30, 290, 511, 171))
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
self.comboBox_livraison = QtGui.QComboBox(self.groupBox_3)
self.comboBox_livraison.setGeometry(QtCore.QRect(10, 20, 481, 27))
self.comboBox_livraison.setObjectName(_fromUtf8("comboBox_livraison"))
self.btn_effectuer_livraison = QtGui.QPushButton(self.groupBox_3)
- self.btn_effectuer_livraison.setGeometry(QtCore.QRect(326, 70, 161, 27))
+ self.btn_effectuer_livraison.setGeometry(QtCore.QRect(320, 120, 161, 27))
self.btn_effectuer_livraison.setObjectName(_fromUtf8("btn_effectuer_livraison"))
+ self.dateTimeEdit = QtGui.QDateTimeEdit(self.groupBox_3)
+ self.dateTimeEdit.setGeometry(QtCore.QRect(290, 70, 194, 23))
+ self.dateTimeEdit.setObjectName(_fromUtf8("dateTimeEdit"))
+ self.formLayoutWidget = QtGui.QWidget(self.groupBox_3)
+ self.formLayoutWidget.setGeometry(QtCore.QRect(20, 70, 261, 31))
+ self.formLayoutWidget.setObjectName(_fromUtf8("formLayoutWidget"))
+ self.formLayout = QtGui.QFormLayout(self.formLayoutWidget)
+ self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)
+ self.formLayout.setMargin(0)
+ self.formLayout.setObjectName(_fromUtf8("formLayout"))
+ self.lieuLabel = QtGui.QLabel(self.formLayoutWidget)
+ self.lieuLabel.setObjectName(_fromUtf8("lieuLabel"))
+ self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.lieuLabel)
+ self.lieuLineEdit = QtGui.QLineEdit(self.formLayoutWidget)
+ self.lieuLineEdit.setObjectName(_fromUtf8("lieuLineEdit"))
+ self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.lieuLineEdit)
+ self.btn_modif_livraison = QtGui.QPushButton(self.groupBox_3)
+ self.btn_modif_livraison.setGeometry(QtCore.QRect(136, 120, 141, 27))
+ self.btn_modif_livraison.setObjectName(_fromUtf8("btn_modif_livraison"))
self.tabWidget.addTab(self.tab_3, _fromUtf8(""))
self.tab_4 = QtGui.QWidget()
self.tab_4.setObjectName(_fromUtf8("tab_4"))
- self.label_2 = QtGui.QLabel(self.tab_4)
- self.label_2.setGeometry(QtCore.QRect(40, 80, 161, 16))
+ self.formLayoutWidget_2 = QtGui.QWidget(self.tab_4)
+ self.formLayoutWidget_2.setGeometry(QtCore.QRect(60, 40, 461, 181))
+ self.formLayoutWidget_2.setObjectName(_fromUtf8("formLayoutWidget_2"))
+ self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_2)
+ self.formLayout_2.setMargin(0)
+ self.formLayout_2.setObjectName(_fromUtf8("formLayout_2"))
+ self.nombreAbonnLabel = QtGui.QLabel(self.formLayoutWidget_2)
+ self.nombreAbonnLabel.setObjectName(_fromUtf8("nombreAbonnLabel"))
+ self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.nombreAbonnLabel)
+ self.labelNbAbo = QtGui.QLabel(self.formLayoutWidget_2)
+ self.labelNbAbo.setObjectName(_fromUtf8("labelNbAbo"))
+ self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.labelNbAbo)
+ self.label_2 = QtGui.QLabel(self.formLayoutWidget_2)
self.label_2.setObjectName(_fromUtf8("label_2"))
- self.label_3 = QtGui.QLabel(self.tab_4)
- self.label_3.setGeometry(QtCore.QRect(40, 110, 161, 16))
- self.label_3.setObjectName(_fromUtf8("label_3"))
- self.label_4 = QtGui.QLabel(self.tab_4)
- self.label_4.setGeometry(QtCore.QRect(40, 140, 241, 16))
+ self.formLayout_2.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_2)
+ self.labelNbSuperAbo = QtGui.QLabel(self.formLayoutWidget_2)
+ self.labelNbSuperAbo.setObjectName(_fromUtf8("labelNbSuperAbo"))
+ self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.labelNbSuperAbo)
+ self.label_4 = QtGui.QLabel(self.formLayoutWidget_2)
self.label_4.setObjectName(_fromUtf8("label_4"))
+ self.formLayout_2.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_4)
+ self.labelMoySta = QtGui.QLabel(self.formLayoutWidget_2)
+ self.labelMoySta.setObjectName(_fromUtf8("labelMoySta"))
+ self.formLayout_2.setWidget(3, QtGui.QFormLayout.FieldRole, self.labelMoySta)
self.tabWidget.addTab(self.tab_4, _fromUtf8(""))
self.comboBox = QtGui.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(40, 10, 539, 27))
@@ -168,8 +190,8 @@ class Ui_MainWindow(object):
self.action.setObjectName(_fromUtf8("action"))
self.actionNouveau_2 = QtGui.QAction(MainWindow)
self.actionNouveau_2.setObjectName(_fromUtf8("actionNouveau_2"))
- self.menuFichier.addAction(self.actionCharger)
self.menuFichier.addAction(self.actionNouveau_2)
+ self.menuFichier.addAction(self.actionCharger)
self.menuFichier.addAction(self.actionSauvegarder)
self.menuFichier.addSeparator()
self.menuFichier.addAction(self.actionQuitter)
@@ -178,12 +200,11 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuA_propos.menuAction())
self.retranslateUi(MainWindow)
- self.tabWidget.setCurrentIndex(2)
+ self.tabWidget.setCurrentIndex(3)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "Administration", None))
- self.label.setText(_translate("MainWindow", "Activité :", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Activite", None))
self.label_13.setText(_translate("MainWindow", "Nom :", None))
self.nom.setText(_translate("MainWindow", "TextLabel", None))
@@ -191,7 +212,7 @@ class Ui_MainWindow(object):
self.placesParNiveau.setText(_translate("MainWindow", "TextLabel", None))
self.label_16.setText(_translate("MainWindow", "Places disponible :", None))
self.placesDispo.setText(_translate("MainWindow", "TextLabel", None))
- self.label_17.setText(_translate("MainWindow", "Places Reserve Super Abo : ", None))
+ self.label_17.setText(_translate("MainWindow", "Places Super Abo : ", None))
self.placesSuperAbo.setText(_translate("MainWindow", "TextLabel", None))
self.btn_details.setText(_translate("MainWindow", "Details Places", None))
self.btn_borne.setText(_translate("MainWindow", "Borne", None))
@@ -204,10 +225,15 @@ class Ui_MainWindow(object):
self.btn_effectuer_entretien.setText(_translate("MainWindow", "Effectuer Entretien", None))
self.groupBox_3.setTitle(_translate("MainWindow", "Livraison", None))
self.btn_effectuer_livraison.setText(_translate("MainWindow", "Effectuer Livraison", None))
+ self.lieuLabel.setText(_translate("MainWindow", "Lieu", None))
+ self.btn_modif_livraison.setText(_translate("MainWindow", "Modifer Livraison ", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Services", None))
- self.label_2.setText(_translate("MainWindow", "Frequentation par jour", None))
- self.label_3.setText(_translate("MainWindow", "Frequentation par mois", None))
- self.label_4.setText(_translate("MainWindow", "Duree moyenne de stationnement ", None))
+ self.nombreAbonnLabel.setText(_translate("MainWindow", "Nombre Abonné :", None))
+ self.labelNbAbo.setText(_translate("MainWindow", "TextLabel", None))
+ self.label_2.setText(_translate("MainWindow", "Nombre Super Abonné : ", None))
+ self.labelNbSuperAbo.setText(_translate("MainWindow", "TextLabel", None))
+ self.label_4.setText(_translate("MainWindow", "Durée Moyenne Stationnement :", None))
+ self.labelMoySta.setText(_translate("MainWindow", "TextLabel", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Stats", None))
self.menuFichier.setTitle(_translate("MainWindow", "Fichier", None))
self.menuA_propos.setTitle(_translate("MainWindow", "A propos", None))
@@ -222,3 +248,85 @@ class Ui_MainWindow(object):
self.action.setText(_translate("MainWindow", "?", None))
self.actionNouveau_2.setText(_translate("MainWindow", "Nouveau", None))
+
+class Ui_CreaParking(object):
+ def setupUi(self, CreaParking):
+ CreaParking.setObjectName(_fromUtf8("CreaParking"))
+ CreaParking.resize(622, 300)
+ self.layoutWidget = QtGui.QWidget(CreaParking)
+ self.layoutWidget.setGeometry(QtCore.QRect(230, 260, 201, 29))
+ self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
+ self.horizontalLayout_2 = QtGui.QHBoxLayout(self.layoutWidget)
+ self.horizontalLayout_2.setMargin(0)
+ self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
+ self.btn_annuler = QtGui.QPushButton(self.layoutWidget)
+ self.btn_annuler.setObjectName(_fromUtf8("btn_annuler"))
+ self.horizontalLayout_2.addWidget(self.btn_annuler)
+ self.btn_valider = QtGui.QPushButton(self.layoutWidget)
+ self.btn_valider.setObjectName(_fromUtf8("btn_valider"))
+ self.horizontalLayout_2.addWidget(self.btn_valider)
+ self.tableWidget = QtGui.QTableWidget(CreaParking)
+ self.tableWidget.setGeometry(QtCore.QRect(30, 100, 521, 141))
+ self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
+ self.tableWidget.setColumnCount(5)
+ self.tableWidget.setRowCount(0)
+ item = QtGui.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(0, item)
+ item = QtGui.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(1, item)
+ item = QtGui.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(2, item)
+ item = QtGui.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(3, item)
+ item = QtGui.QTableWidgetItem()
+ self.tableWidget.setHorizontalHeaderItem(4, item)
+ self.btn_addRow = QtGui.QPushButton(CreaParking)
+ self.btn_addRow.setGeometry(QtCore.QRect(570, 120, 41, 27))
+ self.btn_addRow.setObjectName(_fromUtf8("btn_addRow"))
+ self.btn_rmRow = QtGui.QPushButton(CreaParking)
+ self.btn_rmRow.setGeometry(QtCore.QRect(570, 170, 41, 27))
+ self.btn_rmRow.setObjectName(_fromUtf8("btn_rmRow"))
+ self.layoutWidget1 = QtGui.QWidget(CreaParking)
+ self.layoutWidget1.setGeometry(QtCore.QRect(180, 20, 291, 56))
+ self.layoutWidget1.setObjectName(_fromUtf8("layoutWidget1"))
+ self.horizontalLayout = QtGui.QHBoxLayout(self.layoutWidget1)
+ self.horizontalLayout.setMargin(0)
+ self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
+ self.verticalLayout = QtGui.QVBoxLayout()
+ self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
+ self.label = QtGui.QLabel(self.layoutWidget1)
+ self.label.setObjectName(_fromUtf8("label"))
+ self.verticalLayout.addWidget(self.label)
+ self.horizontalLayout.addLayout(self.verticalLayout)
+ self.verticalLayout_2 = QtGui.QVBoxLayout()
+ self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
+ self.lineEdit_nom = QtGui.QLineEdit(self.layoutWidget1)
+ self.lineEdit_nom.setObjectName(_fromUtf8("lineEdit_nom"))
+ self.verticalLayout_2.addWidget(self.lineEdit_nom)
+ self.horizontalLayout.addLayout(self.verticalLayout_2)
+
+ self.retranslateUi(CreaParking)
+ QtCore.QMetaObject.connectSlotsByName(CreaParking)
+ CreaParking.setTabOrder(self.lineEdit_nom, self.tableWidget)
+ CreaParking.setTabOrder(self.tableWidget, self.btn_addRow)
+ CreaParking.setTabOrder(self.btn_addRow, self.btn_rmRow)
+ CreaParking.setTabOrder(self.btn_rmRow, self.btn_annuler)
+ CreaParking.setTabOrder(self.btn_annuler, self.btn_valider)
+
+ def retranslateUi(self, CreaParking):
+ CreaParking.setWindowTitle(_translate("CreaParking", "Creation Parking", None))
+ self.btn_annuler.setText(_translate("CreaParking", "Annuler", None))
+ self.btn_valider.setText(_translate("CreaParking", "Valider", None))
+ item = self.tableWidget.horizontalHeaderItem(0)
+ item.setText(_translate("CreaParking", "Hauteur (cm)", None))
+ item = self.tableWidget.horizontalHeaderItem(1)
+ item.setText(_translate("CreaParking", "Longueur (cm)", None))
+ item = self.tableWidget.horizontalHeaderItem(2)
+ item.setText(_translate("CreaParking", "Nombre", None))
+ item = self.tableWidget.horizontalHeaderItem(3)
+ item.setText(_translate("CreaParking", "Etage", None))
+ item = self.tableWidget.horizontalHeaderItem(4)
+ item.setText(_translate("CreaParking", "Prix (€)", None))
+ self.btn_addRow.setText(_translate("CreaParking", "+", None))
+ self.btn_rmRow.setText(_translate("CreaParking", "-", None))
+ self.label.setText(_translate("CreaParking", "Nom :", None))
\ No newline at end of file
diff --git a/src/v/Ui_CreaParking.py b/src/v/Ui_CreaParking.py
deleted file mode 100644
index ebf2379..0000000
--- a/src/v/Ui_CreaParking.py
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'creationParking.ui'
-#
-# Created: Thu Feb 5 00:32:25 2015
-# by: PyQt4 UI code generator 4.11.3
-#
-# WARNING! All changes made in this file will be lost!
-
-from PyQt4 import QtCore, QtGui
-
-try:
- _fromUtf8 = QtCore.QString.fromUtf8
-except AttributeError:
- def _fromUtf8(s):
- return s
-
-try:
- _encoding = QtGui.QApplication.UnicodeUTF8
-
- def _translate(context, text, disambig):
- return QtGui.QApplication.translate(context, text, disambig, _encoding)
-except AttributeError:
- def _translate(context, text, disambig):
- return QtGui.QApplication.translate(context, text, disambig)
-
-
-class Ui_CreaParking(object):
- def setupUi(self, CreaParking):
- CreaParking.setObjectName(_fromUtf8("CreaParking"))
- CreaParking.resize(622, 300)
- self.layoutWidget = QtGui.QWidget(CreaParking)
- self.layoutWidget.setGeometry(QtCore.QRect(230, 260, 201, 29))
- self.layoutWidget.setObjectName(_fromUtf8("layoutWidget"))
- self.horizontalLayout_2 = QtGui.QHBoxLayout(self.layoutWidget)
- self.horizontalLayout_2.setMargin(0)
- self.horizontalLayout_2.setObjectName(_fromUtf8("horizontalLayout_2"))
- self.btn_annuler = QtGui.QPushButton(self.layoutWidget)
- self.btn_annuler.setObjectName(_fromUtf8("btn_annuler"))
- self.horizontalLayout_2.addWidget(self.btn_annuler)
- self.btn_valider = QtGui.QPushButton(self.layoutWidget)
- self.btn_valider.setObjectName(_fromUtf8("btn_valider"))
- self.horizontalLayout_2.addWidget(self.btn_valider)
- self.tableWidget = QtGui.QTableWidget(CreaParking)
- self.tableWidget.setGeometry(QtCore.QRect(30, 100, 521, 141))
- self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
- self.tableWidget.setColumnCount(5)
- self.tableWidget.setRowCount(0)
- item = QtGui.QTableWidgetItem()
- self.tableWidget.setHorizontalHeaderItem(0, item)
- item = QtGui.QTableWidgetItem()
- self.tableWidget.setHorizontalHeaderItem(1, item)
- item = QtGui.QTableWidgetItem()
- self.tableWidget.setHorizontalHeaderItem(2, item)
- item = QtGui.QTableWidgetItem()
- self.tableWidget.setHorizontalHeaderItem(3, item)
- item = QtGui.QTableWidgetItem()
- self.tableWidget.setHorizontalHeaderItem(4, item)
- self.btn_addRow = QtGui.QPushButton(CreaParking)
- self.btn_addRow.setGeometry(QtCore.QRect(570, 120, 41, 27))
- self.btn_addRow.setObjectName(_fromUtf8("btn_addRow"))
- self.btn_rmRow = QtGui.QPushButton(CreaParking)
- self.btn_rmRow.setGeometry(QtCore.QRect(570, 170, 41, 27))
- self.btn_rmRow.setObjectName(_fromUtf8("btn_rmRow"))
- self.layoutWidget1 = QtGui.QWidget(CreaParking)
- self.layoutWidget1.setGeometry(QtCore.QRect(180, 20, 291, 56))
- self.layoutWidget1.setObjectName(_fromUtf8("layoutWidget1"))
- self.horizontalLayout = QtGui.QHBoxLayout(self.layoutWidget1)
- self.horizontalLayout.setMargin(0)
- self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout"))
- self.verticalLayout = QtGui.QVBoxLayout()
- self.verticalLayout.setObjectName(_fromUtf8("verticalLayout"))
- self.label = QtGui.QLabel(self.layoutWidget1)
- self.label.setObjectName(_fromUtf8("label"))
- self.verticalLayout.addWidget(self.label)
- self.horizontalLayout.addLayout(self.verticalLayout)
- self.verticalLayout_2 = QtGui.QVBoxLayout()
- self.verticalLayout_2.setObjectName(_fromUtf8("verticalLayout_2"))
- self.lineEdit_nom = QtGui.QLineEdit(self.layoutWidget1)
- self.lineEdit_nom.setObjectName(_fromUtf8("lineEdit_nom"))
- self.verticalLayout_2.addWidget(self.lineEdit_nom)
- self.horizontalLayout.addLayout(self.verticalLayout_2)
-
- self.retranslateUi(CreaParking)
- QtCore.QMetaObject.connectSlotsByName(CreaParking)
- CreaParking.setTabOrder(self.lineEdit_nom, self.tableWidget)
- CreaParking.setTabOrder(self.tableWidget, self.btn_addRow)
- CreaParking.setTabOrder(self.btn_addRow, self.btn_rmRow)
- CreaParking.setTabOrder(self.btn_rmRow, self.btn_annuler)
- CreaParking.setTabOrder(self.btn_annuler, self.btn_valider)
-
- def retranslateUi(self, CreaParking):
- CreaParking.setWindowTitle(_translate("CreaParking", "Creation Parking", None))
- self.btn_annuler.setText(_translate("CreaParking", "Annuler", None))
- self.btn_valider.setText(_translate("CreaParking", "Valider", None))
- item = self.tableWidget.horizontalHeaderItem(0)
- item.setText(_translate("CreaParking", "Hauteur (cm)", None))
- item = self.tableWidget.horizontalHeaderItem(1)
- item.setText(_translate("CreaParking", "Longueur (cm)", None))
- item = self.tableWidget.horizontalHeaderItem(2)
- item.setText(_translate("CreaParking", "Nombre", None))
- item = self.tableWidget.horizontalHeaderItem(3)
- item.setText(_translate("CreaParking", "Etage", None))
- item = self.tableWidget.horizontalHeaderItem(4)
- item.setText(_translate("CreaParking", "Prix (€)", None))
- self.btn_addRow.setText(_translate("CreaParking", "+", None))
- self.btn_rmRow.setText(_translate("CreaParking", "-", None))
- self.label.setText(_translate("CreaParking", "Nom :", None))
-
diff --git a/src/v/Ui_Borne.py b/src/v/Ui_User.py
similarity index 98%
rename from src/v/Ui_Borne.py
rename to src/v/Ui_User.py
index 8e8e644..69134a0 100644
--- a/src/v/Ui_Borne.py
+++ b/src/v/Ui_User.py
@@ -1,12 +1,3 @@
-# -*- coding: utf-8 -*-
-
-# Form implementation generated from reading ui file 'borne.ui'
-#
-# Created: Sun Feb 1 14:38:43 2015
-# by: PyQt4 UI code generator 4.11.3
-#
-# WARNING! All changes made in this file will be lost!
-
from PyQt4 import QtCore, QtGui
try:
@@ -224,5 +215,4 @@ class Ui_Borne(object):
self.checkBox_Entretien_2.setText(_translate("Borne", "Entretien", None))
self.lieuLabel_2.setText(_translate("Borne", "Lieu", None))
self.btn_annuler.setText(_translate("Borne", "Annuler", None))
- self.btn_quitter.setText(_translate("Borne", "Quitter", None))
-
+ self.btn_quitter.setText(_translate("Borne", "Quitter", None))
\ No newline at end of file
diff --git a/ui/main.py b/ui/main.py
index 8c97ff1..07d37f1 100644
--- a/ui/main.py
+++ b/ui/main.py
@@ -2,7 +2,7 @@
# Form implementation generated from reading ui file 'main.ui'
#
-# Created: Thu Jan 22 09:11:44 2015
+# Created: Sat Feb 7 23:25:05 2015
# by: PyQt4 UI code generator 4.11.3
#
# WARNING! All changes made in this file will be lost!
@@ -30,15 +30,12 @@ class Ui_MainWindow(object):
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName(_fromUtf8("centralwidget"))
self.tabWidget = QtGui.QTabWidget(self.centralwidget)
- self.tabWidget.setGeometry(QtCore.QRect(20, 40, 561, 501))
+ self.tabWidget.setGeometry(QtCore.QRect(10, 40, 561, 501))
self.tabWidget.setObjectName(_fromUtf8("tabWidget"))
self.tab = QtGui.QWidget()
self.tab.setObjectName(_fromUtf8("tab"))
- self.label = QtGui.QLabel(self.tab)
- self.label.setGeometry(QtCore.QRect(40, 10, 61, 15))
- self.label.setObjectName(_fromUtf8("label"))
self.listWidget = QtGui.QListWidget(self.tab)
- self.listWidget.setGeometry(QtCore.QRect(60, 50, 431, 261))
+ self.listWidget.setGeometry(QtCore.QRect(10, 10, 531, 451))
self.listWidget.setObjectName(_fromUtf8("listWidget"))
self.tabWidget.addTab(self.tab, _fromUtf8(""))
self.tab_2 = QtGui.QWidget()
@@ -110,26 +107,60 @@ class Ui_MainWindow(object):
self.btn_effectuer_entretien.setGeometry(QtCore.QRect(326, 60, 161, 27))
self.btn_effectuer_entretien.setObjectName(_fromUtf8("btn_effectuer_entretien"))
self.groupBox_3 = QtGui.QGroupBox(self.tab_3)
- self.groupBox_3.setGeometry(QtCore.QRect(30, 290, 511, 111))
+ self.groupBox_3.setGeometry(QtCore.QRect(30, 290, 511, 171))
self.groupBox_3.setObjectName(_fromUtf8("groupBox_3"))
self.comboBox_livraison = QtGui.QComboBox(self.groupBox_3)
self.comboBox_livraison.setGeometry(QtCore.QRect(10, 20, 481, 27))
self.comboBox_livraison.setObjectName(_fromUtf8("comboBox_livraison"))
self.btn_effectuer_livraison = QtGui.QPushButton(self.groupBox_3)
- self.btn_effectuer_livraison.setGeometry(QtCore.QRect(326, 70, 161, 27))
+ self.btn_effectuer_livraison.setGeometry(QtCore.QRect(320, 120, 161, 27))
self.btn_effectuer_livraison.setObjectName(_fromUtf8("btn_effectuer_livraison"))
+ self.dateTimeEdit = QtGui.QDateTimeEdit(self.groupBox_3)
+ self.dateTimeEdit.setGeometry(QtCore.QRect(290, 70, 194, 23))
+ self.dateTimeEdit.setObjectName(_fromUtf8("dateTimeEdit"))
+ self.formLayoutWidget = QtGui.QWidget(self.groupBox_3)
+ self.formLayoutWidget.setGeometry(QtCore.QRect(20, 70, 261, 31))
+ self.formLayoutWidget.setObjectName(_fromUtf8("formLayoutWidget"))
+ self.formLayout = QtGui.QFormLayout(self.formLayoutWidget)
+ self.formLayout.setFieldGrowthPolicy(QtGui.QFormLayout.AllNonFixedFieldsGrow)
+ self.formLayout.setMargin(0)
+ self.formLayout.setObjectName(_fromUtf8("formLayout"))
+ self.lieuLabel = QtGui.QLabel(self.formLayoutWidget)
+ self.lieuLabel.setObjectName(_fromUtf8("lieuLabel"))
+ self.formLayout.setWidget(0, QtGui.QFormLayout.LabelRole, self.lieuLabel)
+ self.lieuLineEdit = QtGui.QLineEdit(self.formLayoutWidget)
+ self.lieuLineEdit.setObjectName(_fromUtf8("lieuLineEdit"))
+ self.formLayout.setWidget(0, QtGui.QFormLayout.FieldRole, self.lieuLineEdit)
+ self.btn_modif_livraison = QtGui.QPushButton(self.groupBox_3)
+ self.btn_modif_livraison.setGeometry(QtCore.QRect(136, 120, 141, 27))
+ self.btn_modif_livraison.setObjectName(_fromUtf8("btn_modif_livraison"))
self.tabWidget.addTab(self.tab_3, _fromUtf8(""))
self.tab_4 = QtGui.QWidget()
self.tab_4.setObjectName(_fromUtf8("tab_4"))
- self.label_2 = QtGui.QLabel(self.tab_4)
- self.label_2.setGeometry(QtCore.QRect(40, 80, 161, 16))
+ self.formLayoutWidget_2 = QtGui.QWidget(self.tab_4)
+ self.formLayoutWidget_2.setGeometry(QtCore.QRect(60, 40, 461, 181))
+ self.formLayoutWidget_2.setObjectName(_fromUtf8("formLayoutWidget_2"))
+ self.formLayout_2 = QtGui.QFormLayout(self.formLayoutWidget_2)
+ self.formLayout_2.setMargin(0)
+ self.formLayout_2.setObjectName(_fromUtf8("formLayout_2"))
+ self.nombreAbonnLabel = QtGui.QLabel(self.formLayoutWidget_2)
+ self.nombreAbonnLabel.setObjectName(_fromUtf8("nombreAbonnLabel"))
+ self.formLayout_2.setWidget(0, QtGui.QFormLayout.LabelRole, self.nombreAbonnLabel)
+ self.labelNbAbo = QtGui.QLabel(self.formLayoutWidget_2)
+ self.labelNbAbo.setObjectName(_fromUtf8("labelNbAbo"))
+ self.formLayout_2.setWidget(0, QtGui.QFormLayout.FieldRole, self.labelNbAbo)
+ self.label_2 = QtGui.QLabel(self.formLayoutWidget_2)
self.label_2.setObjectName(_fromUtf8("label_2"))
- self.label_3 = QtGui.QLabel(self.tab_4)
- self.label_3.setGeometry(QtCore.QRect(40, 110, 161, 16))
- self.label_3.setObjectName(_fromUtf8("label_3"))
- self.label_4 = QtGui.QLabel(self.tab_4)
- self.label_4.setGeometry(QtCore.QRect(40, 140, 241, 16))
+ self.formLayout_2.setWidget(2, QtGui.QFormLayout.LabelRole, self.label_2)
+ self.labelNbSuperAbo = QtGui.QLabel(self.formLayoutWidget_2)
+ self.labelNbSuperAbo.setObjectName(_fromUtf8("labelNbSuperAbo"))
+ self.formLayout_2.setWidget(2, QtGui.QFormLayout.FieldRole, self.labelNbSuperAbo)
+ self.label_4 = QtGui.QLabel(self.formLayoutWidget_2)
self.label_4.setObjectName(_fromUtf8("label_4"))
+ self.formLayout_2.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_4)
+ self.labelMoySta = QtGui.QLabel(self.formLayoutWidget_2)
+ self.labelMoySta.setObjectName(_fromUtf8("labelMoySta"))
+ self.formLayout_2.setWidget(3, QtGui.QFormLayout.FieldRole, self.labelMoySta)
self.tabWidget.addTab(self.tab_4, _fromUtf8(""))
self.comboBox = QtGui.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(40, 10, 539, 27))
@@ -166,8 +197,8 @@ class Ui_MainWindow(object):
self.action.setObjectName(_fromUtf8("action"))
self.actionNouveau_2 = QtGui.QAction(MainWindow)
self.actionNouveau_2.setObjectName(_fromUtf8("actionNouveau_2"))
- self.menuFichier.addAction(self.actionCharger)
self.menuFichier.addAction(self.actionNouveau_2)
+ self.menuFichier.addAction(self.actionCharger)
self.menuFichier.addAction(self.actionSauvegarder)
self.menuFichier.addSeparator()
self.menuFichier.addAction(self.actionQuitter)
@@ -176,12 +207,11 @@ class Ui_MainWindow(object):
self.menubar.addAction(self.menuA_propos.menuAction())
self.retranslateUi(MainWindow)
- self.tabWidget.setCurrentIndex(2)
+ self.tabWidget.setCurrentIndex(3)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(_translate("MainWindow", "Administration", None))
- self.label.setText(_translate("MainWindow", "Activité :", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "Activite", None))
self.label_13.setText(_translate("MainWindow", "Nom :", None))
self.nom.setText(_translate("MainWindow", "TextLabel", None))
@@ -189,7 +219,7 @@ class Ui_MainWindow(object):
self.placesParNiveau.setText(_translate("MainWindow", "TextLabel", None))
self.label_16.setText(_translate("MainWindow", "Places disponible :", None))
self.placesDispo.setText(_translate("MainWindow", "TextLabel", None))
- self.label_17.setText(_translate("MainWindow", "Places Reserve Super Abo : ", None))
+ self.label_17.setText(_translate("MainWindow", "Places Super Abo : ", None))
self.placesSuperAbo.setText(_translate("MainWindow", "TextLabel", None))
self.btn_details.setText(_translate("MainWindow", "Details Places", None))
self.btn_borne.setText(_translate("MainWindow", "Borne", None))
@@ -202,10 +232,15 @@ class Ui_MainWindow(object):
self.btn_effectuer_entretien.setText(_translate("MainWindow", "Effectuer Entretien", None))
self.groupBox_3.setTitle(_translate("MainWindow", "Livraison", None))
self.btn_effectuer_livraison.setText(_translate("MainWindow", "Effectuer Livraison", None))
+ self.lieuLabel.setText(_translate("MainWindow", "Lieu", None))
+ self.btn_modif_livraison.setText(_translate("MainWindow", "Modifer Livraison ", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "Services", None))
- self.label_2.setText(_translate("MainWindow", "Frequentation par jour", None))
- self.label_3.setText(_translate("MainWindow", "Frequentation par mois", None))
- self.label_4.setText(_translate("MainWindow", "Duree moyenne de stationnement ", None))
+ self.nombreAbonnLabel.setText(_translate("MainWindow", "Nombre Abonné :", None))
+ self.labelNbAbo.setText(_translate("MainWindow", "TextLabel", None))
+ self.label_2.setText(_translate("MainWindow", "Nombre Super Abonné : ", None))
+ self.labelNbSuperAbo.setText(_translate("MainWindow", "TextLabel", None))
+ self.label_4.setText(_translate("MainWindow", "Durée Moyenne Stationnement :", None))
+ self.labelMoySta.setText(_translate("MainWindow", "TextLabel", None))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), _translate("MainWindow", "Stats", None))
self.menuFichier.setTitle(_translate("MainWindow", "Fichier", None))
self.menuA_propos.setTitle(_translate("MainWindow", "A propos", None))
diff --git a/ui/main.ui b/ui/main.ui
index c448b28..e25029a 100644
--- a/ui/main.ui
+++ b/ui/main.ui
@@ -17,39 +17,26 @@
- 20
+ 10
40
561
501
- 1
+ 3
Activite
-
-
-
- 40
- 10
- 61
- 15
-
-
-
- Activité :
-
-
- 60
- 50
- 431
- 261
+ 10
+ 10
+ 531
+ 451
@@ -109,7 +96,7 @@
-
- Places Reserve Super Abo :
+ Places Super Abo :
@@ -238,7 +225,7 @@
30
290
511
- 111
+ 171
@@ -257,8 +244,8 @@
- 326
- 70
+ 320
+ 120
161
27
@@ -267,50 +254,113 @@
Effectuer Livraison
+
+
+
+ 290
+ 70
+ 194
+ 23
+
+
+
+
+
+
+ 20
+ 70
+ 261
+ 31
+
+
+
+
+ QFormLayout::AllNonFixedFieldsGrow
+
+ -
+
+
+ Lieu
+
+
+
+ -
+
+
+
+
+
+
+
+ 136
+ 120
+ 141
+ 27
+
+
+
+ Modifer Livraison
+
+
Stats
-
+
- 40
- 80
- 161
- 16
+ 60
+ 40
+ 461
+ 181
-
- Frequentation par jour
-
-
-
-
-
- 40
- 110
- 161
- 16
-
-
-
- Frequentation par mois
-
-
-
-
-
- 40
- 140
- 241
- 16
-
-
-
- Duree moyenne de stationnement
-
+
+ -
+
+
+ Nombre Abonné :
+
+
+
+ -
+
+
+ TextLabel
+
+
+
+ -
+
+
+ Nombre Super Abonné :
+
+
+
+ -
+
+
+ TextLabel
+
+
+
+ -
+
+
+ Durée Moyenne Stationnement :
+
+
+
+ -
+
+
+ TextLabel
+
+
+
+