def __init__(self, menu):

        self.menu = menu

        builder = Gtk.Builder()
        builder.add_from_file("estado_habitacion.xml")

        # Obtenemos ventana
        self.window = builder.get_object("window")
        self.window.set_border_width(BORDE_ANCHO)
        self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO)

        # Obtenemos combos de la interfaz
        self.dia_ini_combo = builder.get_object("dia_ini_combo")
        self.mes_ini_combo = builder.get_object("mes_ini_combo")
        self.ano_ini_combo = builder.get_object("ano_ini_combo")

        self.dia_fin_combo = builder.get_object("dia_fin_combo")
        self.mes_fin_combo = builder.get_object("mes_fin_combo")
        self.ano_fin_combo = builder.get_object("ano_fin_combo")

        self.scrolled_window = builder.get_object("scrolled_window")
        self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC,
                                        Gtk.PolicyType.ALWAYS)
        self.tree = Gtk.TreeView()
        self.scrolled_window.add(self.tree)

        self.gestorDialogos = GestorDialogos()
        self.gestor_estado = GestorMostrarEstadoHab()

        # Gestorcombos se ocupa de cargar los combos con info
        self.gestorCombos = GestorCombos()

        self.gestorCombos.initDateCombo(self.dia_ini_combo, self.mes_ini_combo,
                                        self.ano_ini_combo,
                                        datetime.today().year,
                                        datetime.today().year)

        self.gestorCombos.initDateCombo(self.dia_fin_combo, self.mes_fin_combo,
                                        self.ano_fin_combo,
                                        datetime.today().year,
                                        datetime.today().year + 2)

        # Seteamos items activos
        self.gestorCombos.setActive([
            self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo,
            self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo
        ], [0, 0, 0, 0, 0, 0])

        # Conectamos las senales con sus funciones
        handlers = {
            "onDeleteWindow": Gtk.main_quit,
            "onButtonClicked": self.mostrarHabitaciones,
            "onComboIniChanged": self.comboIniChanged,
            "onComboFinChanged": self.comboFinChanged
        }
        builder.connect_signals(handlers)

        # Monstramos ventana
        self.window.show_all()
