This commit is contained in:
sidya82
2015-02-04 14:20:39 +01:00
parent bf06106e04
commit 952b215c0c
34 changed files with 1301 additions and 586 deletions

View File

@ -1,6 +1,6 @@
import random
import string
import datetime
import time
from src.m.Voiture import Voiture
from src.m.connexionBDD import connexionBDD
@ -10,30 +10,51 @@ __author__ = 'sidya'
class Parking:
parkings = []
@staticmethod
def get(id):
if len(Parking.parkings) == 0 :
Parking.getAllActif()
for p in Parking.parkings :
if p.id == id :
return p
@staticmethod
def getAll():
def getAllActif():
if len(Parking.parkings) == 0 :
c = connexionBDD()
r = c.execute("SELECT * FROM parking WHERE actif = 1")
rows = r.fetchall()
c.seDeconnecter()
for row in rows :
Parking(row["idParking"], row["nom"], None)
return Parking.parkings
def __init__(self, nom, listeTypePlace):
self.__nom = nom
@staticmethod
def remove(parking):
Parking.parkings.remove(parking)
c = connexionBDD()
c.execute("INSERT INTO parking (nom) VALUES ('"+str(self.__nom)+"')", ())
self.__id = c.lastId()
c.execute("UPDATE parking SET actif = 0 WHERE idParking='"+str(parking.id)+"'")
c.seDeconnecter()
#Crea des places
n = 0
for typePlace in listeTypePlace :
for i in range(typePlace.nombre) :
print(Place(None,self,typePlace,1,n,True,False))
n += 1
@staticmethod
def removeAllRam():
Parking.parkings = []
def __init__(self, id, nom=None, listeTypePlace=None):
self.__nom = nom
if id is None :
c = connexionBDD()
c.execute("INSERT INTO parking (nom) VALUES ('"+str(self.__nom)+"')", ())
self.__id = c.lastId()
#Crea des places
n = 0
for typePlace in listeTypePlace :
for i in range(typePlace.nombre) :
print(Place(None,self,typePlace,n,1,True,False))
n += 1
else :
self.__id = id
self.parkings.append(self)
@property
@ -64,40 +85,47 @@ class Parking:
"""
return Place.placeValide(self.__id, voiture)
def addPlaceSuperAbo(self, parking):
return Place(None, parking, None, None, None, True)
def __str__(self):
return "[Parking : nom = " + self.__nom +"]"
class Place:
@staticmethod
def get(id):
c = connexionBDD()
r = c.execute("SELECT * FROM place WHERE idPlace='"+str(id)+"'")
row = r.fetchone()
if row is None :
raise IndexError("Invalid id")
c.seDeconnecter()
return Place(id,row["idParking"],row["idTypePlace"],row["niveau"],
row["numero"],row["estLibre"],row["estSuperAbo"])
def __init__(self, id, parking, typePlace, niveau, numero, estLibre, estSuperAbo):
self.__parking = parking
self.__typePlace = typePlace
self.__niveau = niveau
self.__numero = numero
self.__estLibre = estLibre
self.__estSuperAbo = estSuperAbo
def __init__(self, id=None, parking=None, typePlace=None, numero=None, niveau=None,estLibre=True, estSuperAbo=False):
if id is None :
self.__parking = parking
self.__typePlace = typePlace
self.__numero = numero
self.__niveau = niveau
self.__estLibre = estLibre
self.__estSuperAbo = estSuperAbo
c = connexionBDD()
c.execute("INSERT INTO place (idParking, idTypePlace, niveau, numero, estLibre, estSuperAbo) "
"VALUES (?,?,?,?,?,?)",
(self.__parking.id, self.__typePlace.id,self.__niveau,
self.__numero, self.__estLibre, int(self.__estSuperAbo)))
c.execute("INSERT INTO place (idParking, idTypePlace, numero, estLibre, estSuperAbo) "
"VALUES (?,?,?,?,?)",
(self.__parking.id, self.__typePlace.id,
self.__numero, int(self.__estLibre), int(self.__estSuperAbo)))
self.__id = c.lastId()
c.seDeconnecter()
else :
c = connexionBDD()
r = c.execute("SELECT * FROM place WHERE idPlace='"+str(id)+"'")
row = r.fetchone()
if row is None :
raise IndexError("Invalid id")
c.seDeconnecter()
self.__parking = Parking.get(row["idParking"])
self.__typePlace = TypePlace(row["idTypePlace"])
self.__numero = row["numero"]
self.__estLibre = row["estLibre"]
self.__estSuperAbo = row["estSuperAbo"]
self.__id = id
@property
def id(self):
return self.__id
def prendre(self):
"""
Rend la place indisponible
@ -108,7 +136,7 @@ class Place:
raise Exception("Place déjà prise")
self.__estLibre = False
c = connexionBDD()
c.execute("UPDATE place SET estLibre = 0 WHERE idPlace = ?", (str(self.__id)))
c.execute("UPDATE place SET estLibre = 0 WHERE idPlace ='"+str(self.__id)+"'")
c.seDeconnecter()
def liberer(self):
@ -118,16 +146,23 @@ class Place:
"""
if (self.__estLibre == True):
raise Exception("Impossible de liberer une place vide")
self.__estLibre = False
self.__estLibre = True
c = connexionBDD()
c.execute("UPDATE place SET estLibre = 1 WHERE idPlace = ?", (str(self.__id)))
c.execute("UPDATE place SET estLibre = 1 WHERE idPlace ='"+str(self.__id)+"'")
c.seDeconnecter()
@property
def identification(self):
return TypePlace(self.__typePlace).niveau + ":" + self.__numero
@property
def estlibre(self):
return self.__estLibre
@staticmethod
def nbPlaceParking(idParking):
c = connexionBDD()
print("lol")
r = c.execute("SELECT COUNT(*) FROM place WHERE idParking = ?", (str(idParking)))
r = c.execute("SELECT COUNT(*) FROM place WHERE idParking = " + str(idParking))
row = r.fetchone()
c.seDeconnecter()
return row[0]
@ -135,7 +170,7 @@ class Place:
@staticmethod
def nbPlaceLibreParking(idParking):
c = connexionBDD()
r = c.execute("SELECT COUNT(*) FROM place WHERE idParking = ? AND estLibre = 1", (str(idParking)))
r = c.execute("SELECT COUNT(*) FROM place WHERE idParking = "+str(idParking)+" AND estLibre = 1")
row = r.fetchone()
c.seDeconnecter()
return row[0]
@ -143,7 +178,7 @@ class Place:
@staticmethod
def nbSuperAbo(idParking):
c = connexionBDD()
r = c.execute("SELECT COUNT(*) FROM place WHERE idParking = ? AND estSuperAbo = 1", (str(idParking)))
r = c.execute("SELECT COUNT(*) FROM place WHERE idParking = "+str(idParking)+" AND estSuperAbo = 1")
row = r.fetchone()
c.seDeconnecter()
return row[0]
@ -160,48 +195,47 @@ class Place:
if row is None :
return None
else :
return Place(row["idPlace"],row["idParking"], row["idtypePlace"],
row["niveau"], row["numero"], bool(row["estLibre"]), bool(row["estSuperAbo"]))
return Place(row["idPlace"],row["idParking"], row["idTypePlace"],
row["numero"], bool(row["estLibre"]), bool(row["estSuperAbo"]))
def __str__(self):
return "[Place : " \
"Parking = " + str(self.__parking) + "," \
"typePlace = " + str(self.__typePlace) + "," \
"niveau = " + str(self.__niveau) + "," \
"numero = " + str(self.__numero) + "," \
"estLibre = " + str(self.__estLibre) + "," \
"estSuperAbo = " + str(self.__estSuperAbo) + "]" \
@property
def id(self):
return self.__id
class TypePlace:
@staticmethod
def get(id):
c = connexionBDD()
r = c.execute("SELECT * FROM typePlace WHERE idTypePlace='"+str(id)+"'")
row = r.fetchone()
if row is None :
raise IndexError("Invalid id")
c.seDeconnecter()
return TypePlace(id,row["longueur"],row["hauteur"],row["nombre"])
def __init__(self, id ,longueur, hauteur, nombre):
self.__longueur = longueur
self.__hauteur = hauteur
self.__nombre = nombre
def __init__(self, id ,longueur=None, hauteur=None, nombre=None, prix=None, niveau=None):
if id is None :
self.__longueur = longueur
self.__hauteur = hauteur
self.__nombre = nombre
self.__prix = prix
self.__niveau = niveau
c = connexionBDD()
c.execute("INSERT INTO typePlace (longueur,hauteur,nombre) VALUES (?,?,?)",
(self.__longueur, self.__hauteur, self.__nombre))
c.execute("INSERT INTO typePlace (longueur,hauteur,nombre, prix, niveau) VALUES (?,?,?,?,?)",
(self.__longueur, self.__hauteur, self.__nombre,self.__prix, self.__niveau))
self.__id = c.lastId()
c.seDeconnecter()
else:
c = connexionBDD()
r = c.execute("SELECT * FROM typePlace WHERE idTypePlace='"+str(id)+"'")
row = r.fetchone()
if row is None :
raise IndexError("Invalid id")
c.seDeconnecter()
self.__longueur = row["longueur"]
self.__hauteur = row["hauteur"]
self.__nombre = row["nombre"]
self.__prix = row["prix"]
self.__niveau = row["niveau"]
self.__id = id
@property
@ -220,43 +254,36 @@ class TypePlace:
def nombre(self):
return self.__nombre
@property
def prix(self):
return self.__prix
@property
def niveau(self):
return self.__niveau
def __str__(self):
return "[TypePlace : " \
"id = " + str(self.__id) + "," \
"longueur = " + str(self.__longueur) + "," \
"hauteur = " + str(self.hauteur) + "," \
"nombre = " + str(self.nombre) + "]"
"hauteur = " + str(self.__hauteur) + "," \
"nombre = " + str(self.__nombre) + "," \
"prix = " + str(self.__prix) + "," \
"niveau = " + str(self.__niveau) + "]"
class Placement:
placementsEnCours = []
@staticmethod
def get(id):
c = connexionBDD()
r = c.execute("SELECT * FROM placement WHERE idPlacement='"+str(id)+"'")
row = r.fetchone()
if row is None :
raise IndexError("Invalid id")
c.seDeconnecter()
print(row["idVoiture"])
return Placement(row["idPlacement"], Voiture.get(row["idVoiture"]), Place.get(row["idPlace"]),
row["debut"], row["fin"])
def __init__(self,id, voiture, place, debut, fin):
def __init__(self, id, voiture=None, place=None, debut=None, fin=None):
"""
Creer un placement
:param voiture: Voiture
:param place: Place
:return:
"""
self.__voiture = voiture
self.__place = place
place.prendre()
self.placementsEnCours.append(self)
if id is None :
self.__debut = datetime.datetime
self.__voiture = voiture
self.__place = place
self.__debut = time.time()
self.__fin = None
while True:
id = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in
@ -271,6 +298,14 @@ class Placement:
self.__id = id
c.seDeconnecter()
else:
c = connexionBDD()
r = c.execute("SELECT * FROM placement WHERE idPlacement='"+str(id)+"'")
row = r.fetchone()
if row is None :
raise IndexError("Invalid id")
c.seDeconnecter()
self.__voiture = row["voiture"]
self.__place = row["place"]
self.__id = id
self.__debut = debut
self.__fin = fin
@ -279,23 +314,20 @@ class Placement:
def id(self):
return self.__id
@property
def place(self):
return self.__place
def end(self):
self.__fin = time.time()
c = connexionBDD()
c.execute("UPDATE placement SET fin='"+str(self.__fin)+"' WHERE idPlacement='"+str(id)+"'")
c.seDeconnecter()
def __str__(self):
return "[Placement : " \
"id = " + self.__id +"," \
"Voiture = " + self.__voiture +"," \
"Place = " + self.__place +"," \
"Debut = " + self.__debut +"," \
"Fin = " + self.__fin +"]"
if __name__ == "__main__" :
c = connexionBDD()
c.initialisationBDD()
c.seDeconnecter()
listeTypePlaces = []
listeTypePlaces.append(TypePlace(None,200, 300,10))
listeTypePlaces.append(TypePlace(None,120, 250,15))
p = Parking("test",listeTypePlaces)
print (p)
"id = " + str(self.__id) +"," \
"Voiture = " + str(self.__voiture) +"," \
"Place = " + str(self.__place) +"," \
"Debut = " + str(self.__debut) +"," \
"Fin = " + str(self.__fin) +"]"