Beispiel #1
0
	def cargar_vehiculo(self, id_vehiculo = None):
		"""Administra las filas de la tabla autos. 
			Si el parámetro id_vehiculo es None, se trabajará con todos las autos, 
			de lo contrario, el método mismo, buscará los autos necesarias. 
		"""
		productos = []
		if id_vehiculo==None:
			productos = controlador('obtener autos', None)
		else:
			for i in id_vehiculo:
				#print controlador('obtener auto', i)[0]
				productos.append(controlador('obtener auto', i)[0])	
		self.ui.tabla_ve.clear()
		self.set_headers()
		self.ui.tabla_ve.setRowCount(len(productos))
		r = 0
		for row in productos:
			tipo = controlador('obtener tipo', [row[3]])[0][0]
			marca = controlador('obtener marca', [row[2]])[0][1]
			item = QtGui.QTableWidgetItem(str(row[0]))
			self.ui.tabla_ve.setItem(r,0,item)
			item = QtGui.QTableWidgetItem(row[1])
			self.ui.tabla_ve.setItem(r,1,item)
			item = QtGui.QTableWidgetItem(marca)
			self.ui.tabla_ve.setItem(r,2,item)
			item = QtGui.QTableWidgetItem(str(row[10]))
			self.ui.tabla_ve.setItem(r,3,item)
			item = QtGui.QTableWidgetItem(tipo)
			self.ui.tabla_ve.setItem(r,4,item)
			r = r+1
		self.ui.tabla_ve.setColumnHidden(0,True)
Beispiel #2
0
	def cargar_marca(self, id_marca = None):
		"""Administra las filas de la tabla marcas. 
			Si el parámetro id_marca es None, se trabajará con todas las marcas, 
			de lo contrario, el método mismo, buscará las marcas necesarias. 
		"""
		marcas = []
		if id_marca==None:
			marcas = controlador('obtener marcas', None)
		else:
			for i in id_marca:
				marcas.append(controlador('obtener marca', i)[0])
		self.ui.tabla_ma.clear()
		self.set_headers()
		self.ui.tabla_ma.setRowCount(len(marcas))
		r = 0
		for row in marcas:
			num_autos =  controlador('contar autos', [row[0]])[0][0]
			item = QtGui.QTableWidgetItem(str(row[0]))
			self.ui.tabla_ma.setItem(r,0,item)
			item = QtGui.QTableWidgetItem(row[1])
			self.ui.tabla_ma.setItem(r,1,item)
			item = QtGui.QTableWidgetItem(row[2])
			self.ui.tabla_ma.setItem(r,2,item)
			item = QtGui.QTableWidgetItem(str(num_autos))
			self.ui.tabla_ma.setItem(r,3,item)
			r = r+1
		self.ui.tabla_ma.setColumnHidden(0,True)
Beispiel #3
0
	def muestra_imagen(self, row, column):
		"""Responde cuando se hace doble click en alguna celda de la tabla autos,
			desplagando en un QDialog la image del auto de la fila donde se encuentra la celda 
			clickeada"""
		id_vehiculo = self.ui.tabla_ve.item(row, 0).text()
		vehiculo = controlador('obtener auto', id_vehiculo)[0]
		ruta = os.path.join(self.dir, vehiculo[9])
		map=QtGui.QPixmap(ruta)
		if map.isNull() == False:
			msgBox = QtGui.QDialog()
			#layoutWidget = QtGui.QWidget(msgBox)
			#layoutWidget.setGeometry(QtCore.QRect(10, 10, 400, 600))
			graphicsView = QtGui.QGraphicsView(msgBox)
			height = 580
			width =  int(map.rect().height()*height/map.rect().width())
			msgBox.resize(height, width)
			#graphicsView.resize(height, width)
			scene = QtGui.QGraphicsScene(graphicsView)
			map=map.scaled(height-2, width-2)
			#msgBox.setIconPixmap(map)
			scene.addPixmap(map)
			graphicsView.setScene(scene)
			marca = controlador('obtener marca', [vehiculo[2]])[0]
			tipo = controlador('obtener tipo', [vehiculo[3]])[0]
			texto = "Modelo:\t"+vehiculo[1]+"\nMarca:\t"+marca[1]
			#texto = texto+"\nTipo:\t"+tipo[0]
			msgBox.setWindowTitle(marca[1]+" "+vehiculo[1])
			#msgBox.setDetailedText(texto)
		else:
			msgBox = QtGui.QMessageBox()
			msgBox.setWindowTitle('Visor de Imagen')
			msgBox.setIcon(QtGui.QMessageBox.Information)
			msgBox.setText("No se pudo cargar la imagen.")
		msgBox.exec_()