Example #2
0
    def __init__(self,menu,fecha_inicio,fecha_fin,habitacion):

        self.menu = menu

        builder = Gtk.Builder()

        # Dibuja ventanas desde .xml
        builder.add_from_file("Gestionar_Pasajero3.4.xml")

        # Obtenemos widgets
        self.window1 = builder.get_object("window1")
        self.bSiguiente = builder.get_object("bSiguiente")
        self.bCancelar = builder.get_object("bCancelar")
        self.eNombre = builder.get_object("eNombre")
        self.eApellido = builder.get_object("eApellido")
        self.eDocumento = builder.get_object("eDocumento")
        self.cDocumento = builder.get_object("cDocumento")
        self.lDocumento = builder.get_object("lDocumento")

        self.window1.set_border_width(BORDE_ANCHO)
        self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

        # Obtenemos informacion para los combos desde la db
        self.gestorCombos = GestorCombos()
        self.gestorCombos.cargarCombos(lDocumento=self.lDocumento)

        self.dialogos = GestorDialogos()
        self.gestorOcuparHab = GestorOcuparHab()


        # Events handlers
        handlers = {
        "on_bSiguiente_clicked": self.on_bSiguiente_clicked,
        "on_window1_destroy": Gtk.main_quit,
        "on_bCancelar_clicked": self.on_bCancelar_clicked,
        "on_cDocumento_changed": self.on_cDocumento_changed,
        }
        builder.connect_signals(handlers)

        # Variable auxiliar
        self.tipo = None
        self.id_pasajero = None
        self.habitacion = habitacion
        self.fecha_inicio = date(int(fecha_inicio[:4]),int(fecha_inicio[5:7]),int(fecha_inicio[8:]))
        self.fecha_fin = date(int(fecha_fin[:4]),int(fecha_fin[5:7]),int(fecha_fin[8:]))
        self.tipoPasajero = 'responsable'

        # Monstramos la ventana con los widgets
        self.window1.show_all()
    def __init__(self,menu):

        self.menu = menu

        builder = Gtk.Builder()
        builder.add_from_file("estado_habitacion.xml")

        # Obtenemos ventana
        self.window = builder.get_object("window")
        self.window.set_border_width(BORDE_ANCHO)
        self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO)

        # Obtenemos combos de la interfaz
        self.dia_ini_combo = builder.get_object("dia_ini_combo")
        self.mes_ini_combo = builder.get_object("mes_ini_combo")
        self.ano_ini_combo = builder.get_object("ano_ini_combo")

        self.dia_fin_combo = builder.get_object("dia_fin_combo")
        self.mes_fin_combo = builder.get_object("mes_fin_combo")
        self.ano_fin_combo = builder.get_object("ano_fin_combo")

        self.scrolled_window = builder.get_object("scrolled_window")
        self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS)
        self.tree = Gtk.TreeView()
        self.scrolled_window.add(self.tree)

        self.gestorDialogos = GestorDialogos()
        self.gestor_estado = GestorMostrarEstadoHab()

        # Gestorcombos se ocupa de cargar los combos con info
        self.gestorCombos = GestorCombos()

        self.gestorCombos.initDateCombo(self.dia_ini_combo,
                self.mes_ini_combo,
                self.ano_ini_combo,datetime.today().year,datetime.today().year)

        self.gestorCombos.initDateCombo(self.dia_fin_combo,
                self.mes_fin_combo,
                self.ano_fin_combo,datetime.today().year,datetime.today().year + 2)

        # Seteamos items activos
        self.gestorCombos.setActive([self.dia_ini_combo,
            self.mes_ini_combo,
            self.ano_ini_combo,
            self.dia_fin_combo,
            self.mes_fin_combo,
            self.ano_fin_combo],
                [0, 0, 0, 0, 0, 0])

        # Conectamos las senales con sus funciones
        handlers = {
            "onDeleteWindow": Gtk.main_quit,
            "onButtonClicked": self.mostrarHabitaciones,
            "onComboIniChanged": self.comboIniChanged,
            "onComboFinChanged": self.comboFinChanged
        }
        builder.connect_signals(handlers)

        # Monstramos ventana
        self.window.show_all()
    def __init__(self, menu):
        self.menu = menu
        builder = Gtk.Builder()

        # Dibuja ventanas desde .xml
        builder.add_from_file("Gestionar_Pasajero3.4.xml")

        # Obtenemos widgets
        self.window1 = builder.get_object("window1")
        self.bSiguiente = builder.get_object("bSiguiente")
        self.bCancelar = builder.get_object("bCancelar")
        self.eNombre = builder.get_object("eNombre")
        self.eApellido = builder.get_object("eApellido")
        self.eDocumento = builder.get_object("eDocumento")
        self.cDocumento = builder.get_object("cDocumento")
        self.lDocumento = builder.get_object("lDocumento")

        self.window1.set_border_width(BORDE_ANCHO)
        self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

        # Obtenemos informacion para los combos desde la db
        self.gestorCombos = GestorCombos()
        self.gestorCombos.cargarCombos(lDocumento=self.lDocumento)

        # Events handlers
        handlers = {
            "on_bSiguiente_clicked": self.on_bSiguiente_clicked,
            "on_bCancelar_clicked": self.on_bCancelar_clicked,
            "on_cDocumento_changed": self.on_cDocumento_changed,
        }
        builder.connect_signals(handlers)

        # Variable auxiliar
        self.tipo = None
        self.pasajero = None

        # Monstramos la ventana con los widgets
        self.window1.show_all()
	def __init__(self,menu):
		self.menu = menu
		builder = Gtk.Builder()

		# Dibuja ventanas desde .xml
		builder.add_from_file("Gestionar_Pasajero3.4.xml")
		
		# Obtenemos widgets
		self.window1 = builder.get_object("window1")
		self.bSiguiente = builder.get_object("bSiguiente")
		self.bCancelar = builder.get_object("bCancelar")
		self.eNombre = builder.get_object("eNombre")
		self.eApellido = builder.get_object("eApellido")
		self.eDocumento = builder.get_object("eDocumento")
		self.cDocumento = builder.get_object("cDocumento")
		self.lDocumento = builder.get_object("lDocumento")
		
		self.window1.set_border_width(BORDE_ANCHO)
		self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

		# Obtenemos informacion para los combos desde la db
		self.gestorCombos = GestorCombos()
		self.gestorCombos.cargarCombos(lDocumento=self.lDocumento)

		# Events handlers
		handlers = {
		"on_bSiguiente_clicked": self.on_bSiguiente_clicked,
		"on_bCancelar_clicked": self.on_bCancelar_clicked,
		"on_cDocumento_changed": self.on_cDocumento_changed,
		}
		builder.connect_signals(handlers)
		
		# Variable auxiliar
		self.tipo = None
		self.pasajero = None

		# Monstramos la ventana con los widgets
		self.window1.show_all()	
	def __init__(self,menu):
		
		self.menu = menu
		
		builder = Gtk.Builder()
		builder.add_from_file("Cargar_Pasajero3.4.xml")
		self.dialogo = GestorDialogos()
		
		
		#carga conecta los widgets con la interfaz
		self.window1 = builder.get_object("window1")
		self.bSiguiente = builder.get_object("bSiguiente")
		self.bCancelar = builder.get_object("bCancelar")
		self.eNombres = builder.get_object("eNombres")

		self.eApellidos = builder.get_object("eApellidos")
		self.eDocumento = builder.get_object("eDocumento")
		self.eTelefono = builder.get_object("eTelefono")
		self.eCalle = builder.get_object("eCalle")
		self.eNumero = builder.get_object("eNumero")
		self.eDepto = builder.get_object("eDepto")
		self.ePiso = builder.get_object("ePiso")
		self.ePostal = builder.get_object("ePostal")
		self.eCUIT = builder.get_object("eCUIT")
		self.cPais = builder.get_object("cPais")
		self.eCorreo = builder.get_object("eCorreo")

		self.cProvincia = builder.get_object("cProvincia")
		self.cLocalidad = builder.get_object("cLocalidad")
		self.cDocumento = builder.get_object("cDocumento")
		self.cDia = builder.get_object("cDia")
		self.cMes = builder.get_object("cMes")
		self.cAnyo = builder.get_object("cAnyo")
		self.cNacionalidad = builder.get_object("cNacionalidad")
		self.cOcupacion = builder.get_object("cOcupacion")

		self.lPais = builder.get_object("lPais")
		self.lNacionalidad = builder.get_object("lNacionalidad")
		self.lOcupacion = builder.get_object("lOcupacion")
		self.lProvincia = builder.get_object("lProvincia")
		self.lLocalidad = builder.get_object("lLocalidad")
		self.lDocumento = builder.get_object("lDocumento")
		self.lIVA = builder.get_object("lIVA")
		
		self.ebPais = builder.get_object("eventbox_pais")
		self.ebNacionalidad = builder.get_object("eventbox_nacionalidad")
		self.ebOcupacion = builder.get_object("eventbox_ocupacion")
		self.ebProvincia = builder.get_object("eventbox_provincia")
		self.ebLocalidad = builder.get_object("eventbox_localidad")
		self.ebDocumento = builder.get_object("eventbox_dni")
		self.ebIVA = builder.get_object("eventbox_iva")
		self.ebFecha = builder.get_object("eventbox_fecha")
		
		self.window1.set_border_width(BORDE_ANCHO)
		self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)
	
		# Obtenemos informacion para los combos desde la db
		self.gestorCombos = GestorCombos()

		self.gestorCombos.cargarCombos(self.lPais,
				self.lNacionalidad,
				self.lOcupacion,
				self.lIVA,
				self.lDocumento)
				
		self.gestorCombos.initDateCombo(self.cDia,self.cMes,self.cAnyo,datetime.datetime.today().year-100,datetime.datetime.today().year)
		#variables auxiliares
		self.tipo = None
		self.localidad = None
		self.provincia = None
		self.nacionalidad = None
		self.pais = None
		self.ocupacion = None
		self.IVA = None
		self.fecha = datetime.date(0001,01,01)
		
		# CSS
		screen = Gdk.Screen.get_default()
		css_provider = Gtk.CssProvider()
		css_provider.load_from_path('style.css')
		priority = Gtk.STYLE_PROVIDER_PRIORITY_USER
		context = Gtk.StyleContext()
		context.add_provider_for_screen(screen, css_provider, priority)
		
		# Conecta las senales con sus funciones
		handlers = {
		"on_bSiguiente_clicked": self.on_bSiguiente_clicked,
		"on_bCancelar_clicked":self.on_bCancelar_clicked,
		"on_cPais_changed": self.on_cPais_changed,
		"on_cProvincia_changed": self.on_cProvincia_changed,
		"on_cLocalidad_changed": self.on_cLocalidad_changed,
		"on_cDocumento_changed": self.on_cDocumento_changed,
		"on_cNacionalidad_changed": self.on_cNacionalidad_changed,
		"on_cAnyo_changed": self.on_cAnyo_changed,
		"on_cMes_changed": self.on_cMes_changed,
		#"on_cDia_changed": self.on_cDia_changed,
		"on_cOcupacion_changed":self.on_cOcupacion_changed,
		"on_cIVA_changed":self.on_cIVA_changed
		}
		builder.connect_signals(handlers)
		
				
		# Mostramos ventanas con todos los widgets
		self.window1.show_all()
class InterfazDarAltaPasajero:
	def __init__(self,menu):
		
		self.menu = menu
		
		builder = Gtk.Builder()
		builder.add_from_file("Cargar_Pasajero3.4.xml")
		self.dialogo = GestorDialogos()
		
		
		#carga conecta los widgets con la interfaz
		self.window1 = builder.get_object("window1")
		self.bSiguiente = builder.get_object("bSiguiente")
		self.bCancelar = builder.get_object("bCancelar")
		self.eNombres = builder.get_object("eNombres")

		self.eApellidos = builder.get_object("eApellidos")
		self.eDocumento = builder.get_object("eDocumento")
		self.eTelefono = builder.get_object("eTelefono")
		self.eCalle = builder.get_object("eCalle")
		self.eNumero = builder.get_object("eNumero")
		self.eDepto = builder.get_object("eDepto")
		self.ePiso = builder.get_object("ePiso")
		self.ePostal = builder.get_object("ePostal")
		self.eCUIT = builder.get_object("eCUIT")
		self.cPais = builder.get_object("cPais")
		self.eCorreo = builder.get_object("eCorreo")

		self.cProvincia = builder.get_object("cProvincia")
		self.cLocalidad = builder.get_object("cLocalidad")
		self.cDocumento = builder.get_object("cDocumento")
		self.cDia = builder.get_object("cDia")
		self.cMes = builder.get_object("cMes")
		self.cAnyo = builder.get_object("cAnyo")
		self.cNacionalidad = builder.get_object("cNacionalidad")
		self.cOcupacion = builder.get_object("cOcupacion")

		self.lPais = builder.get_object("lPais")
		self.lNacionalidad = builder.get_object("lNacionalidad")
		self.lOcupacion = builder.get_object("lOcupacion")
		self.lProvincia = builder.get_object("lProvincia")
		self.lLocalidad = builder.get_object("lLocalidad")
		self.lDocumento = builder.get_object("lDocumento")
		self.lIVA = builder.get_object("lIVA")
		
		self.ebPais = builder.get_object("eventbox_pais")
		self.ebNacionalidad = builder.get_object("eventbox_nacionalidad")
		self.ebOcupacion = builder.get_object("eventbox_ocupacion")
		self.ebProvincia = builder.get_object("eventbox_provincia")
		self.ebLocalidad = builder.get_object("eventbox_localidad")
		self.ebDocumento = builder.get_object("eventbox_dni")
		self.ebIVA = builder.get_object("eventbox_iva")
		self.ebFecha = builder.get_object("eventbox_fecha")
		
		self.window1.set_border_width(BORDE_ANCHO)
		self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)
	
		# Obtenemos informacion para los combos desde la db
		self.gestorCombos = GestorCombos()

		self.gestorCombos.cargarCombos(self.lPais,
				self.lNacionalidad,
				self.lOcupacion,
				self.lIVA,
				self.lDocumento)
				
		self.gestorCombos.initDateCombo(self.cDia,self.cMes,self.cAnyo,datetime.datetime.today().year-100,datetime.datetime.today().year)
		#variables auxiliares
		self.tipo = None
		self.localidad = None
		self.provincia = None
		self.nacionalidad = None
		self.pais = None
		self.ocupacion = None
		self.IVA = None
		self.fecha = datetime.date(0001,01,01)
		
		# CSS
		screen = Gdk.Screen.get_default()
		css_provider = Gtk.CssProvider()
		css_provider.load_from_path('style.css')
		priority = Gtk.STYLE_PROVIDER_PRIORITY_USER
		context = Gtk.StyleContext()
		context.add_provider_for_screen(screen, css_provider, priority)
		
		# Conecta las senales con sus funciones
		handlers = {
		"on_bSiguiente_clicked": self.on_bSiguiente_clicked,
		"on_bCancelar_clicked":self.on_bCancelar_clicked,
		"on_cPais_changed": self.on_cPais_changed,
		"on_cProvincia_changed": self.on_cProvincia_changed,
		"on_cLocalidad_changed": self.on_cLocalidad_changed,
		"on_cDocumento_changed": self.on_cDocumento_changed,
		"on_cNacionalidad_changed": self.on_cNacionalidad_changed,
		"on_cAnyo_changed": self.on_cAnyo_changed,
		"on_cMes_changed": self.on_cMes_changed,
		#"on_cDia_changed": self.on_cDia_changed,
		"on_cOcupacion_changed":self.on_cOcupacion_changed,
		"on_cIVA_changed":self.on_cIVA_changed
		}
		builder.connect_signals(handlers)
		
				
		# Mostramos ventanas con todos los widgets
		self.window1.show_all()
		
		
	def on_cDocumento_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.tipo = id_object
		
		
	def on_cOcupacion_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.ocupacion = id_object


	def on_cIVA_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.IVA = id_object
		

	def on_cNacionalidad_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.nacionalidad = id_object
	

	def on_cAnyo_changed(self,combo):
		self.gestorCombos.comboUpDate(self.cDia,self.cMes,self.cAnyo)
	
					
	def on_cMes_changed(self,combo):
		self.gestorCombos.comboUpDate(self.cDia,self.cMes,self.cAnyo)
	

	def on_cPais_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.pais = id_object
			self.gestorCombos.getProvincia(self.lProvincia,id_object)
		

	def on_cProvincia_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.provincia = id_object
			self.gestorCombos.getLocalidad(self.lLocalidad,id_object)
	

	def on_cLocalidad_changed(self,combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.localidad = id_object
	

	def on_bSiguiente_clicked(self,boton):
		pasajero = DtoPasajero(nombre=self.eNombres.get_text(),
				apellido=self.eApellidos.get_text(),
				cuit=self.eCUIT.get_text(),
				email=self.eCorreo.get_text(),
				fecha_de_nac=self.gestorCombos.getDate(self.cDia,self.cMes,self.cAnyo),
				telefono=self.eTelefono.get_text(),
				CP=self.ePostal.get_text(),
				id_iva=self.IVA,
				id_ocupacion=self.ocupacion,
				id_pais=self.pais,
				id_localidad=self.localidad,
				id_provincia=self.provincia,
				id_nacionalidad=self.nacionalidad,
				calle=self.eCalle.get_text(),
				numero=self.eNumero.get_text(),
				dpto=self.eDepto.get_text(),
				piso=self.ePiso.get_text(),
				id_tipo=self.tipo,
				codigo=self.eDocumento.get_text())
				

		gestor = GestorGestionarPasajeros()

		# Corroboramos que cada entry coincida con el formato de entrada
		errores, tipo = gestor.checkentries(pasajero)	

	
		
		if not errores:
		    	# creamos pasajero
		    	crear_return = gestor.crearPasajero(pasajero)	
			if crear_return == False:
				respuesta = self.dialogo.confirm("¡CUIDADO! El tipo y número de documento ya existen en el sistema", "Aceptar Igualmente", "Corregir")
				if respuesta == True:
					gestor.completarCarga(pasajero)

			elif crear_return == True:
				respuesta = self.dialogo.confirm('Pasajero Guardado',"Aceptar")
				self.menu.show_all()
				self.window1.hide()

		else:
			if tipo:
				# Si se cometieron errores
				# Obtenemos styles y widgets
				widgets, styles = self.getEntries_Styles(errores)
				
				# Pintamos widgets
				self.pintarWidgets(widgets, styles)
				
				# Monstramos errores
				self.dialogo.confirm(self.crearAdvertencia(errores),
						"Aceptar")

			else:
				# Si se realizaron omisiones
				# Obtenemos styles y widgets
				widgets, styles = self.getEntries_Styles(errores)
				
				self.despintarWidgets(self.getallwidgets(),self.getallstyles())
				# Pintamos widgets
				self.pintarWidgets(widgets, styles)
				
				
	def on_bCancelar_clicked(self,boton):
		
		respuesta = self.dialogo.confirm("¿Desea cancelar el alta del pasajero?","SI","NO")
		if respuesta == True:
			self.menu.show_all()
			self.window1.destroy()


	def getEntries_Styles(self, omisiones):
		widgets = list()
		styles = list()

		# Agrupamos los widgets y los styles contexts
		for omision in omisiones:
			if omision is 'nombre':
				widgets.append(self.eNombres)
				styles.append(self.eNombres.get_style_context())
			
			elif omision is 'apellido':
				widgets.append(self.eApellidos)
				styles.append(self.eApellidos.get_style_context())

			elif omision is 'id_tipo':
				widgets.append(self.ebDocumento)
				styles.append(self.ebDocumento.get_style_context())

			elif omision is 'codigo':
				widgets.append(self.eDocumento)
				styles.append(self.eDocumento.get_style_context())

			elif omision is 'id_nacionalidad':
				widgets.append(self.ebNacionalidad)
				styles.append(self.ebNacionalidad.get_style_context())

			elif omision is 'fecha':
				widgets.append(self.ebFecha)
				styles.append(self.ebFecha.get_style_context())

			elif omision is 'telefono':
				widgets.append(self.eTelefono)
				styles.append(self.eTelefono.get_style_context())

			elif omision is 'calle':
				widgets.append(self.eCalle)
				styles.append(self.eCalle.get_style_context())

			elif omision is 'numero':
				widgets.append(self.eNumero)
				styles.append(self.eNumero.get_style_context())

			elif omision is 'id_localidad':
				widgets.append(self.ebLocalidad)
				styles.append(self.ebLocalidad.get_style_context())

			elif omision is 'CP':
				widgets.append(self.ePostal)
				styles.append(self.ePostal.get_style_context())

			elif omision is 'id_provincia':
				widgets.append(self.ebProvincia)
				styles.append(self.ebProvincia.get_style_context())

			elif omision is 'id_pais':
				widgets.append(self.ebPais)
				styles.append(self.ebPais.get_style_context())

			elif omision is 'id_ocupacion':
				widgets.append(self.ebOcupacion)
				styles.append(self.ebOcupacion.get_style_context())

			elif omision is 'id_iva':
				widgets.append(self.ebIVA)
				styles.append(self.ebIVA.get_style_context())


		# retornamos widgets y style contexts
		return widgets, styles
		

	def pintarWidgets(self, widgets, styles):
		for widget, style in izip(reversed(widgets), reversed(styles)):
			style.add_class('invalid')
			widget.grab_focus()

		print "painting-finished"
	
	def despintarWidgets(self, widgets, styles):
		for widget, style in izip(reversed(widgets), reversed(styles)):
			style.remove_class('invalid')
			widget.grab_focus()


	def crearAdvertencia(self, errores):
		if len(errores) == 1:
			errorMessage = "Cometio un error al llenar el campo:"
		else:
			errorMessage = "Cometio un error al llenar los campos:"

		for error in errores:
			if error is 'nombre':
				errorMessage+= "\nNombre, debe tener la forma -> <nombre>{<espacio><segundonombre>}*"

			elif error is 'apellido':
				errorMessage+= "\nApellido, debe tener la forma -> <apellido>{<espacio><segundoapellido>}*"

			elif error is 'cuit':
				errorMessage+= "\nCUIT, debe tener la forma -> <tipo>-<codigo>-<digitoverificador>"

			elif error is 'email':
				errorMessage+= "\nEmail, debe tener la forma -> <usuario>@<host>.<dominio>"

			elif error is 'CP':
				errorMessage+= "\nCodigo Postal, debe tener como minimo 3 digitos y como maximo 9"

			elif error is 'dpto':
				errorMessage+= "\nDepartamento, debe ser una letra del alfabeto"

			elif error is 'piso':
				errorMessage+= "\nPiso, el piso min es 1 y el maximo 163"

		return errorMessage

	def getallstyles(self):
		return [self.eNombres.get_style_context(),
				self.eApellidos.get_style_context(),
				self.ebDocumento.get_style_context(),
				self.eDocumento.get_style_context(),
				self.ebNacionalidad.get_style_context(),
				self.ebFecha.get_style_context(),
				self.eTelefono.get_style_context(),
				self.eCalle.get_style_context(),
				self.eNumero.get_style_context(),
				self.ebLocalidad.get_style_context(),
				self.ePostal.get_style_context(),
				self.ebProvincia.get_style_context(),
				self.ebPais.get_style_context(),
				self.ebOcupacion.get_style_context(),
				self.ebIVA.get_style_context()]
	

	def getallwidgets(self):
		return [self.eNombres,
				self.eApellidos,
				self.ebDocumento,
				self.eDocumento,
				self.ebNacionalidad,
				self.ebFecha,
				self.eTelefono,
				self.eCalle,
				self.eNumero,
				self.ebLocalidad,
				self.ePostal,
				self.ebProvincia,
				self.ebPais,
				self.ebOcupacion,
				self.ebIVA]
Example #8
0
class InterfazOcuparHabitacion:
    def __init__(self,menu,fecha_inicio,fecha_fin,habitacion):

        self.menu = menu

        builder = Gtk.Builder()

        # Dibuja ventanas desde .xml
        builder.add_from_file("Gestionar_Pasajero3.4.xml")

        # Obtenemos widgets
        self.window1 = builder.get_object("window1")
        self.bSiguiente = builder.get_object("bSiguiente")
        self.bCancelar = builder.get_object("bCancelar")
        self.eNombre = builder.get_object("eNombre")
        self.eApellido = builder.get_object("eApellido")
        self.eDocumento = builder.get_object("eDocumento")
        self.cDocumento = builder.get_object("cDocumento")
        self.lDocumento = builder.get_object("lDocumento")

        self.window1.set_border_width(BORDE_ANCHO)
        self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

        # Obtenemos informacion para los combos desde la db
        self.gestorCombos = GestorCombos()
        self.gestorCombos.cargarCombos(lDocumento=self.lDocumento)

        self.dialogos = GestorDialogos()
        self.gestorOcuparHab = GestorOcuparHab()


        # Events handlers
        handlers = {
        "on_bSiguiente_clicked": self.on_bSiguiente_clicked,
        "on_window1_destroy": Gtk.main_quit,
        "on_bCancelar_clicked": self.on_bCancelar_clicked,
        "on_cDocumento_changed": self.on_cDocumento_changed,
        }
        builder.connect_signals(handlers)

        # Variable auxiliar
        self.tipo = None
        self.id_pasajero = None
        self.habitacion = habitacion
        self.fecha_inicio = date(int(fecha_inicio[:4]),int(fecha_inicio[5:7]),int(fecha_inicio[8:]))
        self.fecha_fin = date(int(fecha_fin[:4]),int(fecha_fin[5:7]),int(fecha_fin[8:]))
        self.tipoPasajero = 'responsable'

        # Monstramos la ventana con los widgets
        self.window1.show_all()


    def on_bSiguiente_clicked(self, boton):
        # Obtenemos informacion de la interfaz
        nombre = self.eNombre.get_text()
        apellido = self.eApellido.get_text()
        codigo = str(self.eDocumento.get_text())
        if nombre is '':
            nombre=None
        if apellido is '':
            apellido = None
        if codigo is '':
            codigo = None


        # Buscamos pasajero
        gestionarPasajeros = GestorGestionarPasajeros()
        arregloPasajeros = gestionarPasajeros.buscar(nombre=nombre, apellido=apellido,tipoDocu=self.tipo,documento=codigo)



        if not arregloPasajeros:
            # Se genera la intefaz de dar alta pasajero

            self.dialogos.confirm("No se ha encontrado un pasajero con los datos, intente nuevamente","Aceptar")

        else:
            # Se muestra en la pantalla la grilla para seleccionar al pasajero
            pasajero = self.seleccionarPasajero(arregloPasajeros)



    def on_bCancelar_clicked(self, boton):
        self.menu.show_all()
        self.window1.destroy()

    def on_cDocumento_changed(self, combo):
        treeIter = combo.get_active_iter()
        if treeIter != None:
            model = combo.get_model()
            id_object = model[treeIter][0]
            self.tipo = id_object



    def seleccionarPasajero(self,arregloPasajeros):
        self.window1.hide()

        builder = Gtk.Builder()

        builder.add_from_file("ocupar_habitacion.xml")
        self.window2 = builder.get_object("window2")
        lPasajeros = builder.get_object("lPasajeros")
        bAceptar = builder.get_object("Aceptar")
        treeView = builder.get_object("treeviewLista")
        rResponsable = builder.get_object("radiobutton1")
        rAcompanyante = builder.get_object("radiobutton2")

        handlers = {
        "on_window2_destroy": Gtk.main_quit}
        builder.connect_signals(handlers)


        self.window2.set_border_width(BORDE_ANCHO)
        self.window2.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

        for e in arregloPasajeros:
                lPasajeros.append([e.getNombre(),e.getApellido(),e.getDocumento().getTipo().getTipo(),e.getDocumento().getCodigo(),e.getId()])

        select = treeView.get_selection()


        select.connect("changed", self.on_tree_selection_changed)
        bAceptar.connect("clicked", self.on_Aceptar_clicked,self.window2,treeView)
        rResponsable.connect("toggled", self.on_radio_toggled, "responsable")
        rAcompanyante.connect("toggled", self.on_radio_toggled, "acompanyante")

        self.window2.show_all()

    def on_Aceptar_clicked(self,boton,window,treeView):
        # El usuario elige un pasajero
        if self.id_pasajero != 0:
            asignado = self.gestorOcuparHab.asignarPasajero(self.tipoPasajero,self.id_pasajero,self.fecha_inicio,self.fecha_fin)
            if not asignado:
                self.dialogos.confirm("Ya se habia asignado un responsable a esta habitacion","Aceptar")
            elif asignado is not True:
                self.dialogos.confirm("El acompañante ya se esta alojando en el hotel en esa fecha","Aceptar")

            respuesta = self.dialogos.pregunta("¿Que desea hacer?","Seguir Cargando","Cargar otra habitación","Salir")
            if respuesta == Gtk.ResponseType.YES:
                self.window2.hide()
                self.window1.show_all()
            elif respuesta == Gtk.ResponseType.NO:
                #asignado = self.gestorOcuparHab.asignarPasajero(self.tipoPasajero,self.id_pasajero, self.fecha_inicio, self.fecha_fin)
                #if asignado == True:
                self.gestorOcuparHab.ocuparHab(self.habitacion,self.fecha_inicio,self.fecha_fin)
                interfaces.interfazEstadoHabitacion.InterfazEstadoHabitacion(self.menu)
                self.window2.hide()
                #elif asignado:
                #    self.dialogos.confirm("El acompañante ya se esta alojando en el hotel en esa fecha","Aceptar")
                #elif not asignado:
                #    self.dialogos.confirm("Ya se habia asignado un responsable a esta habitacion","Aceptar")
            elif respuesta == Gtk.ResponseType.CLOSE:
                #self.gestorOcuparHab.asignarPasajero(self.tipoPasajero,self.id_pasajero,self.fecha_inicio,self.fecha_fin)
                self.gestorOcuparHab.ocuparHab(self.habitacion,self.fecha_inicio,self.fecha_fin)
                self.menu.show_all()
                self.window2.hide()



    def on_tree_selection_changed(self,selection):
        model,treeiter = selection.get_selected()
        if treeiter is not None:
            self.id_pasajero = model[treeiter][4]

    def on_radio_toggled(self, button, name):
        if button.get_active():
            self.tipoPasajero = name
class InterfazEstadoHabitacion:
    def __init__(self,menu):

        self.menu = menu

        builder = Gtk.Builder()
        builder.add_from_file("estado_habitacion.xml")

        # Obtenemos ventana
        self.window = builder.get_object("window")
        self.window.set_border_width(BORDE_ANCHO)
        self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO)

        # Obtenemos combos de la interfaz
        self.dia_ini_combo = builder.get_object("dia_ini_combo")
        self.mes_ini_combo = builder.get_object("mes_ini_combo")
        self.ano_ini_combo = builder.get_object("ano_ini_combo")

        self.dia_fin_combo = builder.get_object("dia_fin_combo")
        self.mes_fin_combo = builder.get_object("mes_fin_combo")
        self.ano_fin_combo = builder.get_object("ano_fin_combo")

        self.scrolled_window = builder.get_object("scrolled_window")
        self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.ALWAYS)
        self.tree = Gtk.TreeView()
        self.scrolled_window.add(self.tree)

        self.gestorDialogos = GestorDialogos()
        self.gestor_estado = GestorMostrarEstadoHab()

        # Gestorcombos se ocupa de cargar los combos con info
        self.gestorCombos = GestorCombos()

        self.gestorCombos.initDateCombo(self.dia_ini_combo,
                self.mes_ini_combo,
                self.ano_ini_combo,datetime.today().year,datetime.today().year)

        self.gestorCombos.initDateCombo(self.dia_fin_combo,
                self.mes_fin_combo,
                self.ano_fin_combo,datetime.today().year,datetime.today().year + 2)

        # Seteamos items activos
        self.gestorCombos.setActive([self.dia_ini_combo,
            self.mes_ini_combo,
            self.ano_ini_combo,
            self.dia_fin_combo,
            self.mes_fin_combo,
            self.ano_fin_combo],
                [0, 0, 0, 0, 0, 0])

        # Conectamos las senales con sus funciones
        handlers = {
            "onDeleteWindow": Gtk.main_quit,
            "onButtonClicked": self.mostrarHabitaciones,
            "onComboIniChanged": self.comboIniChanged,
            "onComboFinChanged": self.comboFinChanged
        }
        builder.connect_signals(handlers)

        # Monstramos ventana
        self.window.show_all()


    def comboIniChanged(self, combo):
        self.gestorCombos.comboUpDate(self.dia_ini_combo,
                self.mes_ini_combo,
                self.ano_ini_combo)


    def comboFinChanged(self, combo):
        self.gestorCombos.comboUpDate(self.dia_fin_combo,
                self.mes_fin_combo,
                self.ano_fin_combo)


    def mostrarHabitaciones(self, combo):
        fecha_ini = self.gestorCombos.getDate(self.dia_ini_combo,
                self.mes_ini_combo,
                self.ano_ini_combo)


        fecha_fin = self.gestorCombos.getDate(self.dia_fin_combo,
                self.mes_fin_combo,
                self.ano_fin_combo)


        if self.gestor_estado.validarFecha(fecha_ini, fecha_fin):
            self.scrolled_window.remove(self.tree)
            self.armarGrilla(fecha_ini,fecha_fin)

        else:
            self.gestorDialogos.confirm("La fecha inicial no puede ser mayor que la final",
                    "Aceptar")



    def armarGrilla(self,fecha_inicio,fecha_fin):

        #crea la lista de donde va a tomar las cosas el toggle, el boolean activado o no
        #los colores seria rojo=ocupada, azul=libre y amarillo=reservada
        #la ultima columna seria la fecha
        self.store = Gtk.ListStore(str)
        self.tree = Gtk.TreeView(self.store)
        for fecha in self.daterange(fecha_inicio, fecha_fin):
            treeiter = self.store.append([str(fecha)])


        renderer = Gtk.CellRendererText()

        column = Gtk.TreeViewColumn("Fecha\hab", renderer, text=0)
        self.tree.append_column(column)

        self.estados = self.gestor_estado.selectHab(fecha_inicio, fecha_fin)
        self.stores = []
        columns = []
        renderers = []
        num = 0

        for e in self.estados:
            self.stores.append(Gtk.ListStore(bool,str,str,str))

            i = 0
            for fecha in self.daterange(fecha_inicio, fecha_fin):
                self.stores[num].append([False,e[3][i],e[2][i],str(fecha)])
                i = i + 1

            renderers.append(Gtk.CellRendererToggle())
            columns.append(Gtk.TreeViewColumn(str(e[0])+" \n"+str(e[1].getTipo().getDescripcion()), renderers[num]))
            columns[num].set_cell_data_func(renderers[num], self.inIta, self.stores[num])
            self.tree.append_column(columns[num])
            renderers[num].connect("toggled", self.on_cell_toggled,num)

            num = num + 1

        self.fecha_ini = None
        self.primerCelda = [None, None]
        self.fecha_fin = None


        self.scrolled_window.add(self.tree)
        self.window.show_all()

    # Devuelve true si son iguales
    def compararCelda(self,path1,num1,path2,num2):
        if path1==path2 and num1==num2:
            return True

    def on_cell_toggled(self, widget, path, num):
        if self.compararCelda(self.primerCelda[0],self.primerCelda[1],int(path),num):
            self.stores[num][int(path)][0] = not self.stores[num][int(path)][0]
            self.fecha_ini=None

        elif self.fecha_ini is None:
            self.stores[num][int(path)][0] = not self.stores[num][int(path)][0]
            self.fecha_ini = self.stores[num][int(path)][3]
            self.primerCelda[0]=int(path)
            self.primerCelda[1]=num
            self.pos_ini = int(path)

        elif self.fecha_fin is None:
            if num != self.primerCelda[1] or int(path)<self.primerCelda[0]:
                self.resetearGrilla(num,path)
            else:
                self.fecha_fin = self.stores[num][int(path)][3]
                self.stores[num][int(path)][0] = not self.stores[num][int(path)][0]
                validacion = self.gestor_estado.validarRango(self.stores[num],
                        self.primerCelda[0],
                        int(path),
                        self.estados[num][1])

                if validacion == False:

                    self.resetearGrilla(num,path)
                else:
                    self.stores[num][int(path)][0] = not self.stores[num][int(path)][0]
                    self.fecha_fin = self.stores[num][int(path)][3]

                    validacion = self.gestor_estado.validarRango(self.stores[num],self.primerCelda[0],int(path),self.estados[num][1])
                    if validacion == False:
                        self.resetearGrilla(num,path)

                    elif validacion == True:
                        #pintamos las celdas de color ocupado
                        self.pintarCeldas(num,path)

                        if self.gestorDialogos.presTecla('PRESIONE CUALQUIER TECLA Y CONTINUA...'):
                            interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion(self.menu,self.fecha_ini,self.fecha_fin,self.estados[num][1])
                            self.window.hide()
                    else:
                        respuesta = self.gestorDialogos.confirm("Ya existe una reserva nombre de {2} {3} entre la fecha {0} y {1}".\
                        format(str(validacion[0]),str(validacion[1]),validacion[2],validacion[3]),"Ocupar Igual","Volver")

                        if respuesta == True:
                            self.pintarCeldas(num,path)
                            interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion(self.menu,self.fecha_ini,self.fecha_fin,self.estados[num][1])
                            self.window.hide()
                        else:
                            self.resetearGrilla(num,path)

    def pintarCeldas(self,num,path):
        for b in range(self.primerCelda[0],int(path)+1):
            self.stores[num][b][1] = 'red'

    def resetearGrilla(self,num, path):
        self.stores[num][int(path)][0] = False
        self.stores[self.primerCelda[1]][self.primerCelda[0]][0] = False  # lint:ok
        self.primerCelda = [None,None]
        self.fecha_ini = None
        self.fecha_fin = None



    def inIta(self,col, cell, model, iter, mymodel):
        s = model.get_string_from_iter(iter)
        niter = mymodel.get_iter_from_string(s)
        obj = mymodel.get_value(niter, 0)
        back = mymodel.get_value(niter,1)
        cell.set_property('active', obj)
        cell.set_property('cell-background',back)

    def daterange(self,start_date, end_date):
        for n in range(int ((end_date - start_date).days)):
            yield start_date + timedelta(n)