Beispiel #4
0
	def nuevo_ma(self):
		"""Muestra un QDialog en respuesta al boton 'Nueva Marca' de la pestaña Marcas,
			en el cual aparecen los campos de texto necesarios para ingresar una nueva marca."""
		dialog_marca = FormMarca(self, "Nuevo")
		if dialog_marca.result:
			controlador('añadir marca', dialog_marca.marca)
		self.cargar_marca()
Beispiel #5
0
	def eliminar_ve(self):
		"""Se ejecuta cuando se presiona el boton 'Eliminar Auto' en la pestaña de autos
			cuando se ha seleccionado uno o más elementos de la tabla. Se Abre un QDialog
			que muestra la cantidad de filas seleccionadas que busca confirmar la desición de 
			elimiar el o los autos seleccionados en la tabla."""
		sel_itms = self.ui.tabla_ve.selectedItems()
		n_filas = (len(sel_itms))/(self.ui.tabla_ve.columnCount()-1)
		msgBox = QtGui.QMessageBox()
		msgBox.setWindowTitle('Eliminar Vehiculo(s)')
		msgBox.setIcon(QtGui.QMessageBox.Warning)
		msgBox.setText("Se ha(n) seleccionado "+str(n_filas)+" vehiculo(s).")
		msgBox.setInformativeText("Seguro que quiere eliminar?")
		msgBox.setStandardButtons(QtGui.QMessageBox.Save | QtGui.QMessageBox.Cancel)
		msgBox.setDefaultButton(QtGui.QMessageBox.Save)
		ret = msgBox.exec_()
		if ret == QtGui.QMessageBox.Save:
			vehiculo = []
			for fila in range(n_filas) :
				row = self.ui.tabla_ve.row(sel_itms[fila])
				vehiculo.append(self.ui.tabla_ve.item(row, 0).text())
			for auto in vehiculo:
				controlador('eliminar auto', auto)
		elif ret == QtGui.QMessageBox.Cancel:
			pass
		else:
			print "Error"
		self.cargar_vehiculo()
Beispiel #6
0
	def nuevo_tipo(self):
		"""Verifica si el tipo ingresado por el usuario ya existia o no, en el caso
		   que no exista """
		dialog_tipo = FormTipo(self, "Nuevo")
		if dialog_tipo.result:
			controlador('añadir tipo', dialog_tipo.tipo)
		self.ui.cb_tipo.clear()
		tipos = controlador('obtener tipos', None)
		for tipo in tipos:
			self.ui.cb_tipo.addItem(tipo[1], tipo[0])
Beispiel #7
0
	def nuevo_ve(self):
		"""Muestra un QDialog en respuesta al boton 'Nuevo Auto' de la pestaña Autos,
			en el cual aparecen los campos de texto necesarios para ingresar un nuevo auto,
			mostrando con QComboBox las marcas y tipos existentes, permitiendo agregar
			una nueva marca o un nuevo tipo. Tambien permite buscar la imagen del auto mediante
			un explorador de  carpetas."""
		dialog_vehiculo = FormVehiculo(self, 'Nuevo')
		if dialog_vehiculo.result:
			controlador('añadir auto', dialog_vehiculo.vehiculo)
		self.cargar_vehiculo()
Beispiel #8
0
	def nuevo_marca(self):
		"""Verifica si la marca ya existe en la base de datos, si resulta no existir
		   en la base de datos, esta es agregada """
		dialog_marca = FormMarca(self, "Nuevo")
		
		if dialog_marca.result:
			controlador('añadir marca', dialog_marca.marca)

		self.ui.cb_marca.clear()
		marcas = controlador('obtener marcas', None)
		for marca in marcas:
			self.ui.cb_marca.addItem(marca[1], marca[0])