class InterfazEstadoHabitacion:
    def __init__(self, menu):

        self.menu = menu

        builder = Gtk.Builder()
        builder.add_from_file("estado_habitacion.xml")

        # Obtenemos ventana
        self.window = builder.get_object("window")
        self.window.set_border_width(BORDE_ANCHO)
        self.window.set_default_size(VENTANA_ALTO, VENTANA_ANCHO)

        # Obtenemos combos de la interfaz
        self.dia_ini_combo = builder.get_object("dia_ini_combo")
        self.mes_ini_combo = builder.get_object("mes_ini_combo")
        self.ano_ini_combo = builder.get_object("ano_ini_combo")

        self.dia_fin_combo = builder.get_object("dia_fin_combo")
        self.mes_fin_combo = builder.get_object("mes_fin_combo")
        self.ano_fin_combo = builder.get_object("ano_fin_combo")

        self.scrolled_window = builder.get_object("scrolled_window")
        self.scrolled_window.set_policy(Gtk.PolicyType.AUTOMATIC,
                                        Gtk.PolicyType.ALWAYS)
        self.tree = Gtk.TreeView()
        self.scrolled_window.add(self.tree)

        self.gestorDialogos = GestorDialogos()
        self.gestor_estado = GestorMostrarEstadoHab()

        # Gestorcombos se ocupa de cargar los combos con info
        self.gestorCombos = GestorCombos()

        self.gestorCombos.initDateCombo(self.dia_ini_combo, self.mes_ini_combo,
                                        self.ano_ini_combo,
                                        datetime.today().year,
                                        datetime.today().year)

        self.gestorCombos.initDateCombo(self.dia_fin_combo, self.mes_fin_combo,
                                        self.ano_fin_combo,
                                        datetime.today().year,
                                        datetime.today().year + 2)

        # Seteamos items activos
        self.gestorCombos.setActive([
            self.dia_ini_combo, self.mes_ini_combo, self.ano_ini_combo,
            self.dia_fin_combo, self.mes_fin_combo, self.ano_fin_combo
        ], [0, 0, 0, 0, 0, 0])

        # Conectamos las senales con sus funciones
        handlers = {
            "onDeleteWindow": Gtk.main_quit,
            "onButtonClicked": self.mostrarHabitaciones,
            "onComboIniChanged": self.comboIniChanged,
            "onComboFinChanged": self.comboFinChanged
        }
        builder.connect_signals(handlers)

        # Monstramos ventana
        self.window.show_all()

    def comboIniChanged(self, combo):
        self.gestorCombos.comboUpDate(self.dia_ini_combo, self.mes_ini_combo,
                                      self.ano_ini_combo)

    def comboFinChanged(self, combo):
        self.gestorCombos.comboUpDate(self.dia_fin_combo, self.mes_fin_combo,
                                      self.ano_fin_combo)

    def mostrarHabitaciones(self, combo):
        fecha_ini = self.gestorCombos.getDate(self.dia_ini_combo,
                                              self.mes_ini_combo,
                                              self.ano_ini_combo)

        fecha_fin = self.gestorCombos.getDate(self.dia_fin_combo,
                                              self.mes_fin_combo,
                                              self.ano_fin_combo)

        if self.gestor_estado.validarFecha(fecha_ini, fecha_fin):
            self.scrolled_window.remove(self.tree)
            self.armarGrilla(fecha_ini, fecha_fin)

        else:
            self.gestorDialogos.confirm(
                "La fecha inicial no puede ser mayor que la final", "Aceptar")

    def armarGrilla(self, fecha_inicio, fecha_fin):

        #crea la lista de donde va a tomar las cosas el toggle, el boolean activado o no
        #los colores seria rojo=ocupada, azul=libre y amarillo=reservada
        #la ultima columna seria la fecha
        self.store = Gtk.ListStore(str)
        self.tree = Gtk.TreeView(self.store)
        for fecha in self.daterange(fecha_inicio, fecha_fin):
            treeiter = self.store.append([str(fecha)])

        renderer = Gtk.CellRendererText()

        column = Gtk.TreeViewColumn("Fecha\hab", renderer, text=0)
        self.tree.append_column(column)

        self.estados = self.gestor_estado.selectHab(fecha_inicio, fecha_fin)
        self.stores = []
        columns = []
        renderers = []
        num = 0

        for e in self.estados:
            self.stores.append(Gtk.ListStore(bool, str, str, str))

            i = 0
            for fecha in self.daterange(fecha_inicio, fecha_fin):
                self.stores[num].append([False, e[3][i], e[2][i], str(fecha)])
                i = i + 1

            renderers.append(Gtk.CellRendererToggle())
            columns.append(
                Gtk.TreeViewColumn(
                    str(e[0]) + " \n" + str(e[1].getTipo().getDescripcion()),
                    renderers[num]))
            columns[num].set_cell_data_func(renderers[num], self.inIta,
                                            self.stores[num])
            self.tree.append_column(columns[num])
            renderers[num].connect("toggled", self.on_cell_toggled, num)

            num = num + 1

        self.fecha_ini = None
        self.primerCelda = [None, None]
        self.fecha_fin = None

        self.scrolled_window.add(self.tree)
        self.window.show_all()

    # Devuelve true si son iguales
    def compararCelda(self, path1, num1, path2, num2):
        if path1 == path2 and num1 == num2:
            return True

    def on_cell_toggled(self, widget, path, num):
        if self.compararCelda(self.primerCelda[0], self.primerCelda[1],
                              int(path), num):
            self.stores[num][int(path)][0] = not self.stores[num][int(path)][0]
            self.fecha_ini = None

        elif self.fecha_ini is None:
            self.stores[num][int(path)][0] = not self.stores[num][int(path)][0]
            self.fecha_ini = self.stores[num][int(path)][3]
            self.primerCelda[0] = int(path)
            self.primerCelda[1] = num
            self.pos_ini = int(path)

        elif self.fecha_fin is None:
            if num != self.primerCelda[1] or int(path) < self.primerCelda[0]:
                self.resetearGrilla(num, path)
            else:
                self.fecha_fin = self.stores[num][int(path)][3]
                self.stores[num][int(
                    path)][0] = not self.stores[num][int(path)][0]
                validacion = self.gestor_estado.validarRango(
                    self.stores[num], self.primerCelda[0], int(path),
                    self.estados[num][1])

                if validacion == False:

                    self.resetearGrilla(num, path)
                else:
                    self.stores[num][int(
                        path)][0] = not self.stores[num][int(path)][0]
                    self.fecha_fin = self.stores[num][int(path)][3]

                    validacion = self.gestor_estado.validarRango(
                        self.stores[num], self.primerCelda[0], int(path),
                        self.estados[num][1])
                    if validacion == False:
                        self.resetearGrilla(num, path)

                    elif validacion == True:
                        #pintamos las celdas de color ocupado
                        self.pintarCeldas(num, path)

                        if self.gestorDialogos.presTecla(
                                'PRESIONE CUALQUIER TECLA Y CONTINUA...'):
                            interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion(
                                self.menu, self.fecha_ini, self.fecha_fin,
                                self.estados[num][1])
                            self.window.hide()
                    else:
                        respuesta = self.gestorDialogos.confirm("Ya existe una reserva nombre de {2} {3} entre la fecha {0} y {1}".\
                        format(str(validacion[0]),str(validacion[1]),validacion[2],validacion[3]),"Ocupar Igual","Volver")

                        if respuesta == True:
                            self.pintarCeldas(num, path)
                            interfaces.interfazOcuparHabitacion.InterfazOcuparHabitacion(
                                self.menu, self.fecha_ini, self.fecha_fin,
                                self.estados[num][1])
                            self.window.hide()
                        else:
                            self.resetearGrilla(num, path)

    def pintarCeldas(self, num, path):
        for b in range(self.primerCelda[0], int(path) + 1):
            self.stores[num][b][1] = 'red'

    def resetearGrilla(self, num, path):
        self.stores[num][int(path)][0] = False
        self.stores[self.primerCelda[1]][
            self.primerCelda[0]][0] = False  # lint:ok
        self.primerCelda = [None, None]
        self.fecha_ini = None
        self.fecha_fin = None

    def inIta(self, col, cell, model, iter, mymodel):
        s = model.get_string_from_iter(iter)
        niter = mymodel.get_iter_from_string(s)
        obj = mymodel.get_value(niter, 0)
        back = mymodel.get_value(niter, 1)
        cell.set_property('active', obj)
        cell.set_property('cell-background', back)

    def daterange(self, start_date, end_date):
        for n in range(int((end_date - start_date).days)):
            yield start_date + timedelta(n)
class InterfazGestionarPasajero:
    def __init__(self, menu):
        self.menu = menu
        builder = Gtk.Builder()

        # Dibuja ventanas desde .xml
        builder.add_from_file("Gestionar_Pasajero3.4.xml")

        # Obtenemos widgets
        self.window1 = builder.get_object("window1")
        self.bSiguiente = builder.get_object("bSiguiente")
        self.bCancelar = builder.get_object("bCancelar")
        self.eNombre = builder.get_object("eNombre")
        self.eApellido = builder.get_object("eApellido")
        self.eDocumento = builder.get_object("eDocumento")
        self.cDocumento = builder.get_object("cDocumento")
        self.lDocumento = builder.get_object("lDocumento")

        self.window1.set_border_width(BORDE_ANCHO)
        self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

        # Obtenemos informacion para los combos desde la db
        self.gestorCombos = GestorCombos()
        self.gestorCombos.cargarCombos(lDocumento=self.lDocumento)

        # Events handlers
        handlers = {
            "on_bSiguiente_clicked": self.on_bSiguiente_clicked,
            "on_bCancelar_clicked": self.on_bCancelar_clicked,
            "on_cDocumento_changed": self.on_cDocumento_changed,
        }
        builder.connect_signals(handlers)

        # Variable auxiliar
        self.tipo = None
        self.pasajero = None

        # Monstramos la ventana con los widgets
        self.window1.show_all()

    def on_bSiguiente_clicked(self, boton):
        # Obtenemos informacion de la interfaz
        nombre = self.eNombre.get_text()
        apellido = self.eApellido.get_text()
        codigo = str(self.eDocumento.get_text())
        if nombre is '':
            nombre = None
        if apellido is '':
            apellido = None
        if codigo is '':
            codigo = None

        # Buscamos pasajero
        gestionarPasajeros = GestorGestionarPasajeros()
        errores = gestionarPasajeros.correcto([{
            'nombre': nombre,
            'apellido': apellido,
            'codigo': codigo
        }], gestionarPasajeros.erroneo)

        if not errores:
            arregloPasajeros = gestionarPasajeros.buscar(tipoDocu=self.tipo,
                                                         documento=codigo,
                                                         nombre=nombre,
                                                         apellido=apellido)

            if not arregloPasajeros:
                # Se genera la intefaz de dar alta pasajero
                darAlta = InterfazDarAltaPasajero(self.menu)
                self.window1.destroy()

            else:
                # Se muestra en la pantalla la grilla para seleccionar al pasajero
                pasajero = self.seleccionarPasajero(arregloPasajeros)

        else:
            # Si se cometieron errores
            dialogo = GestorDialogos()
            dialogo.confirm(dialogo.crearAdvertencia(errores), "Aceptar")

            # Obtenemos styles y widgets
            widgets, styles = self.getEntries_Styles(errores)

            # Despintamos todos los widgets
            self.despintarWidgets(
                [self.eNombre, self.eApellido, self.eDocumento], [
                    self.eNombre.get_style_context(),
                    self.eApellido.get_style_context(),
                    self.eDocumento.get_style_context()
                ])

            # Pintamos widgets erroneos
            self.pintarWidgets(widgets, styles)

    def on_bCancelar_clicked(self, boton):
        self.menu.show_all()
        self.window1.destroy()

    def pintarWidgets(self, widgets, styles):
        for widget, style in izip(reversed(widgets), reversed(styles)):
            style.add_class('invalid')
            widget.grab_focus()

    def despintarWidgets(self, widgets, styles):
        for widget, style in izip(reversed(widgets), reversed(styles)):
            style.remove_class('invalid')
            widget.grab_focus()

    def on_cDocumento_changed(self, combo):
        treeIter = combo.get_active_iter()
        if treeIter != None:
            model = combo.get_model()
            id_object = model[treeIter][0]
            self.tipo = id_object

    def seleccionarPasajero(self, arregloPasajeros):
        self.window1.hide()
        builder = Gtk.Builder()

        builder.add_from_file("Lista_pasajeros.xml")
        window2 = builder.get_object("window2")
        lPasajeros = builder.get_object("lPasajeros")
        b2Siguiente = builder.get_object("b2Siguiente")
        treeView = builder.get_object("treeviewLista")

        window2.set_border_width(BORDE_ANCHO)
        window2.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

        for e in arregloPasajeros:
            lPasajeros.append([
                e.getNombre(),
                e.getApellido(),
                e.getDocumento().getTipo().getTipo(),
                e.getDocumento().getCodigo()
            ])

        select = treeView.get_selection()
        select.unselect_all()

        select.connect("changed", self.on_tree_selection_changed)
        b2Siguiente.connect("clicked", self.on_b2Siguiente_clicked, window2,
                            treeView)
        window2.show_all()

    def on_b2Siguiente_clicked(self, boton, window, treeView):
        if self.pasajero is None:
            # El usuario no elige ningun pasajero
            darAlta = InterfazDarAltaPasajero(self.menu)
            window.destroy()

    def on_tree_selection_changed(self, selection):
        model, treeiter = selection.get_selected()
        if treeiter != None:
            self.pasajero = model[treeiter][0]

    def getEntries_Styles(self, omisiones):
        widgets = list()
        styles = list()

        # Agrupamos los widgets y los styles contexts
        for omision in omisiones:
            if omision is 'nombre':
                widgets.append(self.eNombre)
                styles.append(self.eNombre.get_style_context())

            elif omision is 'apellido':
                widgets.append(self.eApellido)
                styles.append(self.eApellido.get_style_context())

            elif omision is 'codigo':
                widgets.append(self.eDocumento)
                styles.append(self.eDocumento.get_style_context())

        # retornamos widgets y style contexts
        return widgets, styles