Beispiel #9
0
	def editar_ma(self):	
		"""Se ejecuta cuando se presiona el boton 'Editar Marca' de la pestaña Marcas,
			solo si se han seleccionado elementos en la tabla. Muestra un QDialog con 
			los campos de texto necesarios para que se acutualicen los datos de la marca, esto 
			por cada elemento seleccionado."""
		sel_itms = self.ui.tabla_ma.selectedItems()
		n_filas = (len(sel_itms)+1)/(self.ui.tabla_ma.columnCount()-1)
		for fila in range(n_filas) :
			row = self.ui.tabla_ma.row(sel_itms[fila])
			id_marca = self.ui.tabla_ma.item(row, 0).text()
			self.marcas = controlador('obtener marca', [id_marca])[0]
			dialog_marca = FormMarca(self, "Editar")
			if dialog_marca.result:
				dialog_marca.marca.append(id_marca)
				controlador('editar marca', dialog_marca.marca)
		self.cargar_marca()
Beispiel #10
0
	def editar_ve(self):
		"""Se ejecuta cuando se presiona el boton 'Editar Auto' de la pestaña Autos,
			solo si se han seleccionado elementos en la tabla. Muestra un QDialog con 
			los campos de texto necesarios para que se acutualicen los datos del auto, esto 
			por cada elemento seleccionado."""
		sel_itms = self.ui.tabla_ve.selectedItems()
		n_filas = len(sel_itms)/(self.ui.tabla_ve.columnCount()-1)
		for fila in range(n_filas) :
			row = self.ui.tabla_ve.row(sel_itms[fila])
			id_vehiculo = self.ui.tabla_ve.item(row, 0).text()
			self.vehiculos = controlador('obtener auto', id_vehiculo)[0]

			dialog_vehiculo = FormVehiculo(self, "Editar")
			if dialog_vehiculo.result:
				dialog_vehiculo.vehiculo.append(id_vehiculo)
				controlador('editar auto', dialog_vehiculo.vehiculo)
		self.cargar_vehiculo()
Beispiel #11
0
	def cargar_marca_por_busqueda(self):
		"""Responde a la edicion de texto en el campo de busqueda de 
			la pestaña donde se muestra la tabla de marcas,
			desplagando en la misma las filas que contengan campos que coincidan 
			con el texto que se haya ingresado."""
		texto =  self.ui.le_filtro_ma.text()
		id_marca = controlador('buscar marca', texto)
		self.cargar_marca(id_marca)
Beispiel #12
0
	def eliminar_ma(self):
		"""Se ejecuta cuando se presiona el boton 'Eliminar en la pestaña de marcas
			cuando se ha seleccionado uno o más elementos de la tabla. Se Abre un QDialog
			que muestra la cantidad de filas seleccionadas que busca confirmar la desición de 
			elimiar la o las marcas seleccionadas en la tabla. Si existen autos de esa marca, 
			el proceso se interrumpe informando la cantidad de autos asiciados a 
			cada marca que no se pudo eliminar."""
		sel_itms = self.ui.tabla_ma.selectedItems()
		n_filas = (len(sel_itms))/(self.ui.tabla_ma.columnCount()-1)
		msgBox = QtGui.QMessageBox()
		msgBox.setWindowTitle('Eliminar Marca(s)')
		msgBox.setIcon(QtGui.QMessageBox.Warning)
		msgBox.setText("Se ha(n) seleccionado "+str(n_filas)+" marca(s).")
		msgBox.setInformativeText("Seguro que quiere eliminar?")
		msgBox.setStandardButtons(QtGui.QMessageBox.Save | QtGui.QMessageBox.Cancel)
		msgBox.setDefaultButton(QtGui.QMessageBox.Save)
		ret = msgBox.exec_()
		if ret == QtGui.QMessageBox.Save:
			# Save was clicked
			marca = []
			for fila in range(n_filas):
				row = self.ui.tabla_ma.row(sel_itms[fila])
				id_marca = self.ui.tabla_ma.item(row, 0).text()
				num = controlador('contar autos', [id_marca])[0][0]
				if num == 0:
					marca.append(id_marca)
				else:
					msgBox = QtGui.QMessageBox()
					msgBox.setWindowTitle('Eliminar Marca')
					msgBox.setIcon(QtGui.QMessageBox.Information)
					msgBox.setText("No se pudo eliminar la marca: "+
									self.ui.tabla_ma.item(row, 1).text()+".")
					msgBox.setInformativeText("La marca tiene: "+str(num)
											+" vehiculo(s) asociado(s)")
					msgBox.exec_()
			for x in marca:
				controlador('eliminar marca', x)
		elif ret == QtGui.QMessageBox.Cancel:
			# cancel was clicked
			pass
		else:
			print "Error"
		self.cargar_marca()
		self.cargar_vehiculo()
Beispiel #13
0
	def cargar_vehiculo_por_busqueda(self):
		"""Responde a la edicion de texto en el campo de busqueda de 
			la pestaña donde se muestra la tabla de autoss,
			desplagando en la misma las filas que contengan campos que coincidan 
			con el texto que se haya ingresado."""
		texto =  self.ui.le_filtro_ve.text()
		if not texto=="":
			id_vehiculo = controlador('buscar auto', texto)
			self.cargar_vehiculo(id_vehiculo)
		else:
			self.cargar_vehiculo()
Beispiel #14
0
	def __init__(self, parent=None, trigger=None):
		QtGui.QDialog.__init__(self, parent)
		self.parent = parent
		self.trigger = trigger
		self.ui =  Ui_Dialog()
		self.ui.setupUi(self)
		self.ui.le_peso.setValidator(QtGui.QDoubleValidator())
		self.ui.le_rendimiento.setValidator(QtGui.QIntValidator())

		marcas = controlador('obtener marcas', None)
		for marca in marcas:
			self.ui.cb_marca.addItem(marca[1], marca[0])
			print marca[0]
		
		tipos = controlador('obtener tipos', None)
		for tipo in tipos:
			self.ui.cb_tipo.addItem(tipo[1], tipo[0])

		if(trigger == "Nuevo"):
			 self.ui.btn_ok.setEnabled(False)
		if(trigger == "Editar"):
			
			self.ui.le_modelo.setText(parent.vehiculos[1])
			self.ui.le_color.setText(parent.vehiculos[4])
			self.ui.le_motor.setText(str(parent.vehiculos[5]))
			self.ui.le_peso.setText(str(parent.vehiculos[6]))
			self.ui.le_descripcion.setText(parent.vehiculos[7])
			self.ui.le_rendimiento.setText(str(parent.vehiculos[8]))
			

			self.ui.sb_fecha.setValue(self.ui.sb_fecha.valueFromText(str(parent.vehiculos[10])))
			print parent.vehiculos[2]
			print self.ui.cb_marca.findData(parent.vehiculos[2])
			self.ui.cb_marca.setCurrentIndex(self.ui.cb_marca.findData(parent.vehiculos[2]))
			self.ui.cb_tipo.setCurrentIndex(self.ui.cb_tipo.findData(parent.vehiculos[3]))
			
			ruta = os.path.join(parent.dir, parent.vehiculos[9])
			self.ui.le_imagen.setText(ruta)
			scene = QtGui.QGraphicsScene(self)
			map=QtGui.QPixmap(ruta)
			if map.isNull() == False:
				
				width =  170
				height = int(map.rect().width()*width/map.rect().height())
				map=map.scaled(height, width)
				scene.addPixmap(map)
				self.ui.graphicsView.setScene(scene)
			else:
				msgBox = QtGui.QMessageBox()
				msgBox.setWindowTitle('Error al cargar')
				msgBox.setIcon(QtGui.QMessageBox.Information)
				msgBox.setText("No se pudo cargar la imagen.")
				msgBox.exec_()
				self.ui.btn_ok.setEnabled(False)


		self.ui.btn_cancel.clicked.connect(self.cancel)
		self.ui.btn_ok.clicked.connect(self.ok)
		self.ui.btn_marca.clicked.connect(self.nuevo_marca)
		self.ui.btn_tipo.clicked.connect(self.nuevo_tipo)
		self.ui.btn_agregar.clicked.connect(self.nuevo_imagen)
		self.show()
		self.parent.setEnabled(False)
		self.setEnabled(True)
		self.exec_()