class InterfazGestionarPasajero:
	def __init__(self,menu):
		self.menu = menu
		builder = Gtk.Builder()

		# Dibuja ventanas desde .xml
		builder.add_from_file("Gestionar_Pasajero3.4.xml")
		
		# Obtenemos widgets
		self.window1 = builder.get_object("window1")
		self.bSiguiente = builder.get_object("bSiguiente")
		self.bCancelar = builder.get_object("bCancelar")
		self.eNombre = builder.get_object("eNombre")
		self.eApellido = builder.get_object("eApellido")
		self.eDocumento = builder.get_object("eDocumento")
		self.cDocumento = builder.get_object("cDocumento")
		self.lDocumento = builder.get_object("lDocumento")
		
		self.window1.set_border_width(BORDE_ANCHO)
		self.window1.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)

		# Obtenemos informacion para los combos desde la db
		self.gestorCombos = GestorCombos()
		self.gestorCombos.cargarCombos(lDocumento=self.lDocumento)

		# Events handlers
		handlers = {
		"on_bSiguiente_clicked": self.on_bSiguiente_clicked,
		"on_bCancelar_clicked": self.on_bCancelar_clicked,
		"on_cDocumento_changed": self.on_cDocumento_changed,
		}
		builder.connect_signals(handlers)
		
		# Variable auxiliar
		self.tipo = None
		self.pasajero = None

		# Monstramos la ventana con los widgets
		self.window1.show_all()	
		

	def on_bSiguiente_clicked(self, boton):
		# Obtenemos informacion de la interfaz
		nombre = self.eNombre.get_text()
		apellido = self.eApellido.get_text()
		codigo = str(self.eDocumento.get_text())
		if nombre is '':
			nombre=None
		if apellido is '':
			apellido = None
		if codigo is '':
			codigo = None

		
		# Buscamos pasajero
		gestionarPasajeros = GestorGestionarPasajeros()
		errores = gestionarPasajeros.correcto([{'nombre': nombre,
				'apellido': apellido,
				'codigo': codigo}],
			gestionarPasajeros.erroneo)
		
		if not errores:
            		arregloPasajeros = gestionarPasajeros.buscar(tipoDocu=self.tipo,
            				documento=codigo,
            				nombre=nombre,
            				apellido=apellido)



            		if not arregloPasajeros:
            			# Se genera la intefaz de dar alta pasajero
            			darAlta = InterfazDarAltaPasajero(self.menu)
            			self.window1.destroy()

            		else:
            			# Se muestra en la pantalla la grilla para seleccionar al pasajero
            			pasajero = self.seleccionarPasajero(arregloPasajeros)
            		
            	
            	else:
                    # Si se cometieron errores
                    dialogo = GestorDialogos()
                    dialogo.confirm(dialogo.crearAdvertencia(errores), "Aceptar")

                    # Obtenemos styles y widgets
                    widgets, styles = self.getEntries_Styles(errores)

                    # Despintamos todos los widgets
                    self.despintarWidgets([self.eNombre, self.eApellido, self.eDocumento],
                                    [self.eNombre.get_style_context(),
                                        self.eApellido.get_style_context(),
                                        self.eDocumento.get_style_context()])

                    # Pintamos widgets erroneos
                    self.pintarWidgets(widgets, styles)

	def on_bCancelar_clicked(self, boton):
		self.menu.show_all()
		self.window1.destroy()
		
	def pintarWidgets(self, widgets, styles):
		for widget, style in izip(reversed(widgets), reversed(styles)):
			style.add_class('invalid')
			widget.grab_focus()

	def despintarWidgets(self, widgets, styles):
		for widget, style in izip(reversed(widgets), reversed(styles)):
			style.remove_class('invalid')
			widget.grab_focus()

	def on_cDocumento_changed(self, combo):
		treeIter = combo.get_active_iter()
		if treeIter != None:
			model = combo.get_model()
			id_object = model[treeIter][0]
			self.tipo = id_object
			
		

	def seleccionarPasajero(self,arregloPasajeros):
		self.window1.hide()
		builder = Gtk.Builder()
		
		
		builder.add_from_file("Lista_pasajeros.xml")
		window2 = builder.get_object("window2")
		lPasajeros = builder.get_object("lPasajeros")
		b2Siguiente = builder.get_object("b2Siguiente")
		treeView = builder.get_object("treeviewLista")

		
		window2.set_border_width(BORDE_ANCHO)
		window2.set_default_size(VENTANA_ANCHO, VENTANA_ALTO)
				
		for e in arregloPasajeros:
				lPasajeros.append([e.getNombre(),
					e.getApellido(),
					e.getDocumento().getTipo().getTipo(),
					e.getDocumento().getCodigo()])
		
		select = treeView.get_selection()
		select.unselect_all()
		
		select.connect("changed", self.on_tree_selection_changed)
		b2Siguiente.connect("clicked", self.on_b2Siguiente_clicked,window2,treeView)
		window2.show_all()
	
	def on_b2Siguiente_clicked(self,boton,window,treeView):
		if self.pasajero is None:
		# El usuario no elige ningun pasajero
			darAlta = InterfazDarAltaPasajero(self.menu)
			window.destroy()
	
	def on_tree_selection_changed(self,selection):
		model,treeiter = selection.get_selected()
		if treeiter != None:
			 self.pasajero = model[treeiter][0]
	
	def getEntries_Styles(self, omisiones):
		widgets = list()
		styles = list()

		# Agrupamos los widgets y los styles contexts
		for omision in omisiones:
			if omision is 'nombre':
				widgets.append(self.eNombre)
				styles.append(self.eNombre.get_style_context())
			
			elif omision is 'apellido':
				widgets.append(self.eApellido)
				styles.append(self.eApellido.get_style_context())

			elif omision is 'codigo':
				widgets.append(self.eDocumento)
				styles.append(self.eDocumento.get_style_context())

		# retornamos widgets y style contexts
		return widgets, styles