Пример #1
0
def main():
    """Initializes pygame and music and starts the gameloop"""
    pygame.init()
    map = Map(32, 18)
    clock = pygame.time.Clock()
    start_music("sfx/onestop.mid")
    map.generate_from_ascii("models/maps/TheBlock.txt")
    map.quick_board_32_18()
    view = View(map)
    ev_handler = EventHandler()
    controller = Controller(view, map)
    ev_handler.register_listener(controller)
    main_menu(clock, view)
    tutorial_screen(clock, view)
    map.switch_turns()
    while 1:
        clock.tick(30)
        view.update_view()
        for event in pygame.event.get():
            ev_handler.post(event)
        if map.sharks_routed() or map.jets_routed():
            break

    end_game(clock,view)
    game_over(clock, view)
Пример #2
0
def main():
    """
    allows to append User's payments and clear them
    :return: nothing
    """
    read = serialize_type()[0]
    write = serialize_type()[1]
    main_user = read()
    if main_user is None:
        main_user = User(0.00)
    while True:
        key = get_key()
        if key == '1':
            account = View.input_accounting()
            main_user.add_payment(account)
        elif key == '2':
            main_user.clear_payments()
            main_user.set_money(0.00)
        elif key == '3':
            View.print_payments(main_user)
        elif key == '4':
            write(main_user)
            return None
        else:
            print("You've entered incorrect value")
Пример #3
0
class App(QtGui.QApplication):
    def __init__(self, sys_argv):
        super(App, self).__init__(sys_argv)
        P1 = Player("Bob")
        P2 = Player("Albert")
        self.model = Game(P1, P2)
        self.view = View(self.model)
        self.controller = Controller(self.model, self.view)
        self.view.show()
Пример #4
0
def main():
    """
    print all payments of user and user info
    :return:nothing
    """
    read = serialize_type()[0]
    main_user = read()
    if main_user is None:
        main_user = User(0.00)
    View.print_payments(main_user)
Пример #5
0
    def __init__(self):
        pygame.init()
        self.clock = pygame.time.Clock()

        self.screen = pygame.display.set_mode([600, 600])
        self.view = View(self.screen)
        self.font = pygame.font.Font(None, 30)

        self.engine = PhysicsEngine()
        self.engine.contactGenerators.append(ContactGenerator(self.engine))
        self.engine.gravity = Vec(0, 0)

        self.rb = Rigidbody()
        self.rb.engine = self.engine
        self.rb.p = Vec(random.uniform(20, 580), random.uniform(20, 580))
        self.rb.v = Vec(0, 0)
        self.rb.w = 0
        self.rb.invmass = 1
        self.rb.invmoi = 0.001
        self.rb.collider = Narc(self.rb, 4)
        self.rb.mat.setRotation(random.uniform(0, 2 * math.pi))
        self.rb.collider.restitution = 1.0
        color = pygame.Color(random.randint(0, 200), random.randint(0, 200), random.randint(0, 200))
        self.view.objects.append(NarcObject(self.rb, color))

        arena = Particle()
        arena.engine = self.engine
        arena.p = Vec(0, 0)
        arena.collider = Arena(arena, 600, 600)
        arena.collider.restitution = 1.0
        self.engine.static.append(arena)
        arena.invmass = 0
Пример #6
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.actions = StepperActions()

    def _initialize(self, platform, urn):
        self.stepper = Stepper(platform, urn, self.status)
        self.v = View(self.status, self.actions)
        self.engine = StepperEngine(self.stepper, self.status, self.actions)
        self.engine.update_configuration(self.v.get_configuration())

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose( "Starting Template Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v
Пример #7
0
 def _initialize(self, platform, urn):
     self.platform = platform
     self.urn = urn
     self.dev = Experiment(platform, urn, debug = False)
     self.v = View(self.status, self.actions)
     self.v.set_name(self.dev.get_name())
     self.status.Verbose("Number of registers: %d" % self.dev.get_size())
     for r in range(self.dev.get_size()):
         self.v.add_register(r, str(r), initial_value = self.dev.read_register(r))
Пример #8
0
 def _initialize(self, platform, urn):
     self.platform = platform
     #print "platform: %s" % str(self.platform)
     self.sdb_urn = urn
     self.v = View(self.status, self.actions)
     self.v.append_text(self.sdb_desc)
     #self.v.resize_columns()
     #self.v.collapse_all()
     self.setup_som_raw()
     self.setup_som_parsed()
Пример #9
0
    def _initialize(self, platform, urn):
        self.v = View(self.actions, self.status)
        self.lcd = LCDSSD1963(platform, urn, debug = False)
        self.platform_name = platform.get_board_name()

        if self.platform_name == "sim":
            return

        self.lcd.setup()
        self.v.set_lcd(self.lcd)
Пример #10
0
    def __init__(self):
        pygame.init()
        self.clock = pygame.time.Clock()
        
        self.screen = pygame.display.set_mode([600, 600])
        self.view = View(self.screen)
        self.font = pygame.font.Font(None,30)
        
        self.engine = PhysicsEngine()
        self.engine.contactGenerators.append(ContactGenerator(self.engine))
        self.engine.gravity = Vec(0,0)
        
        '''for i in range(10):
            rb = Rigidbody()
            rb.engine = self.engine
            rb.p = Vec(random.uniform(20,580),random.uniform(20,580))
            rb.v = Vec(random.uniform(-50,50),random.uniform(-50,50))
            rb.w = random.uniform(-0.25,0.25)
            rb.invmass = 1
            rb.invmoi = 0.001
            rb.collider = Polygon(rb,[Vec(random.uniform(-30,-10),random.uniform(10,30)),
									Vec(random.uniform(-30,-10),random.uniform(-30,-10)),
									Vec(random.uniform(10,30),random.uniform(-30,-10)), 
									Vec(random.uniform(10,30),random.uniform(10,30))])
            rb.collider.restitution = 1.0
            
            self.engine.moving.append(rb)
            color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
            self.view.objects.append(PolyObject(rb,color))'''

        for i in range(10):
            rb = Rigidbody()
            rb.engine = self.engine
            rb.p = Vec(random.uniform(20,580),random.uniform(20,580))
            rb.v = Vec(random.uniform(-50,50),random.uniform(-50,50))
            rb.w = random.uniform(-0.5,0.5)
            rb.invmass = 1
            rb.invmoi = 0.001
            rb.collider = Narc(rb, 6)
            rb.mat.setRotation(random.uniform(0,2*math.pi))
            rb.collider.restitution = 1.0
            
            self.engine.moving.append(rb)
            color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
            self.view.objects.append(NarcObject(rb,color))

        arena = Particle()
        arena.engine = self.engine
        arena.p = Vec(0,0)
        arena.collider = Arena(arena,600,600)
        arena.collider.restitution = 1.0
        self.engine.static.append(arena)
        arena.invmass = 0
Пример #11
0
    def _initialize(self, platform, urn):
        self.v = View(self.status, self.actions)
        self.platform_name = platform.get_board_name()
        #Setup I2C
        self.i2c = I2C(platform, urn)
        if self.platform_name != "sim":
            self.adc_init()

        #Initialize I2C Loop
        self.t = QTimer()
        self.t.timeout.connect(self.update)
        self.t.start(10)
        self.pos = 0
Пример #12
0
 def _initialize(self, platform, urn):
     self.n = platform
     self.urn = urn
     self.v = View(self.status, self.memory_actions)
     self.v.setup_view()
     self.status.Verbose("URN: %s" % urn)
     self.v.add_test("Single Read/Write at Start", True, self.test_single_rw_start)
     self.v.add_test("Single Read/Write at End", True, self.test_single_rw_end)
     self.v.add_test("Long Read/Write Test", True, self.test_long_burst)
     self.v.set_memory_size(self.n.get_device_size(urn))
     self.v.set_memory_offset(self.n.get_device_address(urn))
     self.v.set_nysa(self.n)
     self.v.set_urn(self.urn)
Пример #13
0
    def _initialize(self, platform, urn):
        self.v = View(self.actions, self.status)
        self.platform_name = platform.get_board_name()
        self.status.Verbose("Platform Name: %s" % self.platform_name)
        self.i2s = I2S(platform, urn, debug = False)
        QMetaObject.invokeMethod(self.audio_worker,
                                 "thread_init",
                                 Qt.QueuedConnection,
                                 Q_ARG(object, self),
                                 Q_ARG(object, self.status),
                                 Q_ARG(object, self.i2s),
                                 Q_ARG(object, self.actions))

        self.actions.set_audio_file.connect(self.set_audio_file)
        self.i2s.enable_i2s(True)
        self.i2s.enable_interrupt(True)
        self.set_audio_file("/home/cospan/sandbox/wave_file.wav")
Пример #14
0
    def _initialize(self, platform, urn):
        self.v = View(self.status, self.actions)
        self.v.setup_view()
        self.lax = LogicAnalyzer(platform, urn, debug = False)
        self.lax.set_both_edge(0x00000000)
        self.lax.set_trigger_edge(0xFFFFFFFF)
        self.v.update_enable(self.lax.is_enabled())
        if self.lax.is_enabled():
            self.lax.enable_interrupts(True)
        else:
            self.lax.enable_interrupts(False)

        self.v.update_repeat_count(self.lax.get_repeat_count())
        self.v.update_trigger_offset(self.lax.get_trigger_after())
        self.v.update_trigger_enable(self.lax.get_trigger_mask())
        self.v.update_trigger_polarity(self.lax.get_trigger())
        self.lax.register_interrupt_callback(self.actions.capture_detected)
Пример #15
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.actions = RegisterViewerActions()
        self.actions.get_pressed.connect(self.register_get_pressed)
        self.actions.set_pressed.connect(self.register_set_pressed)

    def _initialize(self, platform, urn):
        self.platform = platform
        self.urn = urn
        self.dev = Experiment(platform, urn, debug = False)
        self.v = View(self.status, self.actions)
        self.v.set_name(self.dev.get_name())
        self.status.Verbose("Number of registers: %d" % self.dev.get_size())
        for r in range(self.dev.get_size()):
            self.v.add_register(r, str(r), initial_value = self.dev.read_register(r))

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose( "Starting Template Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v

    def register_get_pressed(self, index):
        self.status.Verbose("Register Get Pressed: %d" % index)
        value = self.dev.read_register(index)
        self.v.set_register(index, value)

    def register_set_pressed(self, index, value):
        self.status.Verbose("Register Set Pressed: %d: %d" % (index, value))
        self.dev.write_register(index, value)
Пример #16
0
class Test(object):
    
    def __init__(self):
        pygame.init()
        self.clock = pygame.time.Clock()
        
        self.screen = pygame.display.set_mode([600, 600])
        self.view = View(self.screen)
        self.font = pygame.font.Font(None,30)
        
        self.engine = PhysicsEngine()
        self.engine.contactGenerators.append(ContactGenerator(self.engine))
        self.engine.gravity = Vec(0,0)
        
        '''for i in range(10):
            rb = Rigidbody()
            rb.engine = self.engine
            rb.p = Vec(random.uniform(20,580),random.uniform(20,580))
            rb.v = Vec(random.uniform(-50,50),random.uniform(-50,50))
            rb.w = random.uniform(-0.25,0.25)
            rb.invmass = 1
            rb.invmoi = 0.001
            rb.collider = Polygon(rb,[Vec(random.uniform(-30,-10),random.uniform(10,30)),
									Vec(random.uniform(-30,-10),random.uniform(-30,-10)),
									Vec(random.uniform(10,30),random.uniform(-30,-10)), 
									Vec(random.uniform(10,30),random.uniform(10,30))])
            rb.collider.restitution = 1.0
            
            self.engine.moving.append(rb)
            color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
            self.view.objects.append(PolyObject(rb,color))'''

        for i in range(10):
            rb = Rigidbody()
            rb.engine = self.engine
            rb.p = Vec(random.uniform(20,580),random.uniform(20,580))
            rb.v = Vec(random.uniform(-50,50),random.uniform(-50,50))
            rb.w = random.uniform(-0.5,0.5)
            rb.invmass = 1
            rb.invmoi = 0.001
            rb.collider = Narc(rb, 6)
            rb.mat.setRotation(random.uniform(0,2*math.pi))
            rb.collider.restitution = 1.0
            
            self.engine.moving.append(rb)
            color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
            self.view.objects.append(NarcObject(rb,color))

        arena = Particle()
        arena.engine = self.engine
        arena.p = Vec(0,0)
        arena.collider = Arena(arena,600,600)
        arena.collider.restitution = 1.0
        self.engine.static.append(arena)
        arena.invmass = 0
        
    def Run(self):
        avefps = 0
        numFrames = 1
        dt = 0
        fps = 0
        physicsdt = 0.025
        elapsed = 0
        totElapsed = 0
        running = True
        while running:
            event = pygame.event.poll()
            if event.type == pygame.QUIT or totElapsed >= 20:
                running = False
            
            self.screen.fill([245, 240, 230]) # blank the screen.
        
            # Save time by only calling this once
            dt = self.clock.tick() * 0.001
            elapsed += dt
            while elapsed>0:
                elapsed -= physicsdt
            
            self.engine.step(physicsdt)
            
            self.view.update()
        
            totElapsed += dt
        
            newfps = 1.0/dt
        
            avefps *= numFrames
            avefps += newfps
                
            numFrames += 1

            avefps /= numFrames
        
            fpstext = 'Current: %.1f | Average: %.1f | Frames: %d'%(newfps, avefps, numFrames)
            fpsSurface = self.font.render(fpstext,False,Color(0,0,0))
            self.screen.blit(fpsSurface,(0,0))
            
            pygame.display.update()
Пример #17
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.actions = VideoActions()
        self.actions.color_test.connect(self.color_test)

    def _initialize(self, platform, urn):
        self.v = View(self.actions, self.status)
        self.lcd = LCDSSD1963(platform, urn, debug = False)
        self.platform_name = platform.get_board_name()

        if self.platform_name == "sim":
            return

        self.lcd.setup()
        self.v.set_lcd(self.lcd)

    def color_test(self):
        if self.platform_name == "sim":
            self.status.Important("Cannot test color test on sim platform")
            return
            
        width = self.lcd.get_image_width()
        height = self.lcd.get_image_height()
        #width = 480
        #height = 272
        #size = width * height * 2
        size = width * height
        print "Image Width: %d" % width
        print "Image Height: %d" % height
        print "Total Size: %d" % size
        print "Total Size: 0x%08X" % size
        #Write a color to memory
        red    = 0xFF000000
        green  = 0x00FF0000
        blue   = 0x0000FF00
        cyan   = 0x00FFF000
        purple = 0xF000FF00
        orange = 0xFFF00000
        pink   = 0xFF707000
        white  = 0xFFFFFFFF

        #color = white
        color = 0x00000000
        image0 = Array('B')
        for i in range(size):
            if (i % 480) == 0:
                if (i / 480 / 256) > 0:
                    color = 0
                else: 
                    color += 0x000100 << 8
            image0.append((color >> 24) & 0xFF)
            image0.append((color >> 16) & 0xFF)
            image0.append((color >> 8) & 0xFF)
            image0.append(color & 0xFF)


        color = pink
        image1 = Array('B')
        for i in range(size):
            image1.append((color >> 24) & 0xFF)
            image1.append((color >> 16) & 0xFF)
            image1.append((color >> 8) & 0xFF)
            image1.append(color & 0xFF)

        color = purple
        image2 = Array('B')
        for i in range(size):
            image2.append((color >> 24) & 0xFF)
            image2.append((color >> 16) & 0xFF)
            image2.append((color >> 8) & 0xFF)
            image2.append(color & 0xFF)
        
        color = red
        image3 = Array('B')
        for i in range(size):
            image3.append((color >> 24) & 0xFF)
            image3.append((color >> 16) & 0xFF)
            image3.append((color >> 8) & 0xFF)
            image3.append(color & 0xFF)


        color = orange
        image4 = Array('B')
        for i in range(size):
            image4.append((color >> 24) & 0xFF)
            image4.append((color >> 16) & 0xFF)
            image4.append((color >> 8) & 0xFF)
            image4.append(color & 0xFF)

        print "Writing first image..."
        self.lcd.dma_writer.write(image0)
        '''
        #print "Wrote first image"
        self.lcd.dma_writer.write(image1)
        #print "Wrote second image"
        self.lcd.dma_writer.write(image2)
        #print "Wrote third image"
        self.lcd.dma_writer.write(image3)
        #print "Wrote forth image"
        self.lcd.dma_writer.write(image4)
        '''

    def start_standalone_app(self, platform, urn, status, debug = False):
        app = QApplication (sys.argv)
        main = QtGui.QMainWindow()

        self.status = status.Status()
        if debug:
            self.status.set_level(status.StatusLevel.VERBOSE)
        else:
            self.status.set_level(status.StatusLevel.INFO)
        self.status.Verbose("Starting Standalone Application")
        self._initialize(platform, urn)
        main.setCentralWidget(self.v)
        main.show()
        sys.exit(app.exec_())

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose("Starting Video Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v
Пример #18
0
 def __init__(self):
     self.view = View().start()
     self.start(self.view)
Пример #19
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.actions = SataActions()
        self.actions.sata_refresh.connect(self.refresh)

        self.actions.sata_command_layer_reset.connect         (self.sata_command_layer_reset       )
        self.actions.en_hd_int_changed.connect                (self.en_hd_int_changed              )
        self.actions.en_dma_activate_int_changed.connect      (self.en_dma_activate_int_changed    )
        self.actions.en_d2h_reg_int_changed.connect           (self.en_d2h_reg_int_changed         )
        self.actions.en_pio_setup_int_changed.connect         (self.en_pio_setup_int_changed       )
        self.actions.en_d2h_data_int_changed.connect          (self.en_d2h_data_int_changed        )
        self.actions.en_dma_setup_int_changed.connect         (self.en_dma_setup_int_changed       )
        self.actions.en_set_device_bits_int_changed.connect   (self.en_set_device_bits_int_changed )
        self.actions.sata_reset.connect                       (self.sata_reset                     )
        self.actions.send_hard_drive_command.connect          (self.send_hard_drive_command        )
        self.actions.send_hard_drive_features.connect         (self.send_hard_drive_features       )

    def _initialize(self, platform, urn):
        self.v = View(self.status, self.actions)
        self.drv = SATADriver(platform, urn)
        self.refresh()

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose( "Starting Template Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v

    def refresh(self):
        self.status.Debug("Refresh")
        self.v.enable_sata_reset(self.drv.is_sata_reset())
        self.v.enable_sata_reset_active(self.drv.is_sata_reset_active())
        self.v.enable_command_layer_reset_checkbox(self.drv.is_sata_command_layer_reset())
        self.v.enable_hd_int(self.drv.is_hd_interrupt())
        self.v.enable_dma_activate_int(self.drv.is_dma_activate_stb())
        self.v.enable_d2h_reg_int(self.drv.is_d2h_reg_stb())
        self.v.enable_pio_setup_int(self.drv.is_pio_setup_stb())
        self.v.enable_d2h_data_int(self.drv.is_d2h_data_stb())
        self.v.enable_dma_setup_int(self.drv.is_dma_setup_stb())
        self.v.enable_set_device_bits_int(self.drv.is_set_device_bits_stb())
        self.v.enable_platform_ready(self.drv.is_platform_ready())
        self.v.enable_platform_error(self.drv.is_platform_error())
        self.v.enable_linkup(self.drv.is_linkup())
        self.v.enable_sata_busy(self.drv.is_sata_busy())
        self.v.enable_command_layer_ready(self.drv.is_command_layer_ready())
        self.v.enable_transport_layer_ready(self.drv.is_transport_layer_ready())
        self.v.enable_link_layer_ready(self.drv.is_link_layer_ready())
        self.v.enable_phy_layer_ready(self.drv.is_phy_ready())
        self.v.enable_hard_drive_error(self.drv.is_hard_drive_error())
        self.v.enable_pio_data_ready(self.drv.is_pio_data_ready())
        self.v.enable_d2h_interrupt(self.drv.is_d2h_interrupt())
        self.v.enable_d2h_notification(self.drv.is_d2h_notification())
        self.v.enable_d2h_pmult(self.drv.get_d2h_pmult())
        self.v.enable_d2h_status(self.drv.get_d2h_status())
        self.v.enable_d2h_error(self.drv.get_d2h_error())

        self.v.enable_rx_comm_init_detect(self.drv.get_rx_comm_init_detect())
        self.v.enable_rx_comm_wake_detect(self.drv.get_rx_comm_wake_detect())
        self.v.enable_tx_oob_complete(self.drv.get_tx_oob_complete())
        self.v.enable_tx_comm_reset(self.drv.get_tx_comm_reset())
        self.v.enable_tx_comm_wake(self.drv.get_tx_comm_wake())

        self.v.set_oob_state(self.drv.get_oob_state())
        self.v.set_debug_linkup_data(self.drv.get_debug_linkup_data())
        self.v.set_d2h_lba(self.drv.get_hard_drive_lba())
        self.v.set_d2h_fis(self.drv.get_d2h_fis())

    def sata_reset(self, enable):
        self.drv.enable_sata_reset(enable)

    def sata_command_layer_reset(self, enable):
        self.drv.enable_sata_command_layer_reset(enable)

    def en_hd_int_changed(self, enable):
        self.drv.enable_hd_interrupt(enable)

    def en_dma_activate_int_changed(self, enable):
        self.drv.enable_dma_activate_stb(enable)

    def en_d2h_reg_int_changed(self, enable):
        self.enable_d2h_reg_stb(enable)

    def en_pio_setup_int_changed(self, enable):
        self.enable_d2h_reg_stb(enable)

    def en_d2h_data_int_changed(self, enable):
        self.enable_d2h_data_stb(enable)

    def en_dma_setup_int_changed(self, enable):
        self.enable_dma_setup_stb(enable)

    def en_set_device_bits_int_changed(self, enable):
        self.enable_set_device_bits_set(enable)

    def send_hard_drive_features(self, features):
        self.drv.send_hard_drive_features(features)

    def send_hard_drive_command(self, command):
        self.status.Info("Sending Command: 0x%02X" % command)
        self.drv.send_hard_drive_command(command)
Пример #20
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.status = None
        self.actions = None
        self.memory_actions = MemoryActions()
        self.mutex = QMutex()
        self.reader_thread = None
        self.memory_actions.memory_test_start.connect(self.start_tests)
        self.memory_actions.memory_read_finished.connect(self.run_test)
        self.memory_actions.memory_file_2_memory.connect(self.file_2_memory)
        self.memory_actions.memory_memory_2_file.connect(self.memory_2_file)

    def __del__(self):
        if self.reader_thread is not None:

            self.status.Important( "Waiting for reader thread to finish")
            self.reader_thread.join()

    def _initialize(self, platform, urn):
        self.n = platform
        self.urn = urn
        self.v = View(self.status, self.memory_actions)
        self.v.setup_view()
        self.status.Verbose("URN: %s" % urn)
        self.v.add_test("Single Read/Write at Start", True, self.test_single_rw_start)
        self.v.add_test("Single Read/Write at End", True, self.test_single_rw_end)
        self.v.add_test("Long Read/Write Test", True, self.test_long_burst)
        self.v.set_memory_size(self.n.get_device_size(urn))
        self.v.set_memory_offset(self.n.get_device_address(urn))
        self.v.set_nysa(self.n)
        self.v.set_urn(self.urn)

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self._initialize(platform, urn)

    def get_view(self):
        return self.v

    def file_2_memory(self, filename, address, count = None):
        """
        Data should be in the form of a byte array
        """
        f = open(filename, 'rb')
        d = Array('B')
        d.fromstring(f.read())
        f.close()
        if count is None:
            count = len(d)
        mem_base = self.n.get_device_address(self.urn)
        print "Writing %d bytes down" % len(d[0:count])
        self.n.write_memory(mem_base + address, d[0:count])

    def memory_2_file(self, filename, address, byte_count):
        f = open(filename, 'wb')
        mem_base = self.n.get_device_address(self.urn) 
        data = self.n.read_memory(mem_base + address, ((byte_count + 3) / 4))
        data[0:byte_count].tofile(f)
        f.close()

    def start_tests(self):
        print "Start Tests!"
        self.gen = test_iterator(self.v.get_num_tests())
        self.run_test()

    def get_test(self):
        index = self.gen.next()
        if self.v.is_test_enabled(index):
            return self.v.get_test_function(index)
        return None

    def run_test(self, status = None):
        finished = False
        if status is not None:
            print "Finished test, Result: %s" % status
        try:
            while not finished:
                t = self.get_test()
                if t is not None:
                    print "Running Test: %s" % str(t)
                    self.reader_thread = ReaderThread(self.mutex, t)
                    self.reader_thread.start()
                    return
                else:
                    continue
        except StopIteration:
            self.v.update()
            print "Done!"

    def test_single_rw_start(self):
        status = "Passed"
        print "device URN: %s" % self.urn
        size = self.n.get_device_size(self.urn)
        offset = self.n.get_device_address(self.urn)
        print "size: 0x%08X" % size
        print "offset: 0x%08X" % offset
        self.clear_memory()
        if self.status.is_command_line():
            self.status.Verbose( "Test Single Read/Write at Beginning")
        data_out = Array('B', [0xAA, 0xBB, 0xCC, 0xDD, 0x55, 0x66, 0x77, 0x88])
        self.n.write_memory(offset, data_out)
        print "Wrote second part!"
        data_in = self.n.read_memory(offset, len(data_out)/4)
        print "length: data_out: %d, data_in: %d" % (len(data_out), len(data_in))
        print "data out: %s" % str(data_out)
        print "data_in: %s" % str(data_in)
        for i in range (len(data_out)):
            if data_in[i] != data_out[i]:
                status = "Failed"
                print "Error at: 0x%02X OUT: 0x%08X IN: 0x%08X" % (i, data_out[i], data_in[i])
                #print "ERROR at: [{0:>2}] OUT: {1:>8} IN: {2:>8}".format(str(i), hex(data_out[i]), hex(data_in[i]))
        return status

    def test_single_rw_end(self):
        status = "Passed"
        size = self.n.get_device_size(self.urn)
        offset = self.n.get_device_address(self.urn)
        self.clear_memory()

        if self.status.is_command_line():
            self.status.Verbose( "Test Single Read/Write at End")
        data_out = Array('B', [0xAA, 0xBB, 0xCC, 0xDD, 0x55, 0x66, 0x77, 0x88])
        self.n.write_memory(offset + (size - 16), data_out)
        print "Reading from location: 0x%08X" % (offset + (size - 16))
        data_in = self.n.read_memory(offset + (size - 16), 2)

        for i in range (len(data_out)):
            if data_in[i] != data_out[i]:
                print "Error at: 0x%02X OUT: 0x%08X IN: 0x%08X" % (i, data_out[i], data_in[i])
                #print "ERROR at: [{0:>2}] OUT: {1:>8} IN: {2:>8}".format(str(i), hex(data_out[i]), hex(data_in[i]))
                status = "Failed"

        return status

    def test_long_burst(self):
        status = "Passed"
        fail = False
        fail_count = 0
        position = 0
        self.clear_memory()
        total_size = self.n.get_device_size(self.urn)
        offset = self.n.get_device_address(self.urn)

        size = 0
        if total_size > MAX_LONG_SIZE:
            self.status.Info("Memory Size: 0x%08X is larger than read/write size" % total_size)
            self.status.Info("\tBreaking transaction into 0x%08X chunks" % MAX_LONG_SIZE)
            size = MAX_LONG_SIZE
        else:
            size = total_size

        #Generate Data to Write
        data_out = Array('B')
        for i in range (0, size * 4):
            data_out.append((i % 256))

        print "Length of data: 0x%08X" % len(data_out)
        print "32-bit Length: 0x%08X" % (len(data_out) / 2)

        #Write Data Out
        while position < total_size:
            start = time.time()
            self.n.write_memory(offset + position, data_out)
            end = time.time()

            #Increment the position
            prev_pos = position
            position += size

            if position + size > total_size:
                size = total_size - position

            self.status.Info("Wrote: 0x%08X - 0x%08X" % (prev_pos, position))
            self.status.Verbose( "Write Time : %f" % (end - start))


        position = 0

        start = time.time()
        if total_size > MAX_LONG_SIZE:
            self.status.Info("Memory Size: 0x%08X is larger than read/write size" % total_size)
            self.status.Info("\tBreaking transaction into 0x%08X chunks" % MAX_LONG_SIZE)

            size = MAX_LONG_SIZE
        else:
            size = total_size
 
        while position < total_size:

            data_in = self.n.read_memory(offset + position, len(data_out) / 4)
            end = time.time()
            self.status.Verbose( "Read Time: %f" % (end - start))
            self.status.Verbose( "Comparing Values...")
            if len(data_out) != len(data_in):
                if self.status.is_command_line():
                    self.status.Error( "Data in length not equal to data_out length")
                    self.status.Error( "\toutgoing: %d" % len(data_out))
                    self.status.Error( "\tincomming: %d" % len(data_in))

            dout = data_out.tolist()
            din = data_in.tolist()

            for i in range(len(data_out)):
                out_val = dout[i]
                in_val = din[i]
                if out_val != in_val:
                    fail = True
                    status = "Failed"
                    self.status.Error("Mismatch @ 0x%08X: %d and %d not equal" % (position + i, out_val, in_val))
                    self.status.Error("Mismatch @ 0x%08X: Write: (Hex): 0x%08X Read (Hex): 0x%08X" % (i, data_out[i], data_in[i]))
                    if fail_count >= 16:
                        break
                    fail_count += 1

            prev_pos = position
            position += size
            prev_size = size
            if position + size > total_size:
                size = total_size - position

            self.status.Info("Read: 0x%08X - 0x%08X Size: 0x%08X" % (prev_pos, position, prev_size))

        return status

    def clear_memory(self):
        total_size = self.n.get_device_size(self.urn)
        offset = self.n.get_device_address(self.urn)
        position = 0
        size = 0
        if self.status.is_command_line():
            self.status.Verbose( "Clearing Memory")
            self.status.Verbose( "Memory Size: 0x%08X" % size)

        if total_size > MAX_LONG_SIZE:
            self.status.Info("Memory Size: 0x%08X is larger than read/write size" % total_size)
            self.status.Info("\tBreaking transaction into 0x%08X chunks" % MAX_LONG_SIZE)
            size = MAX_LONG_SIZE
        else:
            size = total_size

        while position < total_size:
            data_out = Array('B')
            for i in range(0, ((size / 4) - 1)):
                num = 0x00
                data_out.append(num)

            self.n.write_memory(offset + position, data_out)

            #Increment the position
            prev_pos = position
            position += size

            if position + size > total_size:
                size = total_size - position

            if self.status:
                self.status.Verbose("Cleared: 0x%08X - 0x%08X" % (prev_pos, position))
Пример #21
0
 def __init__(self):
     self.model = Model()
     self.view = View()
     self.logged = False
Пример #22
0
def menu():
    in_menu = True
    while in_menu:
        option = View.find_option()
        if option is 0:
            in_menu = False
            continue
        if option is -1:
            wait()
            continue
        if option is 1:
            View.print_on_update()
            update_info()
            View.print_after_update()
            wait()
            continue
        if option is 2:
            path = View.get_path_to_insert()
            View.inserting_data()
            status = insert_generating_data(path)
            if status is -1:
                View.print_error()
            else:
                View.completed_insert()
            wait()
            continue
        if option is 3:
            result = View.confirm_delete()
            if result is 'Y' or result is 'y':
                delete_old_news()
                View.print_after_delete()
                wait()
                continue
            if result is 'N' or result is 'n':
                wait()
                continue
            if result is -1:
                View.print_error()
                wait()
                continue
        if option is 4:
            analize_views_per_hour()
            wait()
            continue
        if option is 5:
            analize_views()
            wait()
            continue
        if option is 6:
            news_id = View.choose_news()
            if news_id is -1:
                View.print_error()
                wait()
                continue
            result = analize_similar(news_id)
            if result is -1:
                View.print_error()
                wait()
                continue
            for res in result:
                link = get_news_link(res.news_id)
                View.print_news(res, link)
            wait()
            continue
        if option is 7:
            analize_authors()
            wait()
        if option is 8:
            news = get_all_news()
            for item in news:
                View.print_all_news(item)
            wait()
Пример #23
0
class Controller:
    """
    ************************************
    *  A controller for a crossfit DB  *
    ************************************
    """
    def __init__(self):
        self.model = Model()
        self.view = View()

    def start(self):
        self.view.start()
        self.main_menu()


    """
    *********************************
    *       General Controller      *
    *********************************
    """
    def main_menu(self):
        o = '0'
        while o != '7':
            self.view.main_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.cliente_menu()
            elif o == '2':
                self.coach_menu()
            elif o == '3':
                self.material_menu()
            elif o == '4':
                self.ejercicio_menu()
            elif o == '5':
                self.wod_menu()
            elif o == '6':
                self.clase_menu()
            elif o == '7':
                self.view.end()
                exit()
            else:
                self.view.not_valid_option()
        return

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f,v in zip(fs,vs):
            if v != '':
                fields.append(f+' = %s')
                vals.append(v)
        return fields,vals


    """
    *********************************
    *    Controllers for cliente    *
    *********************************
    """
    def cliente_menu(self):
        o = '0'
        while o != '8':
            self.view.cliente_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_client()
            elif o == '2':
                self.read_cliente()
            elif o == '3':
                self.read_all_clientes()
            elif o == '4':
                self.read_cliente_nombre()
            elif o == '5':
                self.update_cliente()
            elif o == '6':
                self.delete_cliente()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_cliente(self):
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Apellido Paterno: ')
        apellidoP = input()
        self.view.ask('Apellido Materno: ')
        apellidoM = input()
        self.view.ask('Edad: ')
        edad = input()
        self.view.ask('Teléfono: ')
        tel = input()
        self.view.ask('Email: ')
        email = input()
        self.view.ask('Fecha de Pago: ')
        fechaPago = input()
        self.view.ask('Hora de clase: ')
        hora_clase = input()
        return [nombre, apellidoP, apellidoM, edad, tel, email, fechaPago, hora_clase]

    def create_client(self):
        nombre, apellidoP, apellidoM, edad, tel, email, fechaPago, hora_clase = self.ask_cliente()
        out = self.model.create_cliente(nombre, apellidoP, apellidoM, edad, tel, email, fechaPago, hora_clase)
        if out == True:
            self.view.ok(nombre+' '+apellidoP+' '+apellidoM, ' se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR EL CLIENTE. REVISA')
        return

    def read_cliente(self):
        self.view.ask('ID Cliente: ')
        id_cliente = input()
        client = self.model.read_cliente(id_cliente)
        if type(client) == tuple:
            self.view.show_cliente_header(' Datos del cliente '+id_cliente+' ')
            self.view.show_a_cliente(client)
            self.view.show_cliente_midder()
            self.view.show_cliente_footer()
        else:
            if client == None:
                self.view.error('EL CLIENTE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LLER EL CLIENTE. REVISA')
        return
    
    def read_all_clientes(self):
        clients = self.model.read_all_clientes()
        if type(clients) == list:
            self.view.show_cliente_header(' Todos los clientes ')
            for client in clients:
                self.view.show_a_cliente(client)
                self.view.show_cliente_midder()
                self.view.show_cliente_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS CLIENTES. REVISA')
        return
    
    def read_cliente_nombre(self):
        self.view.ask('Nombre: ')
        name = input()
        clients = self.model.read_cliente_nombre(name)
        if type(clients) == list:
            self.view.show_cliente_header(' Clientes con el nombre: '+name+' ')
            for client in clients:
                self.view.show_a_cliente(client)
                self.view.show_cliente_midder()
            self.view.show_cliente_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS CLIENTES. REVISA')
        return

    def update_cliente(self):
        self.view.ask('ID de cliente a modificar: ')
        id_client = input()
        client = self.model.read_cliente(id_client)
        if type(client) == tuple:
            self.view.show_cliente_header(' Datos del Cliente: '+id_client+' ')
            self.view.show_a_cliente(client)
            self.view.show_cliente_midder()
            self.view.show_cliente_footer()
        else:
            if client == None:
                self.view.error('EL CLIENTE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL CLIENTE. REVISA')
            return
        self.view.msg('Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_cliente()
        fields, vals = self.update_lists(['nombre', 'apellido_p', 'apellido_m','edad','telefono','correo','fecha_pago','hora_clase'], whole_vals)
        vals.append(id_client)
        vals = tuple(vals)
        out = self.model.update_cliente(fields, vals)
        if out == True:
            self.view.ok(id_client, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL CLIENTE. REVISA')
        return

    def delete_cliente(self):
        self.view.ask('ID de cliente a borrar: ')
        id_client = input()
        count = self.model.delete_cliente(id_client)
        if count != 0:
            self.view.ok(id_client, 'se borró')
        else:
            if count == 0:
                self.view.error('EL CLIENTE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL CLIENTE. REVISA')
        return

    """
    *********************************
    *     Controllers for coach     *
    *********************************
    """
    def coach_menu(self):
        o = '0'
        while o != '8':
            self.view.coach_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_coach()
            elif o == '2':
                self.read_coach()
            elif o == '3':
                self.read_all_coach()
            elif o == '4':
                self.read_coach_nombre()
            elif o == '5':
                self.update_coach()
            elif o == '6':
                self.delete_coach()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_coach(self):
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Apellido Paterno: ')
        apellidoP = input()
        self.view.ask('Apellido Materno: ')
        apellidoM = input()
        self.view.ask('Teléfono: ')
        tel = input()
        self.view.ask('Email: ')
        email = input()
        return [nombre, apellidoP, apellidoM, tel, email]

    def create_coach(self):
        nombre, apellidoP, apellidoM, tel, email = self.ask_coach()
        out = self.model.create_coach( nombre, apellidoP, apellidoM, tel, email)
        if out == True:
            self.view.ok(nombre+' '+apellidoP+' '+apellidoM, ' se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR EL COACH. REVISA')
        return

    def read_coach(self):
        self.view.ask('ID Coach: ')
        id_coach = input()
        coach = self.model.read_coach(id_coach)
        print(coach)
        if type(coach) == tuple:
            self.view.show_coach_header(' Datos del coach '+id_coach+' ')
            self.view.show_a_coach(coach)
            self.view.show_coach_midder()
            self.view.show_coach_footer()
        else:
            if coach == None:
                self.view.error('EL COACH NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LLER EL COACH. REVISA')
        return
    
    def read_all_coach(self):
        coachs = self.model.read_all_coach()
        if type(coachs) == list:
            self.view.show_coach_header(' Todos los coachs ')
            for coach in coachs:
                self.view.show_a_coach(coach)
                self.view.show_coach_midder()
                self.view.show_coach_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS COACHS. REVISA')
        return
    
    def read_coach_nombre(self):
        self.view.ask('Nombre: ')
        name = input()
        coachs = self.model.read_coach_nombre(name)
        if type(coachs) == list:
            self.view.show_coach_header(' Coach con el nombre: '+name+' ')
            for coach in coachs:
                self.view.show_a_coach(coach)
                self.view.show_coach_midder()
                self.view.show_coach_footer()
        else:
            self.view.error('PROBLEMA AL LEER EL COACH. REVISA')
        return

    def update_coach(self):
        self.view.ask('ID de coach a modificar: ')
        id_coach = input()
        coach = self.model.read_coach(id_coach)
        if type(coach) == tuple:
            self.view.show_coach_header(' Datos del coach: '+id_coach+' ')
            self.view.show_a_coach(coach)
            self.view.show_coach_midder()
            self.view.show_coach_footer()
        else:
            if coach == None:
                self.view.error('EL COACHS NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL COACHS. REVISA')
            return
        self.view.msg('Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_coach()
        fields, vals = self.update_lists(['nombre', 'apellido_p', 'apellido_m', 'telefono', 'correo'], whole_vals)
        vals.append(id_coach)
        vals = tuple(vals)
        out = self.model.update_coach(fields, vals)
        if out == True:
            self.view.ok(id_coach, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL COACHS. REVISA')
        return

    def delete_coach(self):
        self.view.ask('ID de coach a borrar: ')
        id_coach = input()
        count = self.model.delete_coach(id_coach)
        if count != 0:
            self.view.ok(id_coach, 'se borró')
        else:
            if count == 0:
                self.view.error('EL COACHS NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL COACHS. REVISA')
        return

    """
    ************************************
    *     Controllers for Material     *
    ************************************
    """

    def material_menu(self):
        o = '0'
        while o != '6':
            self.view.material_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_material()
            elif o == '2':
                self.read_a_material()
            elif o == '3':
                self.read_all_materiales()
            elif o == '4':
                self.update_material()
            elif o == '5':
                self.delete_material()
            elif o == '6':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_material(self):
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Cantidad: ')
        cantidad = input()
        self.view.ask('Descripcion: ')
        descripcion = input()
        return [nombre, cantidad, descripcion]

    def create_material(self):
        nombre, cantidad, descripcion = self.ask_material()
        out = self.model.create_material(nombre, cantidad, descripcion)
        if out == True:
            self.view.ok(nombre,'se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR EL MATERIAL. REVISA')
        return

    def read_a_material(self):
        self.view.ask('Nombre material: ')
        nombre = input()
        material = self.model.read_a_material(nombre)
        if type(material) == tuple:
            self.view.show_material_header(' Datos del Material: '+nombre+' ')
            self.view.show_a_material(material)
            self.view.show_material_midder()
            self.view.show_material_footer()
        else:
            if material == None:
                self.view.error('EL MATERIAL NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LLER EL MATERIAL. REVISA')
        return
    
    def read_all_materiales(self):
        materiales = self.model.read_all_materiales()
        if type(materiales) == list:
            self.view.show_material_header(' Todos los materiales ')
            for material in materiales:
                self.view.show_a_material(material)
                self.view.show_material_midder()
                self.view.show_material_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS MATERIALES. REVISA')
        return
    
    def update_material(self):
        self.view.ask('Nombre de material a modificar: ')
        nombre = input()
        material = self.model.read_a_material(nombre)
        if type(material) == tuple:
            self.view.show_material_header(' Datos del material: '+nombre+' ')
            self.view.show_a_material(material)
            self.view.show_material_midder()
            self.view.show_material_footer()
        else:
            if material == None:
                self.view.error('EL MATERIAL NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL MATERIAL. REVISA')
            return
        self.view.msg('Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_material()
        fields, vals = self.update_lists(['nombre', 'cantidad', 'descripcion'], whole_vals)
        vals.append(nombre)
        vals = tuple(vals)
        out = self.model.update_material(fields, vals)
        if out == True:
            self.view.ok(nombre, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL MATERIAL. REVISA')
        return

    def delete_material(self):
        self.view.ask('Nombre del material a borrar: ')
        nombre = input()
        count = self.model.delete_material(nombre)
        if count != 0:
            self.view.ok(nombre, 'se borró')
        else:
            if count == 0:
                self.view.error('EL MATERIAL NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL MATERIAL. REVISA')
        return

 

    """
    ************************************
    *     Controllers for Ejercicios     *
    ************************************
    """
    def ejercicio_menu(self):
        o = '0'
        while o != '6':
            self.view.ejercicio_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_ejercicio()
            elif o == '2':
                self.read_a_ejercicio()
            elif o == '3':
                self.read_all_ejercicios()
            elif o == '4':
                self.update_ejercicio()
            elif o == '5':
                self.delete_ejercicio()
            elif o == '6':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_ejercicio(self):
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Material: ')
        material = input()
        self.view.ask('Descripcion: ')
        descripcion = input()
        return [nombre, material, descripcion]

    def create_ejercicio(self):
        nombre, material, descripcion = self.ask_ejercicio()
        out = self.model.create_ejercicio(nombre, material, descripcion)
        if out == True:
            self.view.ok(nombre+' '+material, ' se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR EL EJERCICIO. REVISA')
        return

    def read_a_ejercicio(self):
        self.view.ask('Nombre Ejercicio: ')
        nombre = input()
        ejercicio = self.model.read_a_ejercicio(nombre)
        if type(ejercicio) == tuple:
            self.view.show_ejercicio_header(' Datos del ejercicio: '+nombre+' ')
            self.view.show_a_ejercicio(ejercicio)
            self.view.show_ejercicio_midder()
            self.view.show_ejercicio_footer()
        else:
            if ejercicio == None:
                self.view.error('EL EJERCICIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LLER EL EJERCICIO. REVISA')
        return
    
    def read_all_ejercicios(self):
        ejercicios = self.model.read_all_ejercicios()
        if type(ejercicios) == list:
            self.view.show_ejercicio_header(' Todos los ejercicios ')
            for ejercicio in ejercicios:
                self.view.show_a_ejercicio(ejercicio)
                self.view.show_ejercicio_midder()
                self.view.show_ejercicio_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS EJERCICIOS. REVISA')
        return
    
    def update_ejercicio(self):
        self.view.ask('Nombre del ejercicio a modificar: ')
        nombre = input()
        ejercicio = self.model.read_a_ejercicio(nombre)
        if type(ejercicio) == tuple:
            self.view.show_ejercicio_header(' Datos del ejercicio: '+nombre+' ')
            self.view.show_a_ejercicio(ejercicio)
            self.view.show_ejercicio_midder()
            self.view.show_ejercicio_footer()
        else:
            if ejercicio == None:
                self.view.error('EL EJERCICIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL EJERCICIO. REVISA')
            return
        self.view.msg('Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_ejercicio()
        fields, vals = self.update_lists(['nombre', 'material', 'descripcion'], whole_vals)
        vals.append(nombre)
        vals = tuple(vals)
        out = self.model.update_ejercicio(fields, vals)
        if out == True:
            self.view.ok(nombre, 'actualizadó')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL EJERCICIO. REVISA')
        return

    def delete_ejercicio(self):
        self.view.ask('Nombre del ejercicio a borrar: ')
        nombre = input()
        count = self.model.delete_ejercicio(nombre)
        if count != 0:
            self.view.ok(nombre, 'se borró')
        else:
            if count == 0:
                self.view.error('EL EJERCICIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL EJERCICIO. REVISA')
        return

 
    """
    ************************************
    *        Controllers for WOD       *
    ************************************
    """
    def wod_menu(self):
        o = '0'
        while o != '9':
            self.view.wod_menu()
            self.view.option('9')
            o = input()
            if o == '1':
                self.create_wod()
            elif o == '2':
                self.read_a_wod()
            elif o == '3':
                self.read_all_wods()
            elif 0 == '4':
                self.agregar_ejercicios_wod()
            elif o == '5':
                self.update_wod()
            elif o == '6':
                self.update_ejercicio_wod()
            elif o == '7':
                self.delete_ejercicio_wod()
            elif o == '8':
                self.delete_wod()
            elif o == '9':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_wod(self):
        self.view.ask('Fecha wod: ')
        fecha = input()
        self.view.ask('Tiempo (minutos): ')
        tiempo = input()
        self.view.ask('Tipo: ')
        tipo = input()
        return [fecha, tiempo, tipo]
    
    def ask_ejercicio_wod(self):
        self.view.ask('Nombre Ejercicio: ')
        nombre = input()
        self.view.ask('Repeticiones: ')
        reps = input()
        return [nombre,reps]

    def create_wod(self):
        fecha, tiempo, tipo = self.ask_wod()
        out = self.model.create_wod(fecha, tiempo, tipo)
        if out == True:
            print('Cuantos ejercicios desea agregar al wod?')
            n = input()
            for i in range(int(n)):
                nombre,reps = self.ask_ejercicio_wod()
                out1 = self.model.agregar_ejercicio_wod(nombre,fecha,reps)
                if out1 == True:
                    self.view.ok(nombre, ' se agregó')
                else:
                     self.view.error('NO SE PUDO AGREGAR EL EJERCICIO. REVISA')
            self.view.ok('WOD '+fecha, ' se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR EL WOD. REVISA')
        return

    def read_a_wod(self):
        self.view.ask('Fecha wod: ')
        fecha = input()
        wod = self.model.read_a_wod(fecha)
        ejercicios = self.model.read_all_ejercicios_wod(fecha)
        if type(wod) == tuple:
            self.view.show_wod_header(' Datos del wod: '+fecha+' ')
            self.view.show_a_wod(wod)
            if type(ejercicios) == list:
                self.view.show_ejercicio_midder()
                self.view.show_ejercicio_header('Ejercicios del WOD ')
                for ejercicio in ejercicios:
                    self.view.show_ejercicio_wod(ejercicio)
                    self.view.show_ejercicio_midder()
                self.view.show_ejercicio_footer()
            else:
                self.view.error('EL WOD NO TIENE EJERCICIOS')
        else:
            if wod == None:
                self.view.error('EL WOD NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LLER EL WOD. REVISA')
        return
    
    def read_all_wods(self):
        wods = self.model.read_all_wods()
        if type(wods) == list:
            self.view.show_wod_header(' Todos los wods ')
            for wod in wods:
                self.view.show_a_wod(wod)
                ejercicios = self.model.read_all_ejercicios_wod(wod[0])
                if type(ejercicios) == list:
                    for ejercicio in ejercicios:
                        self.view.show_ejercicio_wod(ejercicio)
                    self.view.show_wod_midder()
                    self.view.show_wod_footer()
                else:
                    self.view.error('EL WOD NO TIENE EJERCICIOS')
        else:
            self.view.error('PROBLEMA AL LEER LOS WODS. REVISA')
        return
    
    def update_wod(self):
        self.view.ask('Fecha WOD a modificar: ')
        id_wod = input()
        wod = self.model.read_a_wod(id_wod)
        if type(wod) == tuple:
            self.view.show_wod_header(' Datos del wod: '+id_wod+' ')
            self.view.show_a_wod(wod)
            self.view.show_wod_midder()
            self.view.show_wod_footer()
        else:
            if wod == None:
                self.view.error('EL WOD NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL WOD. REVISA')
            return
        self.view.msg('Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_wod()
        fields, vals = self.update_lists(['fecha', 'tiempo', 'tipo'], whole_vals)
        vals.append(id_wod)
        vals = tuple(vals)
        out = self.model.update_wod(fields, vals)
        if out == True:
            self.view.ok(id_wod, 'actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL WOD. REVISA')
        return

    def delete_wod(self):
        self.view.ask('Fecha WOD a borrar: ')
        id_wod = input()
        count = self.model.delete_wod(id_wod)
        if count != 0:
            self.view.ok(id_wod, 'se borró')
        else:
            if count == 0:
                self.view.error('EL WOD NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL WOD. REVISA')
        return

    def agregar_ejercicios_wod(self):
        self.view.ask('Fecha WOD a agregar ejercicios: ')
        fecha = input()
        nombre,reps = self.ask_ejercicio_wod()
        out = self.model.agregar_ejercicio_wod(nombre,fecha,reps)
        if out == True:
            self.view.ok(nombre+' agregado al WOD'+fecha, ' se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR EL WOD. REVISA')

    def update_ejercicio_wod(self):
        self.view.ask('Fecha WOD a modificar: ')
        fecha = input()
        wod = self.model.read_a_wod(fecha)
        if type(wod) == tuple:
            self.view.show_wod_header(' Datos del wod: '+fecha+' ')
            self.view.show_a_wod(wod)
            ejercicios = self.model.read_all_ejercicios_wod(wod[0])
            if type(ejercicios) == list:
                for ejercicio in ejercicios:
                    self.view.show_ejercicio_wod(ejercicio)
            self.view.show_wod_midder()
            self.view.show_wod_footer()
        else:
            if wod == None:
                self.view.error('EL WOD NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL WOD. REVISA')
            return
        self.view.ask('Nombre del ejercio a modificar: ')
        nombre = input()
        self.view.msg('Ingresa el numero nuevo de repeticiones: ')
        whole_vals = input()
        fields, vals = self.update_lists(['repeticiones'], whole_vals)
        vals.append(fecha)
        vals.append(nombre)
        vals = tuple(vals)
        out = self.model.update_ejercicio_wod(fields, vals)
        if out == True:
            self.view.ok(nombre, 'actualizado')
        else:
            print(out)
            self.view.error('NO SE PUDO ACTUALIZAR EL WOD. REVISA')
        return

    def delete_ejercicio_wod(self):
        self.view.ask('Fecha WOD: ')
        fecha = input()
        wod = self.model.read_a_wod(fecha)
        if type(wod) == tuple:
            self.view.show_wod_header(' Datos del wod: '+fecha+' ')
            self.view.show_a_wod(wod)
            ejercicios = self.model.read_all_ejercicios_wod(wod[0])
            if type(ejercicios) == list:
                for ejercicio in ejercicios:
                    self.view.show_ejercicio_wod(ejercicio)
            self.view.show_wod_midder()
            self.view.show_wod_footer()
        else:
            if wod == None:
                self.view.error('EL WOD NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL WOD. REVISA')
            return
        self.view.ask('Nombre del ejercio a eliminar: ')
        nombre = input()
        out = self.model.delete_ejercicio_wod(fecha,nombre)
        if out == True:
            self.view.ok(nombre, 'actualizado')
        else:
            print(out)
            self.view.error('NO SE PUDO ACTUALIZAR EL WOD. REVISA')
        return

    """
    ************************************
    *        Controllers for Clase       *
    ************************************
    """
    def clase_menu(self):
        o = '0'
        while o != '6':
            self.view.clase_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_clase()
            elif o == '2':
                self.read_a_clase()
            elif o == '3':
                self.read_all_clases()
            elif o == '4':
                self.read_clase_coach()
            elif o == '5':
                self.update_clase()
            elif o == '6':
                self.delete_clase()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_clase(self):
        self.view.ask('Hora Inicio: ')
        horaInicio = input()
        self.view.ask('Hora Fin: ')
        horaFin = input()
        self.view.ask('Fecha WOD: ')
        wod = input()
        self.view.ask('ID Coach: ')
        coach = input()
        return [horaInicio, horaFin, wod, coach]

    def create_clase(self):
        horaInicio, horaFin, wod, coach = self.ask_clase()
        out = self.model.create_clase(horaInicio, horaFin, wod, coach)
        if out == True:
            self.view.ok('Clase '+horaInicio, ' se agregó')
        else:
            self.view.error('NO SE PUDO AGREGAR LA CLASE. REVISA')
        return

    def read_a_clase(self):
        self.view.ask('Hora de la clase: ')
        hora = input()
        clase = self.model.read_a_clase(hora)
        if type(clase) == tuple:
            self.view.show_clase_header(' Datos de la clase: '+hora+' ')
            self.view.show_a_clase(clase)
            self.view.show_clase_midder()
            self.view.show_clase_footer()
        else:
            if clase == None:
                self.view.error('LA CLASE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LLER LA CLASE. REVISA')
        return
    
    def read_all_clases(self):
        clases = self.model.read_all_clases()
        if type(clases) == list:
            self.view.show_clase_header(' Todas las clases ')
            for clase in clases:
                self.view.show_a_clase(clase)
                self.view.show_clase_midder()
                self.view.show_clase_footer()
        else:
            self.view.error('PROBLEMA AL LEER LAS CLASES. REVISA')
        return

    def read_clase_coach(self):
        self.view.ask('Nombre Coach: ')
        nombre = input()
        self.view.ask('Apellido Coach: ')
        apellido = input()
        clases = self.model.read_clase_coach(nombre, apellido)
        if type(clases) == list:
            self.view.show_clase_header(' CLases del coach: '+nombre+' ')
            for clase in clases:
                self.view.show_clase_header(' CLase de las: '+str(clase[0])+' ')
                self.view.show_a_clase(clase)
                self.view.show_clase_midder()
            self.view.show_clase_footer()
        else:
            if clase == None:
                self.view.error('LA CLASE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA CLASE. REVISA')
        return
    
    def update_clase(self):
        self.view.ask('Hora de clase a  modificar: ')
        hora = input()
        clase = self.model.read_a_clase(hora)
        if type(clase) == tuple:
            self.view.show_clase_header(' Datos de la clase: '+hora+' ')
            self.view.show_a_clase(clase)
            self.view.show_clase_midder()
            self.view.show_clase_footer()
        else:
            if clase == None:
                self.view.error('LA CLASE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER LA CLASE. REVISA')
            return
        self.view.msg('Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_clase()
        fields, vals = self.update_lists(['hora_inicio', 'hora_termina', 'fecha_wod','id_coach'], whole_vals)
        vals.append(hora)
        vals = tuple(vals)
        out = self.model.update_clase(fields, vals)
        if out == True:
            self.view.ok(hora, 'Clase actualizado')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA CLASE. REVISA')
        return

    def delete_clase(self):
        self.view.ask('Hora de la clase: ')
        hora = input()
        count = self.model.delete_clase(hora)
        if count != 0:
            self.view.ok(hora, 'se borró')
        else:
            if count == 0:
                self.view.error('LA CLASE NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR LA CLASE. REVISA')
        return
Пример #24
0
 def __init__(self):
     self.model = Model()
     self.view = View()
     self.viewAdmin = ViewAdmin()
     self.viewUser = ViewUser()
Пример #25
0
class Controller:
    """
    ********************************
    * A controller for a cinema DB *
    ********************************
    """
    def __init__(self):
        self.model = Model()
        self.view = View()
        self.viewAdmin = ViewAdmin()
        self.viewUser = ViewUser()
    
    def start(self):
        self.view.start()
        self.main_menu()
    
    """
    ***********************
    * General controllers *
    ***********************
    """

    def main_menu(self):
        o = '0'
        while o != '3':
            self.view.main_menu()
            self.view.option('3')
            o = input()
            if o == '1':
                self.login()
            elif o == '2':
                self.create_usuario()
            elif o == '3':
                self.view.end()
            else:
                self.view.not_valid_option()
        return
    
    def update_lists(self,fs,vs):
        fields = []
        vals = []
        for f,v in zip(fs,vs):
            if (v != ""):
                fields.append(f+" = %s")
                vals.append(v)
        return fields,vals

    """
    *************************
    * controllers for login *
    *************************
    """

    def ask_loginUsuario(self):
        self.view.ask('Id Usuario: ')
        id_usuario = input()
        self.view.ask('Clave: ')
        clave = input()
        return [id_usuario,clave]
    
    def ask_usuario(self):
        self.view.ask('Id Usuario: ')
        id_usuario = input()
        self.view.ask('Clave: ')
        clave = input()
        tipo = "usuario"
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Apellido Paterno: ')
        app = input()
        self.view.ask('Apellido Materno: ')
        apm = input()
        self.view.ask('Telefono: ')
        telefono = input()
        return [id_usuario,clave,tipo,nombre,app,apm,telefono]

    def login(self):
        id_contacto,clave = self.ask_loginUsuario()
        flag,out = self.model.login_a_usuario(id_contacto,clave)
        if flag == True and out:
            self.view.ok("Usuario" , "ah Logeado")
            #print(out)
            if out[2] == 'usuario':
                #print("hola usuario")
                self.main_menu_user(out)
            elif out[2] == 'admin':
                #print("hola admin")
                self.main_menu_admin(out)
        else:
            self.view.error("Los datos no coinciden :(")
        return

    """
    *************************
    * controllers for funciones *
    *************************
    """
    def askfuncion(self):
        self.view.ask('Pelicula: ')
        pelicula = input()
        self.view.ask('Sala: ')
        sala = input()
        self.view.ask('Inicio: ')
        inicio = input()
        return [pelicula,sala,inicio]
    
    
    """
    *************************
    * controllers for peliculas *
    *************************
    """
    def askpelicula(self):
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Clasificación: ')
        clas = input()
        self.view.ask('Género: ')
        genero = input()
        self.view.ask('Sinópsis: ')
        sinopsis = input()
        self.view.ask('Director: ')
        director = input()
        self.view.ask('Duración: ')
        duracion = input()
        return [nombre,clas,genero,sinopsis,director,duracion]

    """
    *************************
    * controllers for salas *
    *************************
    """
    def asksala(self):
        self.view.ask('Id Sala: ')
        id_sala= input()
        self.view.ask('Asientos: ')
        asientos= input()
        return [id_sala,asientos]

    """
    ****************************
    * controllers for asientos *
    ****************************
    """
    def askasiento(self):
        self.view.ask('Sala: ')
        sala= input()
        self.view.ask('Nombre: ')
        nombre= input()
        return [sala,nombre]

    """
    ****************************
    * controllers for usuarios *
    ****************************
    """

    def askusuario(self):
        self.view.ask('Id Usuario: ')
        id_usuario = input()
        self.view.ask('Clave: ')
        clave = input()
        self.view.ask('tipo (admin o usuario): ')
        tipo = input()
        self.view.ask('Nombre: ')
        nombre = input()
        self.view.ask('Apellido Paterno: ')
        app = input()
        self.view.ask('Apellido Materno: ')
        apm = input()
        self.view.ask('Telefono: ')
        telefono = input()
        return [id_usuario,clave,tipo,nombre,app,apm,telefono]

    """
    *****************************
    * General Users controllers *
    ****************************
    """

    def main_menu_user(self,usuario):
        o = '0'
        while o != '6':
            self.viewUser.main_menu(usuario)
            self.view.option('6')
            o = input()
            if o == '1':
                self.read_all_funciones_user()
            elif o == '2':
                self.create_compra_user(usuario[0])
            elif o == '3':
                self.read_all_compras_user(usuario[0])
            elif o == '4':
                self.read_usuario_user(usuario[0])
            elif o == '5':
                self.read_all_boletos_user(usuario[0])
            elif o == '6':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    """
    ******************************
    * General Admins controllers *
    ******************************
    """

    def main_menu_admin(self,usuario):
        o = '0'
        while o != '8':
            self.viewAdmin.main_menu(usuario)
            self.view.option('8')
            o = input()
            if o == '1':
                self.funciones_menu_admin()
            elif o == '2':
                self.peliculas_menu_admin()
            elif o == '3':
                self.asientos_menu_admin()
            elif o == '4':
                self.salas_menu_admin()
            elif o == '5':
                self.usuarios_menu_admin()
            elif o == '6':
                self.boletos_menu_admin()
            elif o == '7':
                self.compras_menu_admin()
            elif o == '8':
                self.view.end()
            else:
                self.view.not_valid_option()
        return
    
    def funciones_menu_admin(self):
        o = '0'
        while o != '7':
            self.viewAdmin.funciones_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.create_funcion_admin()
            elif o == '2':
                self.read_funcion_admin()
            elif o == '3':
                self.read_all_funciones_admin()
            elif o == '4':
                self.update_funcion_admin()
            elif o == '5':
                self.delete_funcion_admin()
            elif o == '6':
                self.read_all_funciones_user()
            elif o == '7':
                self.view.back()
            else:
                self.view.not_valid_option()
        return
    
    def peliculas_menu_admin(self):
        o = '0'
        while o != '6':
            self.viewAdmin.peliculas_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_pelicula_admin()
            elif o == '2':
                self.read_pelicula_admin()
            elif o == '3':
                self.read_all_peliculas_admin()
            elif o == '4':
                self.update_pelicula_admin()
            elif o == '5':
                self.delete_pelicula_admin()
            elif o == '6':
                self.view.back()
            else:
                self.view.not_valid_option()
        return
    
    def salas_menu_admin(self):
        o = '0'
        while o != '6':
            self.viewAdmin.salas_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_sala_admin()
            elif o == '2':
                self.read_sala_admin()
            elif o == '3':
                self.read_all_salas_admin()
            elif o == '4':
                self.update_sala_admin()
            elif o == '5':
                self.delete_sala_admin()
            elif o == '6':
                self.view.back()
            else:
                self.view.not_valid_option()
        return

    def asientos_menu_admin(self):
        o = '0'
        while o != '6':
            self.viewAdmin.asientos_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_asiento_admin()
            elif o == '2':
                self.read_asiento_admin()
            elif o == '3':
                self.read_all_asientos_admin()
            elif o == '4':
                self.update_asiento_admin()
            elif o == '5':
                self.delete_asiento_admin()
            elif o == '6':
                self.view.back()
            else:
                self.view.not_valid_option()
        return

    def usuarios_menu_admin(self):
        o = '0'
        while o != '6':
            self.viewAdmin.usuario_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_usuario_admin()
            elif o == '2':
                self.read_usuario_admin()
            elif o == '3':
                self.read_all_usuarios_admin()
            elif o == '4':
                self.update_usuario_admin()
            elif o == '5':
                self.delete_usuario_admin()
            elif o == '6':
                self.view.back()
            else:
                self.view.not_valid_option()
        return

    def boletos_menu_admin(self):
        o = '0'
        while o != '6':
            self.viewAdmin.boleto_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                pass
            elif o == '2':
                self.read_boleto_admin()
            elif o == '3':
                self.read_all_boletos_admin()
            elif o == '4':
                pass
            elif o == '5':
                pass
            elif o == '6':
                self.view.back()
            else:
                self.view.not_valid_option()
        return
    
    def compras_menu_admin(self):
        o = '0'
        while o != '6':
            self.viewAdmin.compra_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                pass
            elif o == '2':
                self.read_compra_admin()
            elif o == '3':
                self.read_all_compras_admin()
            elif o == '4':
                pass
            elif o == '5':
                pass
            elif o == '6':
                self.view.back()
            else:
                self.view.not_valid_option()
        return

    """
    *************************************
    * controllers for usuarios USER ONLY*
    *************************************
    """

    def create_usuario(self):
        id_contacto,clave,tipo,nombre,app,apm,telefono = self.ask_usuario()
        out = self.model.create_usuario(id_contacto,clave,tipo,nombre,app,apm,telefono)
        if out == True:
            self.view.ok("Usuario" , "Creado")
        else:
            if out.errno == 1062:
                self.view.error("El Id Usuario ya esta registrado")
                
            else:
                self.view.error("No se pudo agregar el Usuario Disculpe las molestias :(")
        return

    """
    **************************
    * controllers for admins *
    **************************
    """

    """
    *****************************
    * Funciones controllers *
    ****************************
    """
    def create_funcion_admin(self):
        pelicula,sala,inicio = self.askfuncion()
        out = self.model.create_funcion(pelicula,sala,inicio)
        if out == True:
            self.view.ok("Funcion" , "Creada")
            out,lugares = self.model.no_asientos_sala(sala)
            funcion = self.model.get_last_funcion()
            ids_asientos = self.model.get_idasientos_from_sala(sala)
            #print(str(lugares[0]))
            #print(ids_asientos)
            #print(ids_asientos[0][0],ids_asientos[1][0])
            for lugar in range(int(lugares[0])):
                self.create_boleto_admin(funcion[0],ids_asientos[lugar][0],45)
        else:                
            self.view.error("No se pudo agregar la Funcion :(")
        return

    def read_funcion_admin(self):    
        self.view.ask("Id Funcion: ")
        id_funcion = input()
        out = self.model.read_a_funcion(id_funcion)
        if type(out) == tuple:
            self.viewAdmin.show_funcion_header(" Datos de la Funcion " + id_funcion+" ")
            self.viewAdmin.show_a_funcion(out)
            self.viewAdmin.show_funcion_midder()
            self.viewAdmin.show_funcion_footer()
        else:
            if out == None:
                self.view.error("El Id de la Funcion no existe")
            else:
                self.view.error("Problema al leer el Id de la Funcion, Revisar datos")
        return
    
    def read_all_funciones_admin(self):    
        out = self.model.read_all_funciones()
        if type(out) == list:
            self.viewAdmin.show_funcion_header(" Todas las Funciones ")
            for funcion in out:
                self.viewAdmin.show_a_funcion(funcion)
            self.viewAdmin.show_funcion_midder()
            self.viewAdmin.show_funcion_footer()
        else:
            self.view.error("Problema al leer las Funciones, Revisar datos")
        return
    
    def update_funcion_admin(self):
        self.view.ask("Funcion a modificar: ")
        id_funcion = input()
        funcion = self.model.read_a_funcion(id_funcion)
        if type(funcion) == tuple:
            self.viewAdmin.show_funcion_header(" Datos de la Funcion "+id_funcion+" ")
            self.viewAdmin.show_a_funcion(funcion)
            self.viewAdmin.show_funcion_midder()
            self.viewAdmin.show_funcion_footer()
        else:
            if funcion == None:
                self.view.error("La Funcion no exite en la bd")
            else:
                self.view.error("Problema al leer la Funcion, Revisa")
            return
        self.view.msg("Ingresa los valores a modificar (vacio para dejarlo igual):")
        whole_vals = self.askfuncion()
        fields, vals = self.update_lists(["f_pelicula","f_sala","f_inicio"],whole_vals)
        vals.append(id_funcion)
        vals = tuple(vals)
        out = self.model.update_funcion(fields,vals)
        if out == True:
            self.view.ok(id_funcion, "Actualizada...")
        else:
            self.view.error("No se pudo actualizar la Funcion, Revisa")
        return

    def delete_funcion_admin(self):
        self.view.ask("Funcion a borrar: ")
        id_funcion = input()
        count = self.model.delete_funcion(id_funcion)
        if count != 0:
            self.view.ok(id_funcion,"Borro")
        else:
            if count == 0:
                self.view.error("La Funcion no exite")
            else:
                self.view.error("Problema al borrar la Funcion. Revisa")
        return


        

    """
    *************************
    * Peliculas controllers *
    *************************
    """
    def create_pelicula_admin(self):
        nombre,clas,genero,sinopsis,director,duracion = self.askpelicula()
        out = self.model.create_pelicula(nombre,clas,genero,sinopsis,director,duracion)
        if out == True:
            self.view.ok("Pelicula" , "Creada")
        else:                
            self.view.error("No se pudo agregar la Pelicula :(")
        return

    def read_pelicula_admin(self):    
        self.view.ask("Id Pelicula: ")
        id_pelicula = input()
        out = self.model.read_a_pelicula(id_pelicula)
        if type(out) == tuple:
            self.viewAdmin.show_pelicula_header(" Datos de la pelicula " + id_pelicula+" ")
            self.viewAdmin.show_a_pelicula(out)
            self.viewAdmin.show_pelicula_midder()
            self.viewAdmin.show_pelicula_footer()
        else:
            if out == None:
                self.view.error("El Id de la Pelicula no existe")
            else:
                self.view.error("Problema al leer el Id de la Pelicula, Revisar datos")
        return

    def read_all_peliculas_admin(self):    
        out = self.model.read_all_peliculas()
        if type(out) == list:
            self.viewAdmin.show_pelicula_header(" Todas las Peliculas ")
            for pelicula in out:
                self.viewAdmin.show_a_pelicula(pelicula)
            self.viewAdmin.show_pelicula_midder()
            self.viewAdmin.show_pelicula_footer()
        else:
            self.view.error("Problema al leer las Peliculas, Revisar datos")
        return
    
    def update_pelicula_admin(self):
        self.view.ask("Pelicula a modificar: ")
        id_pelicula = input()
        pelicula = self.model.read_a_pelicula(id_pelicula)
        if type(pelicula) == tuple:
            self.viewAdmin.show_pelicula_header(" Datos de la Pelicula "+id_pelicula+" ")
            self.viewAdmin.show_a_pelicula(pelicula)
            self.viewAdmin.show_pelicula_midder()
            self.viewAdmin.show_pelicula_footer()
        else:
            if pelicula == None:
                self.view.error("La Pelicula no exite en la bd")
            else:
                self.view.error("Problema al leer la Pelicula, Revisa")
            return
        self.view.msg("Ingresa los valores a modificar (vacio para dejarlo igual):")
        whole_vals = self.askpelicula()
        fields, vals = self.update_lists(["p_nombre","p_clasificacion","p_genero","p_sinopsis","p_director","p_duracion"],whole_vals)
        vals.append(id_pelicula)
        vals = tuple(vals)
        out = self.model.update_pelicula(fields,vals)
        if out == True:
            self.view.ok(id_pelicula, "Actualizada...")
        else:
            self.view.error("No se pudo actualizar la Pelicula, Revisa")
        return
    
    def delete_pelicula_admin(self):
        self.view.ask("Pelicula a borrar: ")
        id_pelicula = input()
        count = self.model.delete_pelicula(id_pelicula)
        if count != 0:
            self.view.ok(id_pelicula,"Borro")
        else:
            if count == 0:
                self.view.error("La Pelicula no exite")
            else:
                self.view.error("Problema al borrar la Pelicula. Revisa")
        return

    """
    *********************
    * Salas controllers *
    *********************
    """

    def create_sala_admin(self):
        id_sala,asientos= self.asksala()
        out = self.model.create_sala(id_sala,asientos)
        if out == True:
            self.view.ok("Sala" , "Creada")
            for asiento in range(int(asientos)):
                self.view.ask("Nombre/Lugar del asiento "+(str(asiento+1)+": "))
                nombre = input()
                out = self.model.create_asiento(id_sala,nombre)
                if out == True:
                    self.view.ok("Asiento" , "Creado")
                else:                
                    self.view.error("No se pudo agregar el Asiento :(")
        else:                
            self.view.error("No se pudo agregar la Sala :(")
        return
    
    def read_sala_admin(self):    
        self.view.ask("Id Sala: ")
        id_sala = input()
        out = self.model.read_a_sala(id_sala)
        if type(out) == tuple:
            self.viewAdmin.show_sala_header(" Datos de la Sala " + id_sala+" ")
            self.viewAdmin.show_a_sala(out)
            self.viewAdmin.show_sala_midder()
            self.viewAdmin.show_sala_footer()
        else:
            if out == None:
                self.view.error("El Id de la Sala no existe")
            else:
                self.view.error("Problema al leer el Id de la Sala, Revisar datos")
        return
    
    def read_all_salas_admin(self):    
        out = self.model.read_all_salas()
        if type(out) == list:
            self.viewAdmin.show_sala_header(" Todas las Sala ")
            for sala in out:
                self.viewAdmin.show_a_sala(sala)
            self.viewAdmin.show_sala_midder()
            self.viewAdmin.show_sala_footer()
        else:
            self.view.error("Problema al leer las Sala, Revisar datos")
        return

    def update_sala_admin(self):
        self.view.ask("Sala a modificar: ")
        id_sala = input()
        sala = self.model.read_a_sala(id_sala)
        if type(sala) == tuple:
            self.viewAdmin.show_sala_header(" Datos de la Sala "+id_sala+" ")
            self.viewAdmin.show_a_sala(sala)
            self.viewAdmin.show_sala_midder()
            self.viewAdmin.show_sala_footer()
        else:
            if sala == None:
                self.view.error("La Sala no exite en la bd")
            else:
                self.view.error("Problema al leer la Sala, Revisa")
            return
        self.view.msg("Ingresa los valores a modificar (vacio para dejarlo igual):")
        whole_vals = self.asksala()
        fields, vals = self.update_lists(["id_sala","s_asientos"],whole_vals)
        vals.append(id_sala)
        vals = tuple(vals)
        out = self.model.update_sala(fields,vals)
        if out == True:
            self.view.ok(id_sala, "Actualizada...")
        else:
            self.view.error("No se pudo actualizar la Sala, Revisa")
        return

    def delete_sala_admin(self):
        self.view.ask("Sala a borrar: ")
        id_sala = input()
        count = self.model.delete_sala(id_sala)
        if count != 0:
            self.view.ok(id_sala,"Borro")
        else:
            if count == 0:
                self.view.error("La Sala no exite")
            else:
                self.view.error("Problema al borrar la Sala. Revisa")
        return

    """
    ************************
    * asientos controllers *
    ************************
    """
    def create_asiento_admin(self):
        sala,nombre = self.askasiento()
        out = self.model.create_asiento(sala,nombre)
        if out == True:
            self.view.ok("Asiento" , "Creada")
        else:                
            self.view.error("No se pudo agregar el Asiento :(")
        return
    
    def read_asiento_admin(self):    
        self.view.ask("Id Asiento: ")
        id_asiento = input()
        out = self.model.read_a_asiento(id_asiento)
        if type(out) == tuple:
            self.viewAdmin.show_asiento_header(" Datos del Asiento " + id_asiento+" ")
            self.viewAdmin.show_a_asiento(out)
            self.viewAdmin.show_asiento_midder()
            self.viewAdmin.show_asiento_footer()
        else:
            if out == None:
                self.view.error("El Id del Asiento no existe")
            else:
                self.view.error("Problema al leer el Id del Asiento, Revisar datos")
        return
    
    def read_all_asientos_admin(self):    
        out = self.model.read_all_asientos()
        if type(out) == list:
            self.viewAdmin.show_asiento_header(" Todas los Asientos ")
            for sala in out:
                self.viewAdmin.show_a_asiento(sala)
            self.viewAdmin.show_asiento_midder()
            self.viewAdmin.show_asiento_footer()
        else:
            self.view.error("Problema al leer los Asiento, Revisar datos")
        return

    def update_asiento_admin(self):
        self.view.ask("Asiento a modificar: ")
        id_asiento = input()
        asiento = self.model.read_a_asiento(id_asiento)
        if type(asiento) == tuple:
            self.viewAdmin.show_asiento_header(" Datos del Asiento "+id_asiento+" ")
            self.viewAdmin.show_a_asiento(asiento)
            self.viewAdmin.show_asiento_midder()
            self.viewAdmin.show_asiento_footer()
        else:
            if asiento == None:
                self.view.error("El Asiento no exite en la bd")
            else:
                self.view.error("Problema al leer el Id del Asiento, Revisa")
            return
        self.view.msg("Ingresa los valores a modificar (vacio para dejarlo igual):")
        whole_vals = self.askasiento()
        fields, vals = self.update_lists(["a_sala","a_nombre"],whole_vals)
        vals.append(id_asiento)
        vals = tuple(vals)
        out = self.model.update_asiento(fields,vals)
        if out == True:
            self.view.ok(id_asiento, "Actualizada...")
        else:
            self.view.error("No se pudo actualizar el Asiento, Revisa")
        return

    def delete_asiento_admin(self):
        self.view.ask("Asiento a borrar: ")
        id_asiento = input()
        count = self.model.delete_asiento(id_asiento)
        if count != 0:
            self.view.ok(id_asiento,"Borro")
        else:
            if count == 0:
                self.view.error("El Asiento no exite")
            else:
                self.view.error("Problema al borrar el Asiento. Revisa")
        return

    """
    ************************
    * Usuarios controllers *
    ************************
    """
    def create_usuario_admin(self):
        id_contacto,clave,tipo,nombre,app,apm,telefono = self.askusuario()
        out = self.model.create_usuario(id_contacto,clave,tipo,nombre,app,apm,telefono)
        if out == True:
            self.view.ok("Usuario" , "Creado")
        else:
            if out.errno == 1062:
                self.view.error("El Id Usuario ya esta registrado")
                
            else:
                self.view.error("No se pudo agregar el Usuario Disculpe las molestias :(")
        return

    def read_usuario_admin(self):    
        self.view.ask("Id Usuario: ")
        id_usuario = input()
        out = self.model.read_a_usuario(id_usuario)
        if type(out) == tuple:
            self.viewAdmin.show_usuario_header(" Datos del usuario " + id_usuario+" ")
            self.viewAdmin.show_a_usuario(out)
            self.viewAdmin.show_usuario_midder()
            self.viewAdmin.show_usuario_footer()
        else:
            if out == None:
                self.view.error("El Id del usuario no existe")
            else:
                self.view.error("Problema al leer el Id del usuario, Revisar datos")
        return

    def read_all_usuarios_admin(self):    
        out = self.model.read_all_usuarios()
        if type(out) == list:
            self.viewAdmin.show_usuario_header(" Todas los usuarios ")
            for usuario in out:
                self.viewAdmin.show_a_usuario(usuario)
            self.viewAdmin.show_usuario_midder()
            self.viewAdmin.show_usuario_footer()
        else:
            self.view.error("Problema al leer los Usuario, Revisar datos")
        return
    
    def update_usuario_admin(self):
        self.view.ask("Usuario a modificar: ")
        id_usuario = input()
        usuario = self.model.read_a_usuario(id_usuario)
        if type(usuario) == tuple:
            self.viewAdmin.show_usuario_header(" Datos de la usuario "+id_usuario+" ")
            self.viewAdmin.show_a_usuario(usuario)
            self.viewAdmin.show_usuario_midder()
            self.viewAdmin.show_usuario_footer()
        else:
            if usuario == None:
                self.view.error("La usuario no exite en la bd")
            else:
                self.view.error("Problema al leer la usuario, Revisa")
            return
        self.view.msg("Ingresa los valores a modificar (vacio para dejarlo igual):")
        whole_vals = self.askusuario()
        fields, vals = self.update_lists(["id_usuario","u_clave","u_tipo","u_nombre","u_app","u_apm","u_telefono"],whole_vals)
        vals.append(id_usuario)
        vals = tuple(vals)
        out = self.model.update_usuario(fields,vals)
        if out == True:
            self.view.ok(id_usuario, "Actualizado...")
        else:
            self.view.error("No se pudo actualizar el usuario, Revisa")
        return
    
    def delete_usuario_admin(self):
        self.view.ask("usuario a borrar: ")
        id_usuario = input()
        count = self.model.delete_usuario(id_usuario)
        if count != 0:
            self.view.ok(id_usuario,"Borro")
        else:
            if count == 0:
                self.view.error("La usuario no exite")
            else:
                self.view.error("Problema al borrar el usuario. Revisa")
        return
    
    """
    ************************
    * boletos controllers *
    ************************
    """
    def create_boleto_admin(self,idFuncion,idAsiento,precio):
        #print(idFuncion,idAsiento,1,precio)
        out = self.model.create_boleto(idFuncion,idAsiento,1,precio)
        if out == True:
            self.view.ok("boleto" , "Creado")
        else:
            if out.errno == 1062:
                self.view.error("El Id boleto ya esta registrado")
                
            else:
                self.view.error("No se pudo agregar el boleto Disculpe las molestias :(")
        return

    def read_boleto_admin(self):    
        self.view.ask("Id boleto: ")
        id_boleto = input()
        out = self.model.read_a_boleto(id_boleto)
        if type(out) == tuple:
            self.viewAdmin.show_boleto_header(" Datos del boleto " + id_boleto+" ")
            self.viewAdmin.show_a_boleto(out)
            self.viewAdmin.show_boleto_midder()
            self.viewAdmin.show_boleto_footer()
        else:
            if out == None:
                self.view.error("El Id del boleto no existe")
            else:
                self.view.error("Problema al leer el Id del boleto, Revisar datos")
        return

    def read_all_boletos_admin(self):    
        out = self.model.read_all_boletos()
        if type(out) == list:
            self.viewAdmin.show_boleto_header(" Todas los boletos ")
            for boleto in out:
                self.viewAdmin.show_a_boleto(boleto)
            self.viewAdmin.show_boleto_midder()
            self.viewAdmin.show_boleto_footer()
        else:
            self.view.error("Problema al leer los boleto, Revisar datos")
        return

    def delete_boleto_admin(self):
        self.view.ask("boleto a borrar: ")
        id_boleto = input()
        count = self.model.delete_boleto(id_boleto)
        if count != 0:
            self.view.ok(id_boleto,"Borro")
        else:
            if count == 0:
                self.view.error("La boleto no exite")
            else:
                self.view.error("Problema al borrar el boleto. Revisa")
        return

    """
    ************************
    * compras controllers *
    ************************
    """
    '''
    def create_compra_admin(self,idFuncion,idAsiento,precio):
        #print(idFuncion,idAsiento,1,precio)
        out = self.model.create_compra(idFuncion,idAsiento,1,precio)
        if out == True:
            self.view.ok("compra" , "Creado")
        else:
            if out.errno == 1062:
                self.view.error("El Id compra ya esta registrado")
                
            else:
                self.view.error("No se pudo agregar el compra Disculpe las molestias :(")
        return
    '''

    def read_compra_admin(self):    
        self.view.ask("Id compra: ")
        id_compra = input()
        out = self.model.read_a_compra(id_compra)
        if type(out) == tuple:
            self.viewAdmin.show_compra_header(" Datos del compra " + id_compra+" ")
            self.viewAdmin.show_a_compra(out)
            self.viewAdmin.show_compra_midder()
            self.viewAdmin.show_compra_footer()
        else:
            if out == None:
                self.view.error("El Id del compra no existe")
            else:
                self.view.error("Problema al leer el Id del compra, Revisar datos")
        return

    def read_all_compras_admin(self):    
        out = self.model.read_all_compras()
        if type(out) == list:
            self.viewAdmin.show_compra_header(" Todas los compras ")
            for compra in out:
                self.viewAdmin.show_a_compra(compra)
            self.viewAdmin.show_compra_midder()
            self.viewAdmin.show_compra_footer()
        else:
            self.view.error("Problema al leer los compra, Revisar datos")
        return

    '''
    def delete_compra_admin(self):
        self.view.ask("compra a borrar: ")
        id_compra = input()
        count = self.model.delete_compra(id_compra)
        if count != 0:
            self.view.ok(id_compra,"Borro")
        else:
            if count == 0:
                self.view.error("La compra no exite")
            else:
                self.view.error("Problema al borrar el compra. Revisa")
        return
    '''

    """
    *************************
    * controllers for users *
    *************************
    """
    """
    ************************
    * compras controllers *
    ************************
    """
    
    def create_compra_user(self,id_usuario):
        flag = 1
        cartelera = self.model.read_all_funciones_cartelera()
        self.viewAdmin.show_funcion_header(" Funciones de Cartelera ")
        for funcion in cartelera:
            self.viewAdmin.show_a_funcion(funcion)
        self.viewAdmin.show_funcion_midder()
        self.viewAdmin.show_funcion_footer()
        self.view.ask("Introduce el Id de la funcion: ")
        id_funcion = input()
        out = self.model.read_a_funcion(id_funcion)
        if type(out) == tuple:
            r = '1'
            while (r == '1'):
                boletos = self.model.read_all_boletos_funcion(int(id_funcion))
                self.viewAdmin.show_boleto_header(" Todas los boletos para la funcion seleccionada ")
                for boleto in boletos:
                    self.viewAdmin.show_a_boleto(boleto)
                self.viewAdmin.show_boleto_midder()
                self.viewAdmin.show_boleto_footer()
                self.view.ask("Introduce el Id del boleto para comprar: ")
                id_boleto = input()
                boleto = self.model.read_a_boleto(id_boleto)
                if type(boleto) == tuple:
                    hoy = self.model.fechahora_hoy()
                    #print(id_usuario)
                    #print(hoy[0])
                    if flag == 1:
                        self.model.create_compra(id_usuario,0,hoy[0],0)
                        flag = 0
                    lastcompra = self.model.get_last_compra()
                    #print(lastcompra[0])
                    #print(boleto[0])
                    self.create_compraDetalle_user(lastcompra[0],boleto[0])
                    self.update_boleto(boleto[0])
                    self.update_compra_user(lastcompra[0],boleto[4])
                    r2 = ''
                    while (r2 != '0' and r2 != '1'):
                        self.view.ask("¿Quieres comprar otro boleto para la misma función?: (1 para: SÍ, 0 para: No) ")
                        r2 = input()
                    r = r2
                else:
                    if boleto == None:
                        self.view.error("El Id del boleto no existe")
                    else:
                        self.view.error("Problema al leer el Id del boleto, Revisar datos")
        else:
            if out == None:
                self.view.error("El Id de la Funcion no existe")
            else:
                self.view.error("Problema al leer el Id de la Funcion, Revisar datos")       
        return
    
    def read_all_compras_user(self,id_usuario):    
        out = self.model.read_all_compras_where_usuario(id_usuario)
        if type(out) == list:
            self.viewUser.show_compra_header(" Todas mis compras ")
            for compra in out:
                self.viewUser.show_a_compra(compra)
            self.viewUser.show_compra_midder()
            self.viewUser.show_compra_footer()
        else:
            self.view.error("Problema al leer las compras, Revisar datos")
        return

    def update_compra_user(self,id_compra,total):
        compra = self.model.read_a_compra(id_compra)
        if type(compra) == tuple:
            pass
        else:
            if compra == None:
                self.view.error("La compra no exite en la bd")
            else:
                self.view.error("Problema al leer la compra, Revisa")
            return
        '''
        whole_vals = ['','',cantidad,'',total]
        fields, vals = self.update_lists(["id_compra","c_usuario","c_cantidad","c_fecha","c_total"],whole_vals)
        vals.append(id_compra)
        vals = tuple(vals)
        '''
        out = self.model.update_compra(id_compra,total)
        if out == True:
            self.view.ok(id_compra, "Actualizado...")
        else:
            self.view.error("No se pudo actualizar la compra, Revisa")
        return
    
    """
    *****************************
    * Funciones controllers *
    ****************************
    """
    
    def read_all_funciones_user(self):    
        out = self.model.read_all_funciones_cartelera()
        if type(out) == list:
            self.viewUser.show_funcion_header(" Funciones de Cartelera ")
            for funcion in out:
                self.viewUser.show_a_funcion(funcion)
            self.viewUser.show_funcion_midder()
            self.viewUser.show_funcion_footer()
        else:
            self.view.error("Problema al leer las Funciones, Revisar datos")
        return
    
    """
    *******************************
    * compras detalle controllers *
    *******************************
    """

    def create_compraDetalle_user(self,id_compra,id_boleto):
        out = self.model.create_compra_detalle(id_compra,id_boleto)
        if out == True:
            self.view.ok("Compra-Detalle" , "Creada")
        else:                
            self.view.error("No se pudo agregar Compra-Detalle Disculpe las molestias :(")
        return
    
    

    def read_compraDetalle_user(self,id_compra):    
        out = self.model.read_a_compra_detalle(id_compra)
        if type(out) == tuple:
            self.viewUser.show_compra_header(" Datos del compra-Detalle " + id_compra+" ")
            self.viewUser.show_a_compra(out)
            self.viewUser.show_compra_midder()
            self.viewUser.show_compra_footer()
        else:
            if out == None:
                self.view.error("El Id del compra no existe")
            else:
                self.view.error("Problema al leer el Id del compra, Revisar datos")
        return

    '''
    *******************
    *** Boleto Update *
    *******************
    '''
    def update_boleto(self,id_boleto):
        boleto = self.model.read_a_boleto(id_boleto)
        if type(boleto) == tuple:
            pass
        else:
            if boleto == None:
                self.view.error("El boleto no exite en la bd")
            else:
                self.view.error("Problema al leer la boleto, Revisa")
            return
        #print(fields,vals)
        out = self.model.update_boleto_comprado(id_boleto)
        if out == True:
            self.view.ok(id_boleto, "Actualizado...")
        else:
            self.view.error("No se pudo actualizar el boleto, Revisa")
        return

    def read_all_boletos_user(self,id_usuario):    
        out = self.model.read_all_boletos_where_usuario(id_usuario)
        if type(out) == list:
            self.viewUser.show_boleto_header(" Boletos Adquiridos ")
            for boleto in out:
                self.viewUser.show_a_boleto(boleto)
            self.viewUser.show_boleto_midder()
            self.viewUser.show_boleto_footer()
        else:
            self.view.error("Problema al leer los boletos, Revisar datos")
        return

    '''
    ************************
    *** read usuario datos *
    ************************
    '''
    def read_usuario_user(self,id_usuario):    
        out = self.model.read_a_usuario(id_usuario)
        if type(out) == tuple:
            self.viewAdmin.show_usuario_header(" Mis Datos " + id_usuario+" ")
            self.viewAdmin.show_a_usuario(out)
            self.viewAdmin.show_usuario_midder()
            self.viewAdmin.show_usuario_footer()
        else:
            if out == None:
                self.view.error("El Id del usuario no existe")
            else:
                self.view.error("Problema al leer el Id del usuario, Revisar datos")
        return
Пример #26
0
from view.view import View
from controller.controller import Controller
from model.algorithm import Algorithm
from model.state import State
from model.logger import Logger
from model.alert import Alert

if __name__ == "__main__":

    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()

    algorithm = Algorithm()
    state = State()
    logger = Logger()
    alert = Alert()

    controller = Controller()
    controller.connectToModels(algorithm=algorithm,
                               state=state,
                               logger=logger,
                               alert=alert)

    ui = View(MainWindow)
    ui.connectToController(controller)
    ui.subscribeToModels(algorithm, state, logger, alert)

    # controller = SearchSortUIController(ui)

    MainWindow.show()
    sys.exit(app.exec_())
Пример #27
0
def main():
    copyKiller = QtGui.QApplication(sys.argv)
    view = View()
    view.show()
    sys.exit(copyKiller.exec_())
Пример #28
0
 def on_render(self):
     for obj in self.game_objects:
         View.blit(View.window, obj.display(), obj.get_cords(), "top left")
     View.update()
Пример #29
0
class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()

    #Contacto methods
    def agregar_contacto(self, id_contacto, nombre, tel, correo, direccion):
        b, c = self.model.agregar_contacto(id_contacto, nombre, tel, correo,
                                           direccion)
        if b:
            self.view.agregar_contacto(c)
        else:
            self.view.contacto_ya_existe(c)

    def leer_contacto(self, id_contacto):
        e, c = self.model.leer_contacto(id_contacto)
        if e:
            self.view.mostrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_todos_los_contactos(self):
        c = self.model.leer_todos_los_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_contacto(self,
                            id_contacto='',
                            n_nombre='',
                            n_tel='',
                            n_correo='',
                            n_direccion=''):
        e = self.model.actualizar_contacto(id_contacto, n_nombre, n_tel,
                                           n_correo, n_direccion)
        if e:
            self.view.actualizar_contacto(id_contacto)
        else:
            self.view.contacto_no_existe(id_contacto)

    def borrar_contacto(self, id_contacto):
        e, c = self.model.borrar_contacto(id_contacto)
        if e:
            self.view.borrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_contactos_letra(self, letra):
        c = self.model.leer_contactos_letra(letra)
        self.view.mostrar_contactos(c)

    #General Methods

    def insertar_contactos(self):
        self.agregar_contacto(1, 'Juan Perez', '484-285-9323', '*****@*****.**',
                              'Obregon #102 Col. Independencia')
        self.agregar_contacto(2, 'Javier Fernandez', '484-397-1086',
                              '*****@*****.**', 'Hidalgo #162 Col. Margaritas')
        self.agregar_contacto(3, 'Daniel Salinas', '752-469-7236',
                              '*****@*****.**', 'Zaragoza #175 Col. Revolucion')

    def insertar_citas(self):
        self.agregar_cita(1, 1, 'DICIS', '25/02/2020', '11:00 hrs',
                          'Proyecto SSP')
        self.agregar_cita(2, 3, 'Plazoleta Salamanca', '13/03/2020',
                          '15:00 hrs', 'Jugar Pokemon GO')
        self.agregar_cita(3, 2, 'ENMSS', '29/02/2020', '10:00 hrs',
                          'Examen Inglés')

    def start(self):
        #Display welcome message
        self.view.start()
        #Insert data in model
        self.insertar_contactos()
        self.insertar_citas()
        #Show all the contacts in DB
        self.leer_todos_los_contactos()
        self.leer_contactos_letra('j')

    def menu(self):
        self.view.menu()
        o = input('Selecciona una opcion (1-9): ')
        if o == '1':
            id_contacto = input('ID de contacto: ')
            id_contacto = int(id_contacto)
            nombre = input('Nombre: ')
            tel = input('Telefono (xxx-xxx-xxxx): ')
            correo = input('Correo: ')
            direccion = input('Direccion: ')
            self.agregar_contacto(id_contacto, nombre, tel, correo, direccion)
        elif o == '2':
            id_contacto = input('ID de contacto que desea leer: ')
            id_contacto = int(id_contacto)
            self.leer_contacto(id_contacto)
        elif o == '3':
            id_contacto = input('ID de contacto a actualizar: ')
            id_contacto = int(id_contacto)
            n_nombre = input('Nuevo nombre de contacto: ')
            n_tel = input('Nuevo numero de contacto: ')
            n_correo = input('Nuevo correo de contacto: ')
            n_direccion = input('Nueva direccion de contacto: ')
            self.actualizar_contacto(id_contacto, n_nombre, n_tel, n_correo,
                                     n_direccion)
        elif o == '4':
            id_contacto = input('ID de contacto a borrar: ')
            id_contacto = int(id_contacto)
            self.borrar_contacto(id_contacto)
        elif o == '5':
            id_cita = input('ID de la cita: ')
            id_cita = int(id_cita)
            id_contacto = input('ID de contacto: ')
            id_contacto = int(id_contacto)
            lugar = input('Lugar: ')
            fecha = input('Fecha (dd/mm/aaaa): ')
            hora = input('Hora (hh:mm hrs): ')
            asunto = input('Asunto: ')
            self.agregar_cita(id_cita, id_contacto, lugar, fecha, hora, asunto)
        elif o == '6':
            id_cita = input('ID de cita que desea leer: ')
            id_cita = int(id_cita)
            # id_contacto = input('ID de contacto relacionado con la cita: ')
            # id_contacto = int(id_contacto)
            self.leer_cita(id_cita)
        elif o == '7':
            id_cita = input('ID de la cita que desea actualizar: ')
            id_cita = int(id_cita)
            n_id_contacto = ('ID de contacto: ')
            n_id_contacto = int(n_id_contacto)
            n_lugar = input('Lugar actualizado: ')
            n_hora = input('Hora actualizada: ')
            n_fecha = input('Fecha actualizada: ')
            n_asunto = input('Asunto actualizado: ')
            self.actualizar_cita(id_cita, n_id_contacto, n_lugar, n_fecha,
                                 n_hora, n_asunto)
        elif o == '8':
            id_cita = input('ID de la cita que desea borrar: ')
            id_cita = int(id_cita)
            self.borrar_cita(id_cita)
        elif o == '9':
            self.view.end()
        else:
            self.view.opcion_no_valida()

    #Cita methods

    def agregar_cita(self, id_cita, id_contacto, lugar, fecha, hora, asunto):
        b, c = self.model.agregar_cita(id_cita, id_contacto, lugar, fecha,
                                       hora, asunto)
        if b:
            self.view.mostrar_cita(c)
        else:
            self.view.cita_no_existe(id_cita)

    def leer_cita(self, id_cita):
        e, c = self.model.leer_cita(id_cita)
        if e:
            self.view.mostrar_cita(c)
        else:
            self.view.cita_no_existe(id_cita)

    def leer_todas_las_citas(self):
        c = self.model.leer_todas_las_citas()
        self.view.mostrar_citas(c)

    def actualizar_cita(self,
                        id_cita,
                        n_id_contacto='',
                        n_lugar='',
                        n_fecha='',
                        n_hora='',
                        n_asunto=''):
        e = self.model.actualizar_cita(id_cita, n_id_contacto, n_lugar,
                                       n_fecha, n_hora, n_asunto)
        if e:
            self.view.actualizar_cita(id_cita)
        else:
            self.view.cita_no_existe(id_cita)

    def borrar_cita(self, id_cita):
        e, c = self.model.borrar_cita(id_cita)
        if e:
            self.view.borrar_cita(c)
        else:
            self.view.cita_no_existe(id_cita)

    def leer_citas_fecha(self, fecha):
        c = self.model.leer_citas_fecha(fecha)
        self.view.mostrar_citas(c)
Пример #30
0
def main():
    app = QApplication([])
    model = DataBase()
    view = View()
    _ = Presenter(model, view)
    sys.exit(app.exec_())
Пример #31
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.i2c = None
        self.platform_name = None

    def _initialize(self, platform, urn):
        self.v = View(self.status, self.actions)
        self.platform_name = platform.get_board_name()
        #Setup I2C
        self.i2c = I2C(platform, urn)
        if self.platform_name != "sim":
            self.adc_init()

        #Initialize I2C Loop
        self.t = QTimer()
        self.t.timeout.connect(self.update)
        self.t.start(10)
        self.pos = 0

    def adc_init(self):
        self.i2c.reset_i2c_core()
        self.i2c.enable_i2c(True)
        self.i2c.enable_interrupt(True)
        self.i2c.get_status()
        self.i2c.set_speed_to_400khz()
        self.i2c.write_to_i2c(ADC_ADDR, [0x18])

    def update(self):
        #val = np.random.randint(100)
        #print "updating [%d, %d]" % (self.pos, val)
        max_val = self.v.get_time_window()
        max_val = (max_val * 1.0) / 1.5
        value = 0
        if self.platform_name != "sim":
            val = self.i2c.read_from_i2c(ADC_ADDR, [], 2)
            channel_id = (val[0] >> 4) & 0xFF
            value = (((val[0]) & 0x0F) << 8) + (val[1]) * 1.0
            value = value / 4096.0 * 100.0
        else:
            value = (np.sin(2 * np.pi / max_val * (self.pos % int(max_val))) * (max_val / 2)) + (max_val / 2)


        #print "val: %s" % str(val)
        #print "address: %d" % channel_id
        #print "value: %d" % value

        self.v.append_data("demo", self.pos, value)
        self.pos += 1

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose( "Starting Template Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v
Пример #32
0
def main():

    travel_db = SQLTravelDB()
    travel_view_model = ViewModel(travel_db)
    travel_view = View(travel_view_model)
    travel_view.show_menu()
Пример #33
0
class Controller:

    #Constructor

    def __init__(self):
        self.model = Model()
        self.view = View()

    #Contacto controllers--------------------------------------------------------------------------------------

    def agregar_contacto(self, id_contacto, nombre, tel, correo, direccion):
        v, c = self.model.agregar_contacto(id_contacto, nombre, tel, correo,
                                           direccion)
        if (v):
            self.view.agregar_contacto(c)
        else:
            self.view.contacto_ya_existe(c)

    def leer_contacto(self, id_contacto):
        e, c = self.model.leer_contacto(id_contacto)
        if (e):
            self.view.mostrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_todos_contactos(self):
        c = self.model.leer_todos_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_contacto(self,
                            id_contacto,
                            nombre='',
                            tel='',
                            correo='',
                            direccion=''):
        e = self.model.actualizar_contacto(id_contacto, nombre, tel, correo,
                                           direccion)
        if (e):
            self.view.actualizar_contacto(id_contacto)
        else:
            self.view.contacto_no_existe(id_contacto)

    def borrar_contacto(self, id_contacto):
        e, c = self.model.borrar_contacto(id_contacto)
        if (e):
            self.view.borrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_contacto_letra(self, letra):
        c = self.model.leer_contacto_letra(letra)
        self.view.mostrar_contactos(c)

    #Citas controllers --------------------------------------------------------------------------------------
    def agregar_cita(self, id_cita, id_contacto, lugar, fecha, hora, asunto):
        v, c = self.model.agregar_cita(id_cita, id_contacto, lugar, fecha,
                                       hora, asunto)
        if (v):
            self.view.agregar_cita(c)
        elif (v == False):
            self.view.cita_ya_existe(c)
        elif (v == -1):
            self.view.contacto_no_existe(c)

    def leer_cita(self, id_cita):
        e, c = self.model.leer_cita(id_cita)
        if (e):
            self.view.mostrar_cita(c)
        else:
            self.view.contacto_no_existe(id_cita)

    def leer_todas_citas(self):
        c = self.model.leer_todas_citas()
        self.view.mostrar_citas(c)

    def actualizar_cita(self,
                        id_cita,
                        id_contacto='',
                        lugar='',
                        fecha='',
                        hora='',
                        ausnto=''):
        e = self.model.actualizar_cita(id_cita, id_contacto, lugar, fecha,
                                       hora, ausnto)
        if (e):
            self.view.actualizar_cita(id_cita)
        else:
            self.view.cita_no_existe(id_cita)

    def borrar_cita(self, id_cita):
        e, c = self.model.borrar_cita(id_cita)
        if (e):
            self.view.borrar_cita(c)
        else:
            self.view.cita_no_existe(c)

    def leer_citas_fecha(self, fecha):
        c = self.model.leer_citas_fecha(fecha)
        self.view.mostrar_citas(c)

    #General controllers

    def insertar_contactos(self):
        self.agregar_contacto(1, 'Juan Perez', '462-123-0012',
                              '*****@*****.**', 'Buenavista 11587')
        self.agregar_contacto(2, 'Marco Rodriguez', '462-333-9992',
                              '*****@*****.**', 'Moctezuma 587')
        self.agregar_contacto(3, 'Juanito Robles', '462-223-1292',
                              '*****@*****.**', 'Rosas Secc. 3 25')
        self.agregar_contacto(4, 'Maria Ramirez', '462-832-9212',
                              '*****@*****.**', 'Ecualiptos 1532')
        self.agregar_contacto(5, 'Pablo Picapiedra', '462-093-1221',
                              '*****@*****.**', 'San pedro 10')
        self.agregar_contacto(6, 'Jose Azul', '462-323-0091',
                              '*****@*****.**', 'Apt. B S/N Encinos')

    def insertar_citas(self):
        self.agregar_cita(1, 1, 'Irapuato', '03/05/2020', '12:10', 'Comida')
        self.agregar_cita(2, 2, 'Salamanca', '04/05/2020', '12:00', 'Comida')
        self.agregar_cita(3, 4, 'Gto', '03/05/2020', '12:20', 'Comida')

    def menu(self):

        while (True):

            self.view.menu()
            o = input("Selecciona una opcion (1-13)\nR: ")
            if o == '1':
                dic = {
                    "id": "",
                    "Nombre": "",
                    "Telefono": "",
                    "Correo": "",
                    "Direccion": ""
                }
                for i in dic.keys():
                    print(i, "= ")
                    dic[i] = input("")
                values = []
                for i, j in dic.items():
                    values.append(j)
                self.agregar_contacto(int(values[0]), values[1], values[2],
                                      values[3], values[4])
            elif o == '2':
                dic = {
                    "id": "",
                    "Nombre": "",
                    "Telefono": "",
                    "Correo": "",
                    "Direccion": ""
                }
                for i in dic.keys():
                    print(i, "= ")
                    dic[i] = input("")
                values = []
                for i, j in dic.items():
                    values.append(j)
                self.actualizar_contacto(int(values[0]), values[1], values[2],
                                         values[3], values[4])
            elif o == '3':
                r = int(input("ID CONTACTO: "))
                self.leer_contacto(r)
            elif o == '4':
                r = int(input("ID CONTACTO: "))
                self.borrar_contacto(r)
            elif o == '5':
                dic = {
                    "id": "",
                    "idContacto": "",
                    "Lugar": "",
                    "Fecha": "",
                    "Hora": "",
                    "Asunto": ""
                }
                for i in dic.keys():
                    print(i, "= ")
                    dic[i] = input("")
                values = []
                for i, j in dic.items():
                    values.append(j)
                self.agregar_cita(int(values[0]), int(values[1]), values[2],
                                  values[3], values[4], values[5])
            elif o == '6':
                dic = {
                    "id": "",
                    "idContacto": "",
                    "Lugar": "",
                    "Fecha": "",
                    "Hora": "",
                    "Asunto": ""
                }
                for i in dic.keys():
                    print(i, "= ")
                    dic[i] = input("")
                values = []
                for i, j in dic.items():
                    values.append(j)
                self.actualizar_cita(int(values[0]), int(values[1]), values[2],
                                     values[3], values[4], values[5])
            elif o == '7':
                r = int(input("ID CITA: "))
                self.leer_cita(r)
            elif o == '8':
                r = int(input("ID CITA: "))
                self.borrar_cita(r)
            elif o == '9':
                r = input("Letra: ")
                self.leer_contacto_letra(r)
            elif o == '10':
                r = input("Fecha (dia/mes/año) :")
                self.leer_citas_fecha(r)
            elif o == '11':
                self.leer_todos_contactos()
            elif o == '12':
                self.leer_todas_citas()
            elif o == '13':
                self.view.end()
                break
            else:
                print("Opcion invalida.\n")

    def start(self):
        #Display a welcome message
        self.view.start()
        #Insert data in model
        self.insertar_contactos()
        self.insertar_citas()
        #Show all contacts in DB
        #self.leer_todos_contactos()
        #self.leer_contacto_letra('J')
        self.menu()
Пример #34
0
class Controller:
    #Constructor
    def __init__(self):
        self.model = Model()
        self.view = View()

    #Contracto controllers
    def agregar_contacto(self, id_contacto, nombre, tel, correo, dir):
        b, c = self.model.agregar_contacto(id_contacto, nombre, tel, correo, dir)
        if b:
            self.view.crear_contacto(c)
        else:
            self.view.contacto_ya_existe(c)

    def leer_contacto(self, id_contacto):
        e, c = self.model.leer_contacto(id_contacto)
        if e:
            self.view.mostrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_todos_contactos(self):
        c = self.model.leer_todos_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_contacto(self, id_contacto, n_nombre = '', n_tel = '', n_correo = '', n_dir = ''):
        e = self.model.actualizar_contacto(id_contacto, n_nombre, n_tel, n_correo, n_dir)
        
        if e:
            self.view.actualizar_contacto(id_contacto)
        else:
            self.view.contacto_no_existen(id_contacto)

    def borrar_contacto(self, id_contacto):
        e, c = self.model.borrar_contacto(id_contacto)
        
        if e:
            self.view.borrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)
            

    def leer_contactos_letra(self, letra):
        c = self.model.leer_contactos_letra(letra)
        self.view.mostrar_contactos(c)
    

    # Citas
    def agregar_cita(self, id_cita, id_contacto, lugar, fecha, hora, asunto):
        pass

    def leer_cita(self, id_cita):
        pass

    def actualizar_cita(self, id_cita, id_contacto, n_lugar, n_fecha, n_hora, n_asunto):
        pass

    def borrar_cita(self, id_cita):
        pass


    def insertar_contactos(self):
        self.agregar_contacto(1, 'Juan Perez', '464-123-1234', '*****@*****.**', 'Arteaga No. 5, San Miguel, Salamanca')
        self.agregar_contacto(2, 'Amanda Leon', '464-987-1234', '*****@*****.**', 'Villapaldo No.9 Paraiso, Celaya')
        self.agregar_contacto(3, 'Jessica Mendoza', '461-912-1234', '*****@*****.**', 'Girasol No.12 Manzanos, Guanajuato')

    def insertar_citas(self): 
        self.agregar_cita(1, 1, 'Starbucks', '18-03-2020', '19:00', 'Break del trabajo')
        self.agregar_cita(1, 3, 'Cinepolis', '02-03-2020', '14:00', 'Pelicula Mulan')
        self.agregar_cita(1, 2, 'DICIS', '16-04-2020', '12:00', 'Clase de programacion')
        self.agregar_cita(1, 3, 'Soriana', '30-04-2020', '15:00', 'Compras para la fiesta')
        self.agregar_cita(1, 2, 'McDonalds', '19-03-2020', '16:00', 'Comida con Amanda')

    #Cita controllers
    def start(self):
        #Display a welcome message
        self.view.start()
        #Insert data in model
        self.insertar_contactos()
        self.insertar_citas()
        # Show all contacts in DB
        self.leer_todos_contactos()
        self.leer_contactos_letra('a')

    def menu(self):
        #Display menu
        self.view.menu()
        o = input('Seleciona una opcion (1-9)')
        if o == '1':
            id_con = input('ID Contacto: ')
            nombre = input('Nombre: ')
            tel = input('Telefono: ')
            correo = input('Correo: ')
            dire = input('Direccion: ')
            self.agregar_contacto(id_con, nombre, tel, correo, dire)

        elif o == '2':
            id_con = input('ID Contacto: ')
            self.leer_contacto(id_con)
            
        elif o == '3':
            id_con = input('ID Contacto: ')
            nombre = input('Nombre: ')
            tel = input('Telefono: ')
            correo = input('Correo: ')
            dire = input('Direccion: ')
            self.actualizar_contacto(id_con, nombre, tel, correo, dire)
    
        elif o == '4':
            pass

        elif o == '5':
            pass
        elif o == '6':
            pass
        elif o == '7':
            pass
        elif o == '8':
            pass
        elif o == '9':
            self.view.end()
        
        else:
            self.view.opcion_no_valida()
Пример #35
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.actions = AudioActions()
        self.thread = QThread()
        self.thread.start()
        self.audio_worker = AudioWorker()
        self.audio_worker.moveToThread(self.thread)
        self.actions.play_audio.connect(self.play_audio)
        self.actions.pause_audio.connect(self.pause_audio)
        self.actions.stop_audio.connect(self.stop_audio)
        self.actions.play_1khz.connect(self.play_1khz)

        self.filename = ""

    def _initialize(self, platform, urn):
        self.v = View(self.actions, self.status)
        self.platform_name = platform.get_board_name()
        self.status.Verbose("Platform Name: %s" % self.platform_name)
        self.i2s = I2S(platform, urn, debug = False)
        QMetaObject.invokeMethod(self.audio_worker,
                                 "thread_init",
                                 Qt.QueuedConnection,
                                 Q_ARG(object, self),
                                 Q_ARG(object, self.status),
                                 Q_ARG(object, self.i2s),
                                 Q_ARG(object, self.actions))

        self.actions.set_audio_file.connect(self.set_audio_file)
        self.i2s.enable_i2s(True)
        self.i2s.enable_interrupt(True)
        self.set_audio_file("/home/cospan/sandbox/wave_file.wav")

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose("Starting Audio Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v

    #Audio Controller
    def set_audio_file(self, filename):
        self.filename = filename
        self.status.Important("set filename: %s" % self.filename)
        self.v.set_audio_filename(filename)
        QMetaObject.invokeMethod(self.audio_worker,
                                 "set_audio_filename",
                                 Qt.QueuedConnection,
                                 Q_ARG(object, self.filename))

    def play_audio(self):
        #self.audio_worker.play_audio()
        print "play audio!"
        QMetaObject.invokeMethod(self.audio_worker,
                                 "play_audio",
                                 Qt.QueuedConnection)

    def pause_audio(self):
        QMetaObject.invokeMethod(self.audio_worker,
                                 "pause_audio",
                                 Qt.QueuedConnection)

    def stop_audio(self):
        QMetaObject.invokeMethod(self.audio_worker,
                                 "stop_audio",
                                 Qt.QueuedConnection)

    def play_1khz(self):
        if self.i2s.is_post_fifo_test_enabled():
            self.i2s.enable_post_fifo_test(False)
        else:
            self.i2s.enable_post_fifo_test(True)

    def set_audio_position(self, position):
        print "set audio position: %f" % position
        QMetaObject.invokeMethod(self.audio_worker,
                                 "stop_audio",
                                 Qt.QueuedConnection,
                                 Q_ARG(position))

    @pyqtSlot(float)
    def update_audio(self, position):
        print "Updating audio"
        self.v.update_audio_position(position)
Пример #36
0
class Controller:

    #Constructor
    def __init__(self):
        self.model = Model()
        self.view = View()

    #Contacto controllers
    def agregar_contacto(self, id_contacto, nombre, tel, correo, dir):
        b, c = self.model.agregar_contacto(id_contacto, nombre, tel, correo,
                                           dir)
        if b:
            self.view.agregar_contacto(c)
        else:
            self.view.contacto_ya_existe(c)

    def leer_contacto(self, id_contacto):
        e, c = self.model.leer_contacto(id_contacto)
        if e:
            self.view.mostrar_contacto(c)
        else:
            self.view.contacto_no_exite(id_contacto)

    def leer_todos_contactos(self):
        c = self.model.leer_todos_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_contacto(self,
                            id_contacto=None,
                            n_nombre=None,
                            n_tel=None,
                            n_correo=None,
                            n_dir=None):
        e = self.model.actualizar_contacto(id_contacto, n_nombre, n_tel,
                                           n_correo, n_dir)
        if e:
            self.view.actualizar_contacto(id_contacto)
        else:
            self.view.contacto_no_existe(id_contacto)

    def borrar_contacto(self, id_contacto):
        e, c = self.model.borrar_contacto(id_contacto)
        if e:
            self.view.borrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_contactos_letra(self, letra):
        c = self.model.buscar_contacto_letra(letra)
        self.view.mostrar_contactos(c)

    #Cita controllers

    def agregar_cita(self, id_cita, id_contacto, lugar, fecha, hora, asunto):
        b, c = self.model.agregar_cita(id_cita, id_contacto, lugar, fecha,
                                       hora, asunto)
        if b:
            self.view.agregar_cita(c)
        else:
            self.view.cita_ya_existe(id_cita)

    def leer_cita(self, id_cita):
        b, c = self.model.leer_cita(id_cita)
        if b:
            self.view.mostrar_cita(c)
        else:
            self.view.cita_no_exite(id_cita)

    def leer_todas_citas(self):
        c = self.model.leer_todas_citas()
        self.view.mostrar_citas(c)

    def actualizar_cita(self,
                        id_cita=None,
                        n_id_contacto=None,
                        n_lugar=None,
                        n_fecha=None,
                        n_hora=None,
                        n_asunto=None):
        e = self.model.actualizar_cita(self, id_cita, n_id_contacto, n_lugar,
                                       n_fecha, n_hora, n_asunto)
        if e:
            self.view.modificar_cita(id_cita)
        else:
            self.view.cita_no_exite(id_cita)

    def borrar_cita(self, id_cita):
        e, c = self.model.borrar_cita(id_cita)
        if e:
            self.view.borrar_cita(id_cita)
        else:
            self.view.cita_no_existe(id_cita)

    def leer_cita_fecha(self, fecha):
        c = self.model.leer_cita_fecha(fecha)
        self.view.mostrar_citas(c)

    #General methods
    def insertar_contactos(self):
        self.agregar_contacto(1, "Luis Soriano", 4641145785,
                              "*****@*****.**",
                              "Monte Aragon 221 Primavera 2")
        self.agregar_contacto(2, "Alan Alvarez", 4641156784,
                              "*****@*****.**",
                              "Juan Rojas 228 Humanista 1")

    def insertar_citas(self):
        pass

    def start(self):
        #Display a welcome message
        self.view.start()
        #Insert data in model
        self.insertar_contactos()
        self.insertar_citas()
        #Show all contacts in DB
        self.leer_todos_contactos()
        self.leer_contactos_letra('a')

    def menu(self):
        #Display menu
        self.view.menu()
        o = input('Selecciona una opcion (1-9)')
        if o == '1':
            id_contacto = input("Introduce el id del contacto: ")
            nombre = input("Introduce el nombre del contacto: ")
            tel = input("Introduce el telefono del contacto: ")
            correo = input("Introduce el correo del contacto: ")
            dir = input("Introduce direccion del contacto: ")
            self.agregar_contacto(id_contacto, nombre, tel, correo, dir)
        elif o == '2':
            self.leer_todos_contactos()
        elif o == '3':
            print("Da enter si no quieres sustituir dicho dato.")
            id_contacto = input("Introduce el id del contacto a cambiar: ")
            n_nombre = input("Introduce el nuevo nombre: ")
            n_tel = input("Introduce el nuevo telefono: ")
            n_correo = input("Introduce el nuevo correo: ")
            n_dir = input("Introduce la nueva direccion: ")
            self.actualizar_contacto(int(id_contacto), n_nombre, n_tel,
                                     n_correo, n_dir)
        elif o == '4':
            id_contacto = input("Introduce el id del contacto a eliminar: ")
            self.borrar_contacto(int(id_contacto))
        elif o == '5':
            id_cita = input("Introduce el id de la cita: ")
            id_contacto = input("Introduce el id del contacto a citar: ")
            lugar = input("Introduce el Lugar de la cita: ")
            fecha = input("Introduce la fecha de la cita: ")
            hora = input("Introduce la hora de la cita: ")
            asunto = input("Introduce el asunto de la cita: ")

            self.agregar_citaint(int(id_cita), int(id_contacto), lugar, fecha,
                                 hora, asunto)
        elif o == '6':
            self.leer_todas_citas()
        elif o == '7':
            print("Da enter si no quieres sustituir dicho dato.")
            id_cita = input("Introduce el id de la cita a cambiar: ")
            n_id_contacto = input(
                "Introduce el id del nuevo contacto a citar: ")
            n_lugar = input("Introduce el nuevo lugar: ")
            n_fecha = input("Introduce la nueva fecha: ")
            n_hora = input("Introduce la nueva hora: ")
            n_asunto = input("Introduce el nuevo asunto: ")

            self.actualizar_cita(int(id_cita), int(n_id_contacto), n_lugar,
                                 n_fecha, n_hora, n_asunto)
        elif o == '8':
            id_cita = input("Introduce el id de la cita a borrar: ")
            self.borrar_cita(int(id_cita))
        elif o == '9':
            self.view.end()
        else:
            self.view.opcion_no_valida()
Пример #37
0
 def _initialize(self, platform, urn):
     self.stepper = Stepper(platform, urn, self.status)
     self.v = View(self.status, self.actions)
     self.engine = StepperEngine(self.stepper, self.status, self.actions)
     self.engine.update_configuration(self.v.get_configuration())
Пример #38
0
class Presenter(QtCore.QObject):
    def __init__(self):
        super(Presenter, self).__init__()
        # create main window

        self.ui = View()
        self.simulation = None
        self.isSimulationRunning = False

        # create timer that will call the mainLoop every 1000/FPS milliseconds
        self.timer = QtCore.QTimer(self)
        self.timer.timeout.connect(self.mainLoop)
        self.timer.start(int(1000 / constVariables.FPS))
        self.framecounter = 0

        # create a second window
        self.endWindow = ViewEndWindow()
        self.endWindow.hide()
        self.endWindowGotClosed = False

        # create granularity window
        self.granularityWindow = ViewGranularityWindow()
        self.granularityWindow.hide()

        self._connectUIElements()

    # perform the steps and draw the items on the scene for each step while the simulation is running
    def mainLoop(self):
        if self.isSimulationRunning:
            self.simulation.performStep()
            self.ui.drawItems(self.simulation.getParticleList())
            self.ui.updateScene()
            self.ui.updateElements(self.simulation.getDays(), self.simulation.getQuantityList())

            # track if the simulation is finished
            if self.simulation.getIsFinished() and not self.endWindowGotClosed:
                # pause the "main window"
                self.ui.pauseSimulationClicked()
                # update and show the "end window"
                self.endWindow.updateElements(self.simulation.getQuantityList(),
                                              self.simulation.getHealthCareModifier(), self.simulation.getCapacity())
                self.endWindow.show()
                # ensures that the end window will not pop up again, even if user resumes the simulation
                self.endWindowGotClosed = True

    # create the simulation and hand it all the predetermined values
    def startSimulation(self, amountOfParticles, initiallyInfected, riskOfInfection, rateOfDeath, riskOfQuarantine,
                        avgInfectedTime, avgImmuneTime, infectionRadius, modifierDeflect, modifierHealth,
                        modifierVaccine, socialDistanceRadius, vaccineDays, healthCareCapacity, deathRateMultiplier):
        self.isSimulationRunning = True
        self.simulation = Simulation(amountOfParticles, initiallyInfected, riskOfInfection, rateOfDeath,
                                     riskOfQuarantine, avgInfectedTime, avgImmuneTime, infectionRadius,
                                     modifierDeflect, modifierHealth, modifierVaccine, socialDistanceRadius,
                                     vaccineDays, healthCareCapacity, deathRateMultiplier)
        self.ui.startSimulation()

    # pause the simulation
    def pauseSimulation(self):
        self.isSimulationRunning = False

    # resume the simulation
    def resumeSiumlation(self):
        self.isSimulationRunning = True

    # reset the simulation
    def resetSimulation(self):
        self.isSimulationRunning = False
        # clean up the scene, enable showing "end window" and close the current "end window"
        self.ui.scene.clear()
        self.endWindowGotClosed = False
        self.endWindow.close()
        self.simulation = None

    # show the granularity window
    def showGranularityWindow(self):
        self.granularityWindow.exec_()

    # hand the given parameters with the quantityList to the write-Operation
    def exportCsv(self, granularity):
        path, filetype = self.ui.getExportParameters()
        if path and granularity:
            self.writeInCsv(path, filetype, granularity, self.simulation.getQuantityList())
        else:
            print("Something went wrong.")

    # writes to the csv
    def writeInCsv(self, path, filetype, granularity, quantityList):
        with open(path, mode='w', newline='') as self.f:
            self.writer = csv.writer(self.f)
            fieldnames = ["Step", "Healthy", "Infected", "Immune", "Deceased", "Alive"]
            self.writer.writerow(fieldnames)
            self.writer.writerow(quantityList[0])
            for i in range(granularity, len(quantityList), granularity):
                self.writer.writerow(quantityList[i])
        self.f.close()

# set of methods that connect with the parameters in the simulation class if a value is changed
# if simulation has been created,...

    # ...change the risk of infection in the simulation
    def changeRiskOfI(self, risk):
        if self.simulation:
            self.simulation.changeRiskOfInfectionS(risk)

    # ...change rate of death
    def changeRate(self, rate):
        if self.simulation:
            self.simulation.changeRateOfDeathS(rate)

    # ...change risk of being quarantined
    def changeRiskOfQ(self, risk):
        if self.simulation:
            self.simulation.changeRiskOfQuarantineS(risk)

    # ...change average infected time
    def changeAvgInfectedTime(self, time):
        if self.simulation:
            self.simulation.changeAvgInfectedTimeS(time)

    # ...change average immune time
    def changeAvgImmuneTime(self, time):
        if self.simulation:
            self.simulation.changeAvgImmuneTimeS(time)

    # ...change infection radius
    def changeInfectionRadius(self, radius):
        if self.simulation:
            self.simulation.changeInfectionRadiusS(radius)

    # change the speed of the simulation
    def changeSpeedOfSim(self, newSpeed):
        self.timer.start(int(1000/newSpeed))

    # connect elements of the view
    def _connectUIElements(self) -> None:
        # elements of the main window
        self.ui.startSimulationSignal.connect(self.startSimulation)
        self.ui.pauseSimulationSignal.connect(self.pauseSimulation)
        self.ui.resumeSimulationSignal.connect(self.resumeSiumlation)
        self.ui.resetSimulationSignal.connect(self.resetSimulation)
        self.ui.exportCsvSignal.connect(self.showGranularityWindow)
        self.ui.riskOfInfectionSignal.connect(self.changeRiskOfI)
        self.ui.rateOfDeathSignal.connect(self.changeRate)
        self.ui.riskOfQuarantineSignal.connect(self.changeRiskOfQ)
        self.ui.avgInfectionTimeSignal.connect(self.changeAvgInfectedTime)
        self.ui.avgImmuneTimeSignal.connect(self.changeAvgImmuneTime)
        self.ui.infectionRadiusSignal.connect(self.changeInfectionRadius)
        self.ui.speedOfSimSignal.connect(self.changeSpeedOfSim)
        self.granularityWindow.granularitySelectedSignal.connect(self.exportCsv)
Пример #39
0
class ExperimentoElisa(object):

    varredura = 0x0
    tempo = 0x0
    frame = []


    def __init__(self):
        self.view = View().start()
        self.start(self.view)

    def start(self, opcao):
        if opcao == 1:
            self.port = escolhaPorta()
            return self.ouvirPorta(self.port)
        elif opcao == 2:
            return ""
        elif opcao == 3:
            return self.view.finalizar()
        else:
            return self.view.finalizar()

    def ouvirPorta(self, porta):
        receber = receberFrame(porta, True)
        print receber
        self.framesRecebidos(receber)


    def framesRecebidos(self, frame):
        t2 = threading.Thread(name='T2', target=contar(False, ExperimentoElisa.varredura, ExperimentoElisa.tempo))

        #t2.start()

        f = ''
        for i in frame:
            f+=i
        respostaOBC = [ord(b) for b in f]
        print respostaOBC

        if respostaOBC[2] == 8:
            print 'TURN ON'
            enviarFrame(self.port, acknowledge())
            self.frame.append(contar(True, ExperimentoElisa.varredura, ExperimentoElisa.tempo))

        elif respostaOBC[2] == 4:
            print 'DATA REQUEST'
            self.frame.append(contar(False, ExperimentoElisa.varredura, ExperimentoElisa.tempo))

            for fm in self.frame:
                enviarFrame(self.port, fm)

        elif respostaOBC[2] == 2:
            print 'DATA SEND'
            enviarFrame(self.port, acknowledge())
            if respostaOBC[4] == 0:
                ExperimentoElisa.tempo = 0x0
            else:
                ExperimentoElisa.tempo = 0x1

        elif respostaOBC[2] == 7:
            print 'RESET'
            enviarFrame(self.port, acknowledge())
            
        elif respostaOBC[2] == 9:
            print 'TURN OFF'
            enviarFrame(self.port, acknowledge())

        else:
            print 'Impossivel verificar'
Пример #40
0
class Controller:
    """
    *********************************************
    * Controladore para la BD de la Biblioteca  *
    *********************************************
    """

    #Constructor de la Clase
    def __init__(self):
        self.model = Model()
        self.view = View()

    #Metodo para Inicializar todo el Proceso (Sistema)
    def start(self):
        self.view.start()
        self.main_menu()

    """
    ***********************
    * General controllers *
    ***********************
    """

    #Funcion del Menu
    def main_menu(self):
        o = '0'
        while o != '5':
            self.view.main_menu()
            self.view.option('5')
            o = input()
            if o == '1':
                self.users_of_menu()
            elif o == '2':
                self.autores_menu()
            elif o == '3':
                self.books_menu()
            elif o == '4':
                self.loan_menu()
            elif o == '5':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    #Medoto para Generar unas Listas para Cuando Necesitemos Llamar los Metodos de Actualizacion
    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    """
    ***************************
    * Controllers for Autores *
    ***************************
    """

    #Funcion del Menu de Autores
    def autores_menu(self):
        o = '0'
        while o != '8':
            self.view.autor_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_autor()
            elif o == '2':
                self.read_a_autor()
            elif o == '3':
                self.read_all_autores()
            elif o == '4':
                self.read_autores_for_nacionality()
            elif o == '5':
                self.update_autor()
            elif o == '6':
                self.delete_autor()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    #Metodo Auxiliar para la Creacion de Autores
    #Esto le pide al Usuario Ingresar los Datos Requeridos para un Autor
    def ask_autor(self):
        self.view.ask('Nombre: ')
        name = input()
        self.view.ask('Apellido Paterno: ')
        sname1 = input()
        self.view.ask('Apellido Materno: ')
        sname2 = input()
        self.view.ask('Nacionalidad: ')
        nacionality = input()
        return [name, sname1, sname2, nacionality]

    #Metodo para Crear un Autor
    def create_autor(self):
        name, sname1, sname2, nacionality = self.ask_autor()
        out = self.model.create_autor(name, sname1, sname2, nacionality)
        if out == True:
            self.view.ok(name + ' ' + sname1, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL AUTOR. REVISA.')
        return

    #Metodo para Leer un Autor
    def read_a_autor(self):
        self.view.ask('ID autor: ')
        id_autor = input()
        autor = self.model.read_a_autor(id_autor)
        if type(autor) == tuple:
            self.view.show_autor_header(' Datos del autor ' + id_autor + ' ')
            self.view.show_a_autor(autor)
            self.view.show_autor_midder()
            self.view.show_autor_footer()
        else:
            if autor == None:
                self.view.error('EL AUTOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL AUTOR. REVISA.')
        return

    #Metodo para la Lectura de todos los Autores
    def read_all_autores(self):
        autores = self.model.read_all_autores()
        if type(autores) == list:
            self.view.show_autor_header(' Todos los autores ')
            for autor in autores:
                self.view.show_a_autor(autor)
                self.view.show_autor_midder()
            self.view.show_autor_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS AUTORES. REVISA.')
        return

    #Metodo para Leer los Autores por Nacionalidad
    def read_autores_for_nacionality(self):
        self.view.ask('Nacionalidad: ')
        nacionality = input()
        autores = self.model.read_autores_nacionality(nacionality)
        if type(autores) == list:
            self.view.show_autor_header(' Autores con la nacionalidad ' +
                                        nacionality + ' ')
            for autor in autores:
                self.view.show_a_autor(autor)
                self.view.show_autor_midder()
            self.view.show_autor_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS AUTORES. REVISA.')
        return

    #Metodo para Actualizar los Autores
    def update_autor(self):
        self.view.ask('ID del autor a modificar: ')
        id_autor = input()
        autor = self.model.read_a_autor(id_autor)
        if type(autor) == tuple:
            self.view.show_autor_header(' Datos del autor ' + id_autor + ' ')
            self.view.show_a_autor(autor)
            self.view.show_autor_midder()
            self.view.show_autor_footer()
        else:
            if autor == None:
                self.view.error('EL AUTOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER AL AUTOR. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_autor()
        fields, vals = self.update_lists(
            ['a_fname', 'a_sname1', 'a_sname2', 'a_nacionality'], whole_vals)
        vals.append(id_autor)
        vals = tuple(vals)
        out = self.model.update_autor(fields, vals)
        if out == True:
            self.view.ok(id_autor, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR AL AUTOR. REVISA.')
        return

    #Metodo para Borrar el Autor
    def delete_autor(self):
        self.view.ask('ID del autor a borrar: ')
        id_autor = input()
        count = self.model.delete_autor(id_autor)
        if count != 0:
            self.view.ok(id_autor, 'borro')
        else:
            if count == 0:
                self.view.error('EL AUTOR NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL AUTOR. REVISA.')
        return

    """
    *****************************
    * Controllers for the Users *
    *****************************
    """

    #Funcion del Menu de Usuarios
    def users_of_menu(self):
        o = '0'
        while o != '8':
            self.view.users_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_user()
            elif o == '2':
                self.read_a_user()
            elif o == '3':
                self.read_all_users()
            elif o == '4':
                self.update_user()
            elif o == '5':
                self.delete_user()
            elif o == '6':
                return
            else:
                self.view.not_valid_option()
        return

    #Metodo Auxiliar para la Creacion de Usuarios
    #Esto le pide al Usuario Ingresar los Datos Requeridos para un Usuario
    def ask_user(self):
        self.view.ask('Nombre: ')
        name = input()
        self.view.ask('Apellido paterno: ')
        sname1 = input()
        self.view.ask('Apellido Materno: ')
        sname2 = input()
        self.view.ask('Direccion: ')
        direction = input()
        return [name, sname1, sname2, direction]

    #Metodo para Crear un Usuario
    def create_user(self):
        name, sname1, sname2, direction = self.ask_user()
        out = self.model.create_user(name, sname1, sname2, direction)
        if out == True:
            self.view.ok(name + ' ' + sname1, 'agrego')
        else:
            self.view.error('NO SE PUDO AGREGAR EL USUARIO. REVISA.')
        return

    #Metodo para Leer un Usuario
    def read_a_user(self):
        self.view.ask('ID usuario: ')
        id_user = input()
        user = self.model.read_a_user(id_user)
        if type(user) == tuple:
            self.view.show_user_header(' Datos del usuario ' + id_user + ' ')
            self.view.show_a_user(user)
            self.view.show_user_midder()
            self.view.show_user_footer()
        else:
            if user == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL USUARIO. REVISA.')
        return

    #Metodo para la Lectura de todos los Usuarios
    def read_all_users(self):
        users = self.model.read_all_users()
        if type(users) == list:
            self.view.show_user_header(' Todos los users ')
            for user in users:
                self.view.show_a_user(user)
                self.view.show_user_midder()
            self.view.show_user_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS USUARIOS. REVISA.')
        return

    #Metodo para Actualizar los Usuarios
    def update_user(self):
        self.view.ask('ID de usuario a modificar: ')
        id_user = input()
        user = self.model.read_a_user(id_user)
        if type(user) == tuple:
            self.view.show_user_header(' Datos del usuario ' + id_user + ' ')
            self.view.show_a_user(user)
            self.view.show_user_midder()
            self.view.show_user_footer()
        else:
            if user == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL USUARIO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_user()
        fields, vals = self.update_lists(
            ['u_fname', 'u_sname1', 'u_sname2', 'u_direction'], whole_vals)
        vals.append(id_user)
        vals = tuple(vals)
        out = self.model.update_user(fields, vals)
        if out == True:
            self.view.ok(id_user, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL USUARIO. REVISA.')
        return

    #Metodo para Borrar el Usuario
    def delete_user(self):
        self.view.ask('ID del usuario a borrar: ')
        id_user = input()
        count = self.model.delete_user(id_user)
        if count != 0:
            self.view.ok(id_user, 'borro')
        else:
            if count == 0:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL USUARIO. REVISA.')
        return

    """
    *************************
    * Controllers for Books *
    *************************
    """

    #Funcion del Menu para los Libros
    def books_menu(self):
        o = '0'
        while o != '7':
            self.view.books_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.create_book()
            elif o == '2':
                self.read_a_book()
            elif o == '3':
                self.read_all_book()
            elif o == '4':
                self.update_book()
            elif o == '5':
                self.delete_book()
            elif o == '6':
                return
            else:
                self.view.not_valid_option()
        return

    #Metodo Auxiliar para la Creacion de Libros
    #Esto le pide al Usuario Ingresar los Datos Requeridos para un Libro
    def ask_book(self):
        self.view.ask('Titulo del libro: ')
        title = input()
        self.view.ask('Editorial: ')
        editorial = input()
        self.view.ask('Autor (Solo ID): ')
        autor = input()
        return [title, editorial, autor]

    #Metodo para Crear un Libro
    def create_book(self):
        title, editorial, autor = self.ask_book()
        out = self.model.create_book(title, editorial, autor)
        if out == True:
            self.view.ok(title + ' ' + editorial, 'agrego')  #POSIBLE FALLO
        else:
            self.view.error('NO SE PUDO AGREGAR EL LIBRO. REVISA.')
        return

    #Metodo para Leer un Libro
    def read_a_book(self):
        self.view.ask('ID libro: ')
        id_book = input()
        book = self.model.read_a_book(id_book)
        if type(book) == tuple:
            self.view.show_book_header(' Datos del libro ' + id_book + ' ')
            self.view.show_a_book(book)
            self.view.show_book_midder()
            self.view.show_book_footer()
        else:
            if book == None:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
        return

    #Metodo para Leer todos los Libros
    def read_all_book(self):
        books = self.model.read_all_books()
        if type(books) == list:
            self.view.show_book_header(' Todos los libros ')
            for book in books:
                self.view.show_a_book(book)
                self.view.show_book_midder()
            self.view.show_book_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS LIBROS. REVISA.')
        return

    #Metodo para Actualizar un Libro
    def update_book(self):
        self.view.ask('ID del libro a modificar: ')
        id_book = input()
        book = self.model.read_a_book(id_book)
        if type(book) == tuple:
            self.view.show_book_header(' Datos del book ' + id_book + ' ')
            self.view.show_a_book(book)
            self.view.show_book_midder()
            self.view.show_book_footer()
        else:
            if book == None:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_book()
        fields, vals = self.update_lists(
            ['b_title', 'b_editorial', 'id_autor'], whole_vals)
        vals.append(id_book)
        vals = tuple(vals)
        out = self.model.update_book(fields, vals)
        if out == True:
            self.view.ok(id_book, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL LIBRO. REVISA.')
        return

    #Metodo para Borrar un Libro
    def delete_book(self):
        self.view.ask('ID del libro a borrar:')
        id_book = input()
        count = self.model.delete_book(id_book)
        if count != 0:
            self.view.ok(id_book, 'borro')
        else:
            if count == 0:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL LIBRO. REVISA.')
        return

    """
    ************************
    * Controllers for loan *
    ************************
    """

    #Funcion de Menu para las Ordenes
    def loan_menu(self):
        o = '0'
        while o != '11':
            self.view.loan_menu()
            self.view.option('11')
            o = input()
            if o == '1':
                self.create_loan()
            elif o == '2':
                self.read_a_loan()
            elif o == '3':
                self.read_all_loan()
            elif o == '4':
                self.read_loan_user()
            elif o == '5':
                self.update_loan()
            elif o == '6':
                self.add_loan_details()
            elif o == '7':
                self.update_loan_details()
            elif o == '8':
                self.delete_loan_details()
            elif o == '9':
                self.delete_loan()
            elif o == '10':
                return
            else:
                self.view.not_valid_option()
        return

    #Metodo para Crear Prestamos
    def create_loan(self):
        self.view.ask('ID usuario: ')
        id_user = input()
        today = date.today()
        l_date = today.strftime('%y-%m-%d')
        id_loan = self.model.create_loan(id_user, l_date)
        if type(id_loan) == int:
            id_book = ' '
            while id_book != '':
                self.view.msg(
                    '---- Agrega libros al prestamo (deja vacio el id del libro para salir) ----'
                )
                id_book = self.create_loan_details(id_book)  #POSIBLE FALLO
            #self.model.update_loan(('id_loan = %s',),(id_loan))
            self.model.update_loan(('id_loan = %s', ), (id_book, id_loan))
        else:
            self.view.error('NO SE PUDO CREAR EL PRESTAMO. REVISA.')
        return

    #Metodo para Leer un Prestamo
    def read_a_loan(self):
        self.view.ask('ID loan: ')
        id_loan = input()
        loan = self.model.read_a_loan(id_loan)
        if type(loan) == tuple:
            loan_details = self.model.read_loan_details(id_loan)
            if type(loan_details) != list and loan_details != None:
                self.view.error('PROBLEMA AL LEER EL PRESTAMO. REVISA.')
            else:
                self.view.show_loan_header(' Datos del prestamo ' + id_loan +
                                           ' ')
                self.view.show_loan(loan)
                self.view.show_loan_details_header()
                for loan_detail in loan_details:
                    self.view.show_a_loan_details(loan_detail)
                self.view.show_loan_details_footer()
                self.view.show_loan_footer()
                return loan
        else:
            if loan == None:
                self.view.error('EL PRESTAMO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL PRESTAMO. REVISA.')
        return

    #Metodo para Leer todos los Prestamos
    def read_all_loan(self):
        loans = self.model.read_all_loan()
        if type(loans) == list:
            self.view.show_loan_header(' Todos los prestamos ')
            for loan in loans:
                id_loan = loan[0]
                loan_details = self.model.read_loan_details(id_loan)
                if type(loan_details) != list and loan_details != None:
                    self.view.error('PROBLEMA AL LEER EL PRESTAMO ' + id_loan +
                                    '. REVISA.')
                else:
                    self.view.show_loan(loan)
                    self.view.show_loan_details_header()
                    for loan_detail in loan_details:
                        self.view.show_a_loan_details(loan_detail)
                    self.view.show_loan_details_footer()
                    self.view.show_loan_total(loan)
                    self.view.show_loan_midder()
            self.view.show_loan_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS PRESTAMOS. REVISA.')
        return

    #Metodo para Leer los Prestamos de un Usuario
    def read_loan_user(self):
        self.view.ask('ID usuario: ')
        id_user = input()
        loans = self.model.read_loan_user(id_user)
        if type(loans) == list:
            self.view.show_loan_header(' Prestamos para el cliente ' +
                                       id_user + ' ')
            for loan in loans:
                id_loan = loan[0]
                loan_details = self.model.read_loan_details(id_loan)
                if type(loan_details) != list and loan_details != None:
                    self.view.error('PROBLEMA AL LEER EL PRESTAMO ' + id_loan +
                                    '. REVISA.')
                else:
                    self.view.show_loan(loan)
                    self.view.show_details_header()  #POSIBLE FALLO
                    for loan_detail in loan_details:
                        self.view.show_a_loan_details(loan_detail)
                    self.view.show_loan_details_footer()
                    self.view.show_loan_total(loan)
                    self.view.show_loan_midder()
            self.view.show_loan_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS PRESTAMOS. REVISA.')
        return

    #Metodo para Actualizar un Prestamo
    def update_loan(self):
        self.view.ask('ID del prestamo a modificar: ')
        id_loan = input()
        loan = self.model.read_a_loan(id_loan)
        if type(loan) == tuple:
            self.view.show_loan_header(' Datos del prestamo ' + id_loan + ' ')
            self.view.show_loan(loan)
            self.view.show_loan_footer()
        else:
            if loan == None:
                self.view.error('EL PRESTAMO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL PRESTAMO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        self.view.ask('ID usuario: ')
        id_user = input()
        self.view.ask('Fecha (yyyy/mm/dd): ')
        l_date = input()
        whole_vals = [id_user, l_date]
        fields, vals = self.update_lists(['id_user', 'l_date'], whole_vals)
        vals.append(id_loan)
        vals = tuple(vals)
        out = self.model.update_loan(fields, vals)
        if out == True:
            self.view.ok(id_loan, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL PRESTAMO. REVISA.')
        return

    #Metodo para Borrar un Prestamo
    def delete_loan(self):
        self.view.ask('ID del prestamo a borrar: ')
        id_loan = input()
        count = self.model.delete_loan(id_loan)
        if count != 0:
            self.view.ok(id_loan, 'borro')
        else:
            if count == 0:
                self.view.error('EL PRESTAMO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL PRESTAMO. REVISA.')
        return

    """
    *********************************
    * Controllers for loan details *
    *********************************
    """

    #Metodo para Crear Prestamos con Detalles
    def create_loan_details(self, id_loan):
        self.view.ask('ID libros: ')
        id_book = input()
        if id_book != '':
            book = self.model.read_a_book(id_book)
            if type(book) == tuple:
                self.view.show_book_header(' Datos del libro ' + id_book + ' ')
                self.view.show_a_book(book)
                self.view.show_book_footer()
                self.view.ask('Cantidad: ')
                ld_amount = int(input())
                #od_total = ld_amount * book[4]
                out = self.model.create_loan_detail(id_loan, id_book,
                                                    ld_amount)
                if out == True:
                    self.view.ok(book[1] + ' ' + book[2], 'agrego al prestamo')
                else:
                    if out.errno == 1062:
                        self.view.error('EL PRODUCTO YA ESTA EN EL PRESTAMO')
                    else:
                        self.view.error('NO SE PUDO AGREGAR EL LIBRO. REVISA.')
                    #od_total = 0.0
            else:
                if book == None:
                    self.view.error('EL LIBRO NO EXISTE')
                else:
                    self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
        return id_book
        #, od_total

    #Metodo Agregar detalles de Prestamo (Ya existente)
    def add_loan_details(self):
        loan = self.read_a_loan()
        if type(loan) == tuple:
            id_loan = loan[0]
            #l_total = loan[4]
            id_book = ' '
            while id_book != '':
                self.view.msg(
                    '---- Agrega libros a la orden (deja vacio el id del libro para salir) ----'
                )
                id_loan, od_total = self.create_loan_details(id_loan)
                #o_total += od_total
            #self.model.update_order(('o_total = %s',),(o_total, id_loan))
        return

    #Metodo para Actualizar un Detalle de Prestamo
    def update_loan_details(self):
        loan = self.read_a_loan()
        if type(loan) == tuple:
            id_loan = loan[0]
            #o_total = loan[4]
            id_book = ' '
            while id_loan != '':
                self.view.msg(
                    '---- Modifica libros de la orden (deja vacio el id del libro para salir) ----'
                )
                self.view.ask('ID libro: ')
                id_book = input()
                if id_book != '':
                    loan_detail = self.model.read_a_loan_detail(
                        id_loan, id_book)
                    if type(loan_detail) == tuple:
                        #od_total_old = loan_detail[5]
                        #o_total -= od_total_old
                        book = self.model.read_a_book(id_book)
                        self.view.ask('Cantidad: ')
                        ld_amount = int(input())
                        #od_total = 1 * od_amount###
                        #o_total += od_total
                        #fields, whole_vals = self.update_lists(['od_amount','od_total'],[od_amount, od_total])
                        whole_vals.append(id_loan)
                        whole_vals.append(id_book)
                        self.model.update_loan_details(fields, whole_vals)
                        self.view.ok(id_book, 'actualizo en el prestamo')
                    else:
                        if loan_detail == None:
                            self.view.error(
                                'EL LIBRO NO EXISTE EN EL PRESTAMO')
                        else:
                            self.view.error(
                                'PROBLEMA AL ACTUALIZAR EL PRESTAMO. REVISA.')
            self.model.update_loan(('o_total = %s', ), (o_total, id_loan))
        return

    #Metodo para Eliminar un detalle del Prestamo
    def delete_loan_details(self):
        loan = self.read_a_loan()
        if type(loan) == tuple:
            id_loan = loan[0]
            #o_total = loan[4]
            id_book = ' '
            while id_book != '':
                self.view.msg(
                    '---- Borra libros del prestamo (deja vacio el id del libro para salir) ----'
                )
                self.view.ask('ID libro: ')
                id_book = input()
                if id_book != '':
                    loan_detail = self.model.read_a_loan_detail(
                        id_loan, id_book)
                    count = self.model.delete_loan_detail(id_loan, id_book)
                    if type(loan_detail) == tuple and count != 0:
                        #od_total = loan_detail[5]
                        #o_total -= od_total
                        self.view.ok(id_book, 'borro del prestamo ')
                    else:
                        if loan_detail == None:
                            self.view.error(
                                'EL LIBRO NO EXISTE EN EL PRESTAMO')
                        else:
                            self.view.error(
                                'PROBLEMA AL BORRAR EL PRESTAMO. REVISA.')
            #self.model.update_loan(('o_total = %s',),(o_total, id_loan))
        return
Пример #41
0
 def _initialize(self, platform, urn):
     self.v = View(self.status, self.actions)
     self.drv = SATADriver(platform, urn)
     self.refresh()
Пример #42
0
class Controller:
    """
    *******************************
    * A controller for a store DB *
    *******************************
    """
    def __init__(self):
        self.model = Model()
        self.view = View()
    
    def start(self):
        self.view.start()
        self.main_menu()

    """
    ***********************
    * General controllers *
    ***********************
    """   
    def main_menu(self):
        o = '0'
        while o != '5':
            self.view.main_menu()
            self.view.option('5')
            o = input()
            if o == '1':
                self.movies_menu()
            elif o == '2':
                self.actors_menu()
            elif o == '3':
                self.director_menu()
            elif o == '4':
                self.genero_menu()
            elif o == '5':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def update_lists(self, fs , vs):
        fields = []
        vals = []
        for f,v in zip(fs,vs):
            if v != '':
                fields.append(f+' = %s')
                
                #print('Update List '+v)
                vals.append(v)
        return fields, vals

    """
    **********************
    * General for movies *
    **********************
    """
    def movies_menu(self):
        o = '0'
        while o != '12':
            self.view.movies_menu()
            self.view.option('12')
            o = input()
            if o == '1':
                self.create_a_movie()
            elif o == '2':
                self.read_a_movie()
            elif o == '3':
                self.read_all_movies()
            elif o == '4':
                self.read_movie_year()
            elif o == '5':
                self.read_all_details()
            elif o == '6':
                self.read_details()
            elif o == '7':
                self.add_details()
            elif o == '8':
                self.edit_details()
            elif o == '9':
                self.update_pelicula()
            elif o == '10':
                self.delete_detail()
            elif o == '11':
                self.delete_movie()
            elif o == '12':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_movie(self):
        self.view.ask('Titulo: ')
        Titulo = input()
        self.view.ask('Idioma: ')
        Idioma = input()
        self.view.ask('Subtitulo: ')
        Subtitulo = input()
        self.view.ask('año: ')
        Año = input()
        return [Titulo,Idioma,Subtitulo,Año]

    def ask_detail(self):
        self.view.ask('id Titutlo: ')
        id_pelicula= input()
        self.view.ask('Id Director: ')
        id_director = input()
        self.view.ask('Descripcion: ')
        descripcion = input()
        self.view.ask('Duracion: ')
        duracion = input()
        return [id_pelicula,id_director, descripcion,duracion]
    
    def create_a_movie(self):
        Titulo,Idioma,Subtitulo,Año = self.ask_movie()
        out = self.model.create_movie(Titulo,Idioma,Subtitulo,Año)
        if out == True:
            self.view.ok(Titulo, 'agrego')
        else:
            self.view.error('No se pudo agregar la pelicula')
        return

    def read_a_movie(self):
        self.view.ask('ID de pelicula: ')
        i_movie = input()
        movie = self.model.read_a_movie(i_movie)
        if type(movie) == tuple:
            self.view.show_movie_header('Datos de la pelicula  '+i_movie+' ')
            self.view.show_a_movie(movie)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            if movie == None:
                self.view.error('La pelicula no existe')
            else:
                self.view.error(' Hay un problema al leer la pelicula ')
        return
    
    def read_all_movies(self):
        movies = self.model.read_all_movies()
        if type(movies) ==  list:
            self.view.show_movie_header(' Todos las peliculas ')
            for movie in movies:
                self.view.show_a_movie(movie)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            self.view.error('Hay un problema todas las peliculas ')

    def read_movie_year(self):
        self.view.ask('año de la pelicula: ')
        year = input()
        movies = self.model.read_a_movies_year(year)
        if type(movies) == list:
            self.view.show_movie_header('Peliculas del año  '+year+' ')
            for movie in movies:
                self.view.show_a_movie(movie)
            self.view.show_movie_footer()
        else:
            if movies == []:
                self.view.error('No hay pelicula del año '+year)
            else:
                self.view.error(' Hay un problema al leer las peliculas del año '+year)
        return

    def add_details(self):
        dp_id_pelicula, dp_id_director, descripcion,dp_duracion = self.ask_detail()
        out = self.model.create_detalles_pelicula(dp_id_pelicula, dp_id_director, descripcion,dp_duracion)
        if out == True:
            self.view.ok(dp_id_pelicula, 'agrego')
        else:
            if out == 1062:
                print('ya existe una descripcion')
            else:
                self.view.error('No se pudo agregar la pelicula')
        return

    def read_details(self):
        self.view.ask('ID de pelicula: ')
        i_movie = input()
        details = self.model.read_detalles_pelicula(i_movie)
        if type(details) == list:
            if details == []:
                print('*********************************************')
                print('* La pelicula no cuenta con una descripcion *')
                print('*********************************************')
                return
            self.view.show_detail_header('Description de la pelicula  '+details[0][1]+' ')
            for detail in details:
                self.view.show_a_detail(detail)
            self.view.show_detail_midder()
            self.view.show_detail_footer()
        actors = self.model.read_a_mov_ac(i_movie)
        #print(actors)
        if type(actors) ==  list:
            self.view.show_actor_header(' Actores de la pelicula ')
            for actor in actors:
                self.view.show_a_actor(actor)
            self.view.show_actor_midder()
            self.view.show_actor_footer()
        else:
            self.view.error('Hay un problema todas los actores ')
        generos = self.model.read_a_peliculagen(i_movie )
        if generos == []:
            print('*************************')
            print('* No existe el genero *')
            print('*************************')
            return
        else:
            if type(generos) == list:
                self.view.show_genero_header('Generos de la pelicula ')
                for genero in generos:
                    self.view.show_a_genero(genero)
                self.view.show_genero_footer()
            else:
                if generos == []:
                    self.view.error('La pelicula no contiene generos')
                else:
                    self.view.error(' Hay un problema al leer los generos de la pelicula')



    def read_all_details(self):
        movies = self.model.read_all_detalles_pelicula()
        if type(movies) ==  list:
            self.view.show_detail_header(' Todos las descripciones ')
            for movie in movies:
                self.view.show_a_detail(movie)
            self.view.show_detail_midder()
            self.view.show_detail_footer()
        else:
            self.view.error('Hay un problema al leer todas las decripciones ')       

    def edit_details(self):
        self.view.ask(' ID de descripcion de pelicula: ')
        i_desc = input()
        details = self.model.read_detalles_pelicula(i_desc)
        if type(details) == list:
            self.view.show_detail_header('Description de la pelicula  '+details[0][1]+' ')
            for detail in details:
                self.view.show_a_detail(detail)
            self.view.show_detail_midder()
            self.view.show_detail_footer()
        else:
            if details == None:
                self.view.error('No existe la descricion')
            else:
                self.view.error('Problema al leer la descripcion')
            return

        self.view.msg('Ingresa los valores a modificar ( vacio para dejarlo igual ):')
        whole_vals = self.ask_detail()
        fields, vals = self.update_lists(['dp_id_pelicula', 'dp_id_director', 'descripcion','dp_duracion'],whole_vals)
        vals.append(i_desc)
        vals = tuple(vals)
        out = self.model.update_detalles_pelicula(fields,vals)
        if out == True:
            self.view.ok(i_desc, 'atualizo')
        else:
            self.view.error('No se pudo actualizar')
        return        

    def delete_detail(self):
        self.view.ask('ID de detalle a borrar: ')
        dp_id_pelicula = input()
        count = self.model.delate_detalles_prlicula(dp_id_pelicula)
        if count != 0:
            self.view.ok(dp_id_pelicula, 'Borro')
        else:
            if count == 0:
                self.view.error('La pelicula no exite')
            else:
                self.view.error('Prblema al borrar la pelicula')
        return

    def update_pelicula(self):
        self.view.ask(' ID de pelicula a modificar: ')
        id_pelicula = input()
        movie = self.model.read_a_movie(id_pelicula)
        if type(movie) == tuple:
            self.view.show_movie_header('Datos de la pelicula  '+id_pelicula+' ')
            self.view.show_a_movie(movie)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            if movie == None:
                self.view.error('La pelicula no existe')
            else:
                self.view.error('Problema al leer la pelicula')
            return
        self.view.msg('Ingresa los valores a modificar ( vacio para dejarlo igual ):')
        whole_vals = self.ask_movie()
        fields, vals = self.update_lists(['p_titulo','p_idioma','p_subtitulos','p_año'],whole_vals)
        vals.append(id_pelicula)
        vals = tuple(vals)
        out = self.model.update_movie(fields,vals)
        if out == True:
            self.view.ok(id_pelicula, 'atualizo')
        else:
            self.view.error('No se pudo actualizar')
        return

    def delete_movie(self):
        self.view.ask('ID de pelicula a borrar: ')
        id_pelicula = input()
        count = self.model.delete_movie(id_pelicula)
        if count != 0:
            self.view.ok(id_pelicula, 'Borro')
        else:
            if count == 0:
                self.view.error('La pelicula no exite')
            else:
                self.view.error('Prblema al borrar la pelicula')
        return


    """
    **********************
    * General for actors *
    **********************
    """
    def actors_menu(self):
        o = '0'
        while o != '10':
            self.view.actors_menu()
            self.view.option('10')
            o = input()
            if o == '1':
                self.create_a_actor()
            elif o == '2':
                self.read_a_actor()
            elif o == '3':
                self.read_all_actor()
            elif o == '4':
                self.read_movie_actor()
            elif o == '5':
                self.read_a_actor_nacionality()                
            elif o == '6':
                self.update_actor()
            elif o == '7':
                self.add_movie()
            elif o == '8':
                self.del_movie()
            elif o == '9':
                self.delete_actor()
            elif o == '10':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_actor(self):
        self.view.ask('Nombre: ')
        Nombre = input()
        self.view.ask('Apellido Paterno: ')
        ApellidoPat = input()
        self.view.ask('Apellido Materno: ')
        ApellidoMat = input()
        self.view.ask('Nacionalidad: ')
        Nacionalidad = input()
        self.view.ask('Fecha de nacimiento: ')
        Año = input()        
        return [Nombre,ApellidoPat,ApellidoMat,Nacionalidad,Año]
    
    def create_a_actor(self):
        Nombre,ApellidoPat,ApellidoMat,Nacionalidad,Año = self.ask_actor()
        out = self.model.create_actor(Nombre,ApellidoPat,ApellidoMat,Nacionalidad,Año)
        if out == True:
            self.view.ok(Nombre+' '+ApellidoPat, ' se agrego')
        else:
            self.view.error('No se pudo agregar el actor')
        return

    def read_a_actor(self):
        self.view.ask('ID de Actor: ')
        i_actor = input()
        actor = self.model.read_a_actor(i_actor)
        if type(actor) == tuple:
            self.view.show_movie_header('Datos del actor  '+i_actor+' ')
            self.view.show_a_actor(actor)
            self.view.show_actor_midder()
            self.view.show_actor_footer()
        else:
            if actor == None:
                self.view.error('El actor no existe')
            else:
                self.view.error(' Hay un problema al leer el actor ')
        return

    def read_a_actor_nacionality(self):
        self.view.ask('Nacionalidad: ')
        nacionality = input()
        actors = self.model.read_a_actor_nacionalidad(nacionality)
        if type(actors) == list:
            self.view.show_actor_header('Peliculas del año  '+nacionality+' ')
            for actor in actors:
                self.view.show_a_actor(actor)
            self.view.show_actor_footer()
        else:
            if actors == []:
                self.view.error('No hay actores de la nacionalidad '+nacionality)
            else:
                self.view.error(' Hay un problema al leer las nacionalidades '+nacionality)
        return
    
    def read_all_actor(self):
        actors = self.model.read_all_actor()
        if type(actors) ==  list:
            self.view.show_actor_header(' Todos los actores ')
            for actor in actors:
                self.view.show_a_actor(actor)
            self.view.show_actor_midder()
            self.view.show_actor_footer()
        else:
            self.view.error('Hay un problema todas los actores ')

    def read_movie_actor(self):
        self.view.ask('ID del actor: ')
        i_actor = input()
        movies = self.model.read_a_ac_mov(i_actor)
        if type(movies) == list:
            self.view.show_movie_header('Peliculas del actor ')
            for movie in movies:
                self.view.show_a_movie(movie)
            self.view.show_movie_footer()
        else:
            if movies == []:
                self.view.error('No hay pelicula del actor')
            else:
                self.view.error(' Hay un problema al leer las peliculas del actor')
        return
    
    def update_actor(self):
        self.view.ask(' ID de ator a modificar: ')
        id_actor = input()
        actor = self.model.read_a_actor(id_actor)
        if type(actor) == tuple:
            self.view.show_movie_header('Datos del actor  '+actor[1]+' ')
            self.view.show_a_actor(actor)
            self.view.show_actor_midder()
            self.view.show_actor_footer()
        else:
            if actor == None:
                self.view.error('El actor no existe')
            else:
                self.view.error('Problema al leer el actor')
            return
        self.view.msg('Ingresa los valores a modificar ( vacio para dejarlo igual ):')
        whole_vals = self.ask_actor()
        fields, vals = self.update_lists(['a_nombre','a_apellidoPat','a_apellidoMat','a_nacionalidad','a_fnacimiento'],whole_vals)
        vals.append(id_actor)
        vals = tuple(vals)
        out = self.model.update_actor(fields,vals)
        if out == True:
            self.view.ok(id_actor, 'atualizo')
        else:
            self.view.error('No se pudo actualizar')
        return

    def add_movie(self):
        movies = self.model.read_all_movies()
        if type(movies) ==  list:
            self.view.show_movie_header(' Todos las peliculas ')
            for movie in movies:
                self.view.show_a_movie(movie)
            self.view.show_movie_midder()
            self.view.show_movie_footer()
        else:
            self.view.error('Hay un problema todas las peliculas ')
        self.view.ask('ID de actor: ')
        id_actor= input()
        self.view.ask('ID de pelicula: ')
        id_movie = input()
        out = self.model.create_ac_mov(id_actor,id_movie)
        if out == True:
            self.view.ok(id_movie , 'Se agrego la pelicula al actor')
        else:
            self.view.error('No se pudo agregar')
        return        

    def del_movie(self):
        self.view.ask('ID de actor a borrar: ')
        id_actor = input()
        self.view.ask('ID de pelicula a borrar: ')
        id_movie = input()
        count = self.model.delete_ac_mov(id_actor,id_movie)
        if count != 0:
            self.view.ok(id_actor, 'Borro')
        else:
            if count == 0:
                self.view.error('El actor no exite')
            else:
                self.view.error('Prblema al borrar la pelicula del actor')
        return

    def delete_actor(self):
        self.view.ask('ID de actor a borrar: ')
        id_actor = input()
        count = self.model.delete_actor(id_actor)
        if count != 0:
            self.view.ok(id_actor, 'Borro')
        else:
            if count == 0:
                self.view.error('El actor no exite')
            else:
                self.view.error('Prblema al borrar el actor')
        return
    """
    ************************
    * General for director *
    ************************
    """
    def director_menu(self):
        o = '0'
        while o != '8':
            self.view.directors_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_a_director()
            elif o == '2':
                self.read_a_director()
            elif o == '3':
                self.read_all_directors()
            elif o == '4':
                self.read_a_director_nacionality()                
            elif o == '5':
                self.read_director_movies()
            elif o == '6':
                self.edit_director()
            elif o == '7':
                self.del_director()
            elif o == '8':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_director(self):
        self.view.ask('Nombre: ')
        Nombre = input()
        self.view.ask('Apellido Paterno: ')
        ApellidoPat = input()
        self.view.ask('Apellido Materno: ')
        ApellidoMat = input()
        self.view.ask('Nacionalidad: ')
        Nacionalidad = input()      
        self.view.ask('Fecha de nacimiento: ')
        año = input()       
        self.view.ask('Estudios: ')
        Estudios = input() 
        return [Nombre,ApellidoPat,ApellidoMat,Nacionalidad,año,Estudios]
    
    def create_a_director(self):
        Nombre,ApellidoPat,ApellidoMat,Nacionalidad,año,Estudios = self.ask_director()
        out = self.model.create_director(Nombre,ApellidoPat,ApellidoMat,Nacionalidad,año,Estudios)
        if out == True:
            self.view.ok(Nombre+' '+ApellidoPat, ' se agrego')
        else:
            self.view.error('No se pudo agregar el actor')
        return

    def read_a_director(self):
        self.view.ask('ID de Director: ')
        i_director = input()
        director = self.model.read_a_director(i_director)
        if type(director) == tuple:
            self.view.show_director_header('Datos del director  '+i_director+' ')
            self.view.show_a_director(director)
            self.view.show_director_midder()
            self.view.show_director_footer()
        else:
            if director == None:
                self.view.error('El director no existe')
            else:
                self.view.error(' Hay un problema al leer el director ')
        return

    def read_a_director_nacionality(self):
        self.view.ask('Nacionalidad: ')
        nacionality = input()
        directors = self.model.read_a_director_nacionalidad(nacionality)
        if type(directors) == list:
            self.view.show_director_header('Directores de la nacionalidad: '+nacionality+' ')
            for actor in directors:
                self.view.show_a_actor(actor)
            self.view.show_actor_footer()
        else:
            if directors == []:
                self.view.error('No hay directores de la nacionalidad '+nacionality)
            else:
                self.view.error(' Hay un problema al leer las nacionalidades '+nacionality)
        return
    
    def read_all_directors(self):
        directors = self.model.read_all_director()
        if type(directors) ==  list:
            self.view.show_director_header(' Todos los directores ')
            for director in directors:
                self.view.show_a_director(director)
            self.view.show_director_midder()
            self.view.show_director_footer()
        else:
            self.view.error('Hay un problema todas los actores ')

    def read_director_movies(self):
        self.view.ask('ID del director: ')
        id_director = input()
        movies = self.model.read_a_dir_mov(id_director)
        if movies == []:
            print('*************************')
            print('* No existe el director *')
            print('*************************')
            return
        else:
            if type(movies) == list:
                self.view.show_movie_header('Peliculas del director ')
                for movie in movies:
                    self.view.show_a_movie(movie)
                self.view.show_movie_footer()
            else:
                if movies == []:
                    self.view.error('No hay pelicula del director')
                else:
                    self.view.error(' Hay un problema al leer las peliculas del director')
            return
    
    def edit_director(self):
        self.view.ask(' ID de director a modificar: ')
        id_director = input()
        director = self.model.read_a_director(id_director)
        if type(director) == tuple:
            self.view.show_director_header('Datos del director  '+id_director+' ')
            self.view.show_a_director(director)
            self.view.show_director_midder()
            self.view.show_director_footer()
        else:
            if director == None:
                self.view.error('El director no existe')
            else:
                self.view.error(' Hay un problema al leer el director ')
            return
        self.view.msg('Ingresa los valores a modificar ( vacio para dejarlo igual ):')
        whole_vals = self.ask_director()
        fields, vals = self.update_lists(['d_nombre','d_apellidoPat','d_apellidoMat','d_nacionalidad','d_fnacimiento','d_educacion'],whole_vals)
        vals.append(id_director)
        vals = tuple(vals)
        out = self.model.update_director(fields,vals)
        if out == True:
            self.view.ok(id_director, 'atualizo')
        else:
            self.view.error('No se pudo actualizar')
        return


    def del_director(self):
        self.view.ask('ID de director a borrar: ')
        id_director = input()
        count = self.model.delete_director(id_director)
        if count != 0:
            self.view.ok(id_director, 'Borro')
        else:
            if count == 0:
                self.view.error('El director no exite')
            else:
                self.view.error('Prblema al borrar el director')
        return

    """
    ************************
    * General for genero *
    ************************
    """
    def genero_menu(self):
        o = '0'
        while o != '10':
            self.view.generos_menu()
            self.view.option('10')
            o = input()
            if o == '1':
                self.create_a_genero()
            elif o == '2':
                self.add_genero_pelicula()
            elif o == '3':
                self.read_a_genero()
            elif o == '4':
                self.read_all_generos() 
            elif o == '5':
                self.update_genero()
            elif o == '6':
                self.update_genero_pelicula()
            elif o == '7':
                self.read_all_generos_pelicula()                 
            elif o == '8':
                self.delete_genero()
            elif o == '9':
                self.delete_genero_pelicula()
            elif o == '10':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_genpelicula(self):
        self.view.ask('Genero: ')
        Genero = input()
        self.view.ask('Pelicula: ')
        Pelicula = input()
        return[Genero, Pelicula]

    def ask_genero(self):
        self.view.ask('Genero: ')
        Genero = input()
        return(Genero)
    
    def ask_genero2(self):
        self.view.ask('Genero: ')
        Genero = input()
        return[Genero]

    def create_a_genero(self):
        Genero = self.ask_genero()
        out = self.model.create_gen(Genero)
        print(out)
        if out == True:
            self.view.ok(Genero, ' se agrego')
        else:
            self.view.error('No se pudo agregar el genero')
        return

    def add_genero_pelicula(self):
        self.read_all_movies()
        self.read_all_generos()
        Genero, Pelicula = self.ask_genpelicula()
        out = self.model.create_generos_peliculas(Genero, Pelicula)
        if out == True:
            self.view.ok(Genero+' '+Pelicula, ' se agrego')
        else:    
            self.view.error('No se pudo agregar el genero a la pelicula')
        return

    def read_a_genero(self):
        self.view.ask('ID de Genero: ')
        i_genero = input()
        genero = self.model.read_a_genero(i_genero)
        if type(genero) == tuple:
            self.view.show_genero_header('Genero  '+i_genero+' ')
            self.view.show_a_genero(genero)
            self.view.show_genero_midder()
            self.view.show_genero_footer()
        else:
            if genero == None:
                self.view.error('El genero no existe')
            else:
                self.view.error(' Hay un problema al leer el genero ')
        return
    
    def read_all_generos(self):
        generos = self.model.read_all_generos()
        if type(generos) ==  list:
            self.view.show_genero_header(' Todos los generos ')
            for genero in generos:
                self.view.show_a_genero(genero)
            self.view.show_genero_midder()
            self.view.show_genero_footer()
        else:
            self.view.error('Hay un problema con todos los generos ')
        return

    def read_all_generos_pelicula(self):
        self.view.ask('ID de la pelicula: ')
        id_pelicula = input()
        generos = self.model.read_a_peliculagen(id_pelicula)
        if generos == []:
            print('*************************')
            print('* No existe el genero *')
            print('*************************')
            return
        else:
            if type(generos) == list:
                self.view.show_genero_header('Generos de la pelicula ')
                for genero in generos:
                    self.view.show_a_genero(genero)
                self.view.show_genero_footer()
            else:
                if generos == []:
                    self.view.error('La pelicula no contiene generos')
                else:
                    self.view.error(' Hay un problema al leer los generos de la pelicula')
            return

        
    def update_genero_pelicula(self):
        self.read_all_movies()
        self.view.ask(' ID de la pelicula a modificar: ')
        id_pelicula = input()
        generos = self.model.read_a_peliculagen(id_pelicula)
        if type(generos) ==  list:
            self.view.show_genero_header(' Todos los generos de la pelicula ')
            for genero in generos:
                self.view.show_a_genero(genero)
            self.view.show_genero_midder()
            self.view.show_genero_footer()
        else:
            self.view.error('Hay un problema con todos los generos ')
        self.view.ask(' ID de genero a modificar: ')
        id_genero = input()
        self.view.msg('Ingresa los valores a modificar ( vacio para dejarlo igual ):')
        whole_vals = self.ask_genpelicula()
        fields, vals = self.update_lists(['gp_id_genero', 'gp_id_pelicula'],whole_vals)
        vals.append(id_genero)
        vals.append(id_pelicula)
        vals = tuple(vals)
        out = self.model.update_genpelicula(fields,vals)
        if out == True:
            self.view.ok(id_genero, 'atualizo')
        else:
            self.view.error('No se pudo actualizar')
        return
        
    def update_genero(self):
        self.read_all_generos()
        self.view.ask(' ID de genero a modificar: ')
        id_genero = input()
        self.view.msg('Ingresa los valores a modificar ( vacio para dejarlo igual ):')
        whole_vals = self.ask_genero2()
        #print(whole_vals) cprrecto
        fields, vals = self.update_lists(['genero'],whole_vals)
        vals.append(id_genero)
        vals = tuple(vals)
        #print(vals) la marrana torcio el rabo
        out = self.model.update_genero(fields,vals)
        
        if out == True:
            self.view.ok(id_genero, 'atualizo')
        else:
            self.view.error('No se pudo actualizar')
        return
    
    def delete_genero(self):
        self.view.ask('ID del genero a borrar: ')
        id_genero = input()
        count = self.model.delete_genero(id_genero)
        if count != 0:
            self.view.ok(id_genero, 'Borro')
        else:
            if count == 0:
                self.view.error('El genero no exite')
            else:
                self.view.error('Problema al borrar el genero')
        return

    def delete_genero_pelicula(self):
        self.read_all_movies()
        self.view.ask('ID de la pelicula para borrar genero: ')
        id_pelicula = input()




        generos = self.model.read_a_peliculagen(id_pelicula)
        if generos == []:
            print('*************************')
            print('* No existe el genero *')
            print('*************************')
            return
        else:
            if type(generos) == list:
                self.view.show_genero_header('Generos de la pelicula ')
                for genero in generos:
                    self.view.show_a_genero(genero)
                self.view.show_genero_footer()
            else:
                if generos == []:
                    self.view.error('La pelicula no contiene generos')
                else:
                    self.view.error(' Hay un problema al leer los generos de la pelicula')

        self.view.ask('ID del genero a borrar: ')
        id_genero = input()
        count = self.model.delete_genero_pelicula(id_genero, id_pelicula)
        if count != 0:
            self.view.ok(id_genero + ' ' +id_pelicula, 'Borro')
        else:
            if count == 0:
                self.view.error('La pelicula no contiene ese genero')
            else:
                self.view.error('Problema al borrar el genero de la pelicula')
        return
class Controller:
    def __init__(self):  #CONSTRUCTOR
        self.model = Model()
        self.view = View()

    def start(self):  #METODO PARA INICIALIZAR EL SISTEMA
        self.view.start()
        self.main_menu()

    # +++++++++++++++++++++++++++ CONTROLADOR GENERAL PARA MENU PRINCIPAL +++++++++++++++++++++++++++
    def main_menu(self):
        o = '0'
        while o != '7':
            self.view.main_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.pelicula_menu()
            elif o == '2':
                self.horario_menu()
            elif o == '3':
                self.sala_menu()
            elif o == '4':
                self.ticket_menu()
            elif o == '5':
                self.usuario_menu()
            elif o == '6':
                self.admin_menu()
            elif o == '7':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def update_lists(
        self, fs, vs
    ):  #ACTUALIZACIONES, QUITA LOS CAMPOS EN LOS QUE NO SE QUIERA MODIFICAR ALGO (STRING VACIO)
        fields = []
        vals = []
        for f, v in zip(fs, vs):  #UNE EL VALOR DE CADA UNA DE LAS LISTAS
            if (v != ''):
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    # ++++++++++++++++++++++++++++ CONTROLADOR PARA USUARIOS ++++++++++++++++++++++++++++
    def usuario_menu(self):
        o = '0'
        while (o != '7'):
            self.view.usuario_menu()
            self.view.option('7')
            o = input()
            if (o == '1'):
                self.create_usuario()
            elif (o == '2'):
                self.read_a_usuario()
            elif (o == '3'):
                self.read_all_usuario()
            elif (o == '4'):
                self.read_usuario_nombre()
            elif (o == '5'):
                self.update_usuario()
            elif (o == '6'):
                self.delete_usuario()
            elif (o == '7'):
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def ask_usuario(self):  #PREGUNTA LA INFORMACION
        self.view.ask('NOMBRE: ')
        Nombre = input()
        self.view.ask('APELLIDO PATERNO: ')
        Apellido_Paterno = input()
        self.view.ask('APELLIDO MATERNO: ')
        Apellido_Materno = input()
        self.view.ask('CORREO ELECTRONICO: ')
        Correo_Electronico = input()
        self.view.ask('CONTRASENIA: ')
        Contrasenia = input()
        return [
            Nombre, Apellido_Paterno, Apellido_Materno, Correo_Electronico,
            Contrasenia
        ]

    def create_usuario(self):  #RECIBE LA INFORMACION (SE CREA)
        Nombre, Apellido_Paterno, Apellido_Materno, Correo_Electronico, Contrasenia = self.ask_usuario(
        )
        out = self.model.create_usuario(Nombre, Apellido_Paterno,
                                        Apellido_Materno, Correo_Electronico,
                                        Contrasenia)  #EJECUTAR LAS OPERACIONES
        if out == True:
            self.view.ok(
                Nombre + ' ' + Apellido_Paterno + ' ' + Apellido_Materno,
                'AGREGO')
        else:
            self.view.error('NO SE PUDO AGREGAR EL USUARIO')
        return

    def read_a_usuario(self):
        self.view.ask('ID USUARIO: ')
        ID_Usuario = input()
        usuario = self.model.read_a_usuario(ID_Usuario)
        if type(usuario) == tuple:
            self.view.show_usuario_header(' DATOS DEL USUARIO ' + ID_Usuario +
                                          ' ')
            self.view.show_a_usuario(usuario)
            self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            if usuario == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('ERROR AL LEER EL USUARIO')
        return

    def read_all_usuario(self):
        usuario = self.model.read_all_usuario()
        if type(usuario) == list:
            self.view.show_usuario_header(' TODOS LOS USUARIOS ')
            for usuario in usuario:
                self.view.show_a_usuario(usuario)
                self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            self.view.error('ERROR AL LEER EL USUARIO')
        return

    def read_usuario_nombre(self):
        self.view.ask('USUARIO A BUSCAR: ')
        nombre = input()
        usuario = self.model.read_usuario_nombre(nombre)
        if type(usuario) == list:
            self.view.show_usuario_header(' Usuario ' + nombre + ' ')
            for usuario in usuario:
                self.view.show_a_usuario(usuario)
                self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            self.view.error('ERROR AL LEER EL USUARIO')
        return

    def update_usuario(self):
        self.view.ask('ID DEL USUARIO A MODIFICAR: ')
        ID_Usuario = input()
        usuario = self.model.read_a_usuario(ID_Usuario)
        if type(usuario) == tuple:
            self.view.show_usuario_header(' DATOS DEL USUARIO ' + ID_Usuario +
                                          ' ')
            self.view.show_a_usuario(usuario)
            self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            if usuario == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('ERROR AL LEER EL USUARIO')
            return
        self.view.msg(
            'INGRESA LOS VALORES A MODIFICAR (VACIO PARA DEJARLO IGUAL):')
        whole_vals = self.ask_usuario()
        fields, vals = self.update_lists([
            'Nombre', 'Apellido_Paterno', 'Apellido_Materno',
            'Correo_Electronico', 'Contrasenia'
        ], whole_vals)
        vals.append(ID_Usuario)
        vals = tuple(vals)
        out = self.model.update_usuario(fields, vals)
        if out == True:
            self.view.ok(ID_Usuario, 'ACTUALIZO')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL USUARIO')
        return

    def delete_usuario(self):
        self.view.ask('ID DEL USUARIO A BORRAR: ')
        ID_Usuario = input()
        count = self.model.delete_usuario(ID_Usuario)
        if count != 0:
            self.view.ok(ID_Usuario, 'BORRO')
        else:
            if count == 0:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('ERROR AL BORRAR EL USUARIO')
        return

    # ++++++++++++++++++++++++++++ CONTROLADOR PARA ADMINISTRADORES ++++++++++++++++++++++++++++
    def admin_menu(self):
        o = '0'
        while (o != '7'):
            self.view.admin_menu()
            self.view.option('7')
            o = input()
            if (o == '1'):
                self.create_admin()
            elif (o == '2'):
                self.read_a_admin()
            elif (o == '3'):
                self.read_all_admin()
            elif (o == '4'):
                self.read_admin_nombre()
            elif (o == '5'):
                self.update_admin()
            elif (o == '6'):
                self.delete_admin()
            elif (o == '7'):
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def ask_admin(self):
        self.view.ask('CONTRASENIA: ')
        Contrasenia = input()
        self.view.ask('NOMBRE: ')
        Nombre = input()
        self.view.ask('APELLIDO PATERNO: ')
        Apellido_Paterno = input()
        self.view.ask('APELLIDO MATERNO: ')
        Apellido_Materno = input()
        self.view.ask('PUESTO: ')
        Puesto = input()
        return [
            Contrasenia, Nombre, Apellido_Paterno, Apellido_Materno, Puesto
        ]

    def create_admin(self):
        Contrasenia, Nombre, Apellido_Paterno, Apellido_Materno, Puesto = self.ask_admin(
        )
        out = self.model.create_usuario(Contrasenia, Nombre, Apellido_Paterno,
                                        Apellido_Materno, Puesto)
        if out == True:
            self.view.ok(
                Nombre + ' ' + Apellido_Paterno + ' ' + Apellido_Materno,
                'AGREGO')
        else:
            self.view.error('NO SE PUDO AGREGAR EL ADMINISTRADOR')
        return

    def read_a_admin(self):
        self.view.ask('ID ADMINISTRADOR: ')
        ID_Administrador = input()
        admin = self.model.read_a_admin(ID_Administrador)
        if type(admin) == tuple:
            self.view.show_admin_header(' DATOS DEL ADMINISTRADOR ' +
                                        ID_Administrador + ' ')
            self.view.show_a_admin(admin)
            self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            if admin == None:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('ERROR AL LEER EL ADMINISTRADOR')
        return

    def read_all_admin(self):
        admin = self.model.read_all_admin()
        if type(admin) == list:
            self.view.show_admin_header(' TODOS LOS ADMINISTRADORES ')
            for admin in admin:
                self.view.show_a_admin(admin)
                self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            self.view.error('ERROR AL LEER EL ADMINISTRADOR')
        return

    def read_admin_nombre(self):
        self.view.ask('ADMINISTRADOR A BUSCAR: ')
        nombre = input()
        admin = self.model.read_admin_nombre(nombre)
        if type(admin) == list:
            self.view.show_admin_header(' Administrador ' + nombre + ' ')
            for admin in admin:
                self.view.show_a_admin(admin)
                self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            self.view.error('ERROR AL LEER EL ADMINISTRADOR')
        return

    def update_admin(self):
        self.view.ask('ID DEL ADMINISTRADOR A MODIFICAR: ')
        ID_Administrador = input()
        admin = self.model.read_a_admin(ID_Administrador)
        if type(admin) == tuple:
            self.view.show_admin_header(' DATOS DEL ADMINISTRADOR ' +
                                        ID_Administrador + ' ')
            self.view.show_a_admin(admin)
            self.view.show_admin_midder()
            self.view.show_admin_footer()
        else:
            if admin == None:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('ERROR AL LEER EL ADMINISTRADOR')
            return
        self.view.msg(
            'INGRESA LOS VALORES A MODIFICAR (VACIO PARA DEJARLO IGUAL):')
        whole_vals = self.ask_admin()
        fields, vals = self.update_lists([
            'Contrasenia', 'Nombre', 'Apellido_Paterno', 'Apellido_Materno',
            'Puesto'
        ], whole_vals)
        vals.append(ID_Administrador)
        vals = tuple(vals)
        out = self.model.update_admin(fields, vals)
        if out == True:
            self.view.ok(ID_Administrador, 'ACTUALIZO')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL ADMINISTRADOR')
        return

    def delete_admin(self):
        self.view.ask('ID DEL ADMINISTRADOR A BORRAR: ')
        ID_Administrador = input()
        count = self.model.delete_admin(ID_Administrador)
        if count != 0:
            self.view.ok(ID_Administrador, 'BORRO')
        else:
            if count == 0:
                self.view.error('EL ADMINISTRADOR NO EXISTE')
            else:
                self.view.error('ERROR AL BORRAR EL ADMINISTRADOR')
        return

    # ++++++++++++++++++++++++++++ CONTROLADOR PARA PELICULAS ++++++++++++++++++++++++++++
    def pelicula_menu(self):
        o = '0'
        while (o != '7'):
            self.view.pelicula_menu()
            self.view.option('7')
            o = input()
            if (o == '1'):
                self.create_pelicula()
            elif (o == '2'):
                self.read_a_pelicula()
            elif (o == '3'):
                self.read_all_pelicula()
            elif (o == '4'):
                self.read_pelicula_nombre()
            elif (o == '5'):
                self.update_pelicula()
            elif (o == '6'):
                self.delete_pelicula()
            elif (o == '7'):
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def ask_pelicula(self):
        self.view.ask('NOMBRE: ')
        Nombre = input()
        self.view.ask('CLASIFICACION: ')
        Clasificacion = input()
        self.view.ask('DURACION: ')
        Duracion = input()
        self.view.ask('GENERO: ')
        Genero = input()
        self.view.ask('SINOPSIS: ')
        Sinopsis = input()
        return [Nombre, Clasificacion, Duracion, Genero, Sinopsis]

    def create_pelicula(self):
        Nombre, Clasificacion, Duracion, Genero, Sinopsis = self.ask_pelicula()
        out = self.model.create_pelicula(Nombre, Clasificacion, Duracion,
                                         Genero, Sinopsis)
        if out == True:
            self.view.ok(Nombre, 'AGREGO')
        else:
            self.view.error('NO SE PUDO AGREGAR LA PELICULA')
        return

    def read_a_pelicula(self):
        self.view.ask('ID PELICULA: ')
        ID_Pelicula = input()
        pelicula = self.model.read_a_pelicula(ID_Pelicula)
        if type(pelicula) == tuple:
            self.view.show_pelicula_header('DATOS DE LA PELICULA ' +
                                           ID_Pelicula + ' ')
            self.view.show_a_pelicula(pelicula)
            self.view.show_pelicula_midder()
            self.view.show_pelicula_footer()
        else:
            if pelicula == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('ERROR AL LEER LA PELICULA')
        return

    def read_all_pelicula(self):
        pelicula = self.model.read_all_pelicula()
        if type(pelicula) == list:
            self.view.show_pelicula_header(' TODAS LAS PELICULAS ')
            for pelicula in pelicula:
                self.view.show_a_pelicula(pelicula)
            self.view.show_pelicula_midder()
            self.view.show_pelicula_footer()
        else:
            self.view.error('ERROR AL LEER LA PELICULA')
        return

    def read_pelicula_nombre(self):
        self.view.ask('PELICULA A BUSCAR: ')
        nombre = input()
        pelicula = self.model.read_pelicula_nombre(nombre)
        if type(pelicula) == list:
            self.view.show_pelicula_header('Pelicula' + nombre + ' ')
            for pelicula in pelicula:
                self.view.show_a_pelicula(pelicula)
            self.view.show_pelicula_midder()
            self.view.show_pelicula_footer()
        else:
            self.view.error('ERROR AL LEER LA PELICULA')
        return

    def update_pelicula(self):
        self.view.ask('ID DE LA PELICULA A MODIFICAR: ')
        ID_Pelicula = input()
        pelicula = self.model.read_a_pelicula(ID_Pelicula)
        if type(pelicula) == tuple:
            self.view.show_pelicula_header(' DATOS DE LA PELICULA ' +
                                           ID_Pelicula + ' ')
            self.view.show_a_pelicula(pelicula)
            self.view.show_pelicula_midder()
            self.view.show_pelicula_footer()
        else:
            if pelicula == None:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('ERROR AL LEER LA PELICULA')
            return
        self.view.msg(
            'INGRESA LOS VALORES A MODIFICAR (VACIO PARA DEJARLO IGUAL):')
        whole_vals = self.ask_pelicula()
        fields, vals = self.update_lists(
            ['Nombre', 'Clasificacion', 'Duracion', 'Genero', 'Sinopsis'],
            whole_vals)
        vals.append(ID_Pelicula)
        vals = tuple(vals)
        out = self.model.update_pelicula(fields, vals)
        if out == True:
            self.view.ok(ID_Pelicula, 'ACTUALIZO')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA PELICULA')
        return

    def delete_pelicula(self):
        self.view.ask('ID DE LA PELICULA A BORRAR: ')
        ID_Pelicula = input()
        count = self.model.delete_pelicula(ID_Pelicula)
        if count != 0:
            self.view.ok(ID_Pelicula, 'BORRO')
        else:
            if count == 0:
                self.view.error('LA PELICULA NO EXISTE')
            else:
                self.view.error('ERROR AL BORRAR LA PELICULA')
        return

    # ++++++++++++++++++++++++++++ CONTROLADOR PARA HORARIOS ++++++++++++++++++++++++++++
    def horario_menu(self):
        o = '0'
        while (o != '6'):
            self.view.horario_menu()
            self.view.option('6')
            o = input()
            if (o == '1'):
                self.create_horario()
            elif (o == '2'):
                self.read_a_horario()
            elif (o == '3'):
                self.read_all_horario()
            elif (o == '4'):
                self.update_horario()
            elif (o == '5'):
                self.delete_horario()
            elif (o == '6'):
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def ask_horario(self):
        self.view.ask('ID PELICULA: ')
        ID_Pelicula = input()
        self.view.ask('HORA: ')
        Hora = input()
        self.view.ask('FECHA: ')
        Fecha = input()
        return [ID_Pelicula, Hora, Fecha]

    def create_horario(self):
        ID_Pelicula, Hora, Fecha = self.ask_horario()
        out = self.model.create_horario(ID_Pelicula, Hora, Fecha)
        if out == True:
            self.view.ok(Hora, 'AGREGO')
        else:
            self.view.error('NO SE PUDO AGREGAR EL HORARIO')
        return

    def read_a_horario(self):
        self.view.ask('ID HORARIO: ')
        ID_Horario = input()
        horario = self.model.read_a_horario(ID_Horario)
        if type(horario) == tuple:
            self.view.show_horario_header('DATOS DEL HORARIO ' + ID_Horario +
                                          ' ')
            self.view.show_a_horario(horario)
            self.view.show_horario_midder()
            self.view.show_horario_footer()
        else:
            if horario == None:
                self.view.error('EL HORARIO NO EXISTE')
            else:
                self.view.error('ERROR AL LEER EL HORARIO')
        return

    def read_all_horario(self):
        horario = self.model.read_all_horario()
        if type(horario) == list:
            self.view.show_horario_header(' TODOS LOS HORARIOS ')
            for horario in horario:
                self.view.show_a_horario(horario)
            self.view.show_horario_midder()
            self.view.show_horario_footer()
        else:
            self.view.error('ERROR AL LEER EL HORARIO')
        return

    def update_horario(self):
        self.view.ask('ID DEL HORARIO A MODIFICAR: ')
        ID_Horario = input()
        horario = self.model.read_a_horario(ID_Horario)
        if type(horario) == tuple:
            self.view.show_horario_header(' DATOS DEL HORARIO ' + ID_Horario +
                                          ' ')
            self.view.show_a_horario(horario)
            self.view.show_horario_midder()
            self.view.show_horario_footer()
        else:
            if horario == None:
                self.view.error('LA HORA NO EXISTE')
            else:
                self.view.error('ERROR AL LEER LA HORA')
            return
        self.view.msg(
            'INGRESA LOS VALORES A MODIFICAR (VACIO PARA DEJARLO IGUAL):')
        whole_vals = self.ask_horario()
        fields, vals = self.update_lists(['Hora', 'Fecha'], whole_vals)
        vals.append(ID_Horario)
        vals = tuple(vals)
        out = self.model.update_horario(fields, vals)
        if out == True:
            self.view.ok(ID_Horario, 'ACTUALIZO')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA HORA')
        return

    def delete_horario(self):
        self.view.ask('ID DEL HORARIO A BORRAR: ')
        ID_Horario = input()
        count = self.model.delete_horario(ID_Horario)
        if count != 0:
            self.view.ok(ID_Horario, 'BORRO')
        else:
            if count == 0:
                self.view.error('LA HORA NO EXISTE')
            else:
                self.view.error('ERROR AL BORRAR LA HORA')
        return

    # ++++++++++++++++++++++++++++ CONTROLADOR PARA SALAS ++++++++++++++++++++++++++++
    def sala_menu(self):
        o = '0'
        while (o != '7'):
            self.view.sala_menu()
            self.view.option('7')
            o = input()
            if (o == '1'):
                self.create_sala()
            elif (o == '2'):
                self.read_a_sala()
            elif (o == '3'):
                self.read_all_sala()
            elif (o == '4'):
                self.read_sala_numero()
            elif (o == '5'):
                self.update_sala()
            elif (o == '6'):
                self.delete_sala()
            elif (o == '7'):
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def ask_sala(self):
        self.view.ask('ID DE PELICULA: ')
        ID_Pelicula = input()
        self.view.ask('NUMERO DE SALA: ')
        Numero_Sala = input()
        self.view.ask(' TOTAL DE ASIENTOS: ')
        Total_Asientos = input()
        self.view.ask('NUMERO DE ASIENTO: ')
        Numero_Asiento = input()
        self.view.ask(' LETRA DE ASIENTO: ')
        Letra_Asiento = input()
        return [
            ID_Pelicula, Numero_Sala, Total_Asientos, Numero_Asiento,
            Letra_Asiento
        ]

    def create_sala(self):
        ID_Pelicula, Numero_Sala, Total_Asientos, Numero_Asiento, Letra_Asiento = self.ask_sala(
        )
        out = self.model.create_sala(ID_Pelicula, Numero_Sala, Total_Asientos,
                                     Numero_Asiento, Letra_Asiento)
        if out == True:
            self.view.ok(Numero_Sala, 'AGREGO')
        else:
            self.view.error('NO SE PUDO AGREGAR LA SALA')
        return

    def read_a_sala(self):
        self.view.ask('ID SALA: ')
        ID_Sala = input()
        salas = self.model.read_a_sala(ID_Sala)
        if type(salas) == tuple:
            self.view.show_sala_header('DATOS DE LA SALA ' + ID_Sala + ' ')
            self.view.show_a_sala(salas)
            self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            if salas == None:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('ERROR AL LEER LA SALA')
        return

    def read_all_sala(self):
        salas = self.model.read_all_sala()
        if type(salas) == list:
            self.view.show_sala_header(' TODAS LAS SALAS ')
            for sala in salas:
                self.view.show_a_sala(sala)
                self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            self.view.error('ERROR AL LEER LA SALA')
        return

    def read_sala_numero(self):
        self.view.ask('SALA A BUSCAR: ')
        numero = input()
        salas = self.model.read_sala_numero(numero)
        if type(salas) == list:
            self.view.show_sala_header(' SALA' + numero + ' ')
            for sala in sala:
                self.view.show_a_sala(sala)
                self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            self.view.error('ERROR AL LEER LA SALA')
        return

    def update_sala(self):
        self.view.ask('ID DE LA SALA A MODIFICAR: ')
        ID_Sala = input()
        salas = self.model.read_a_sala(ID_Sala)
        if type(salas) == tuple:
            self.view.show_sala_header(' DATOS DE LA SALA ' + ID_Sala + ' ')
            self.view.show_a_sala(salas)
            self.view.show_sala_midder()
            self.view.show_sala_footer()
        else:
            if salas == None:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('ERROR AL LEER LA SALA')
            return
        self.view.msg(
            'INGRESA LOS VALORES A MODIFICAR (VACIO PARA DEJARLO IGUAL):')
        whole_vals = self.ask_sala()
        fields, vals = self.update_lists([
            'ID_Pelicula', 'Numero_Sala', 'Total_Asientos', 'Numero_Asiento',
            'Letra_Asiento'
        ], whole_vals)
        vals.append(ID_Sala)
        vals = tuple(vals)
        out = self.model.update_sala(fields, vals)
        if out == True:
            self.view.ok(ID_Sala, 'ACTUALIZO')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR LA SALA')
        return

    def delete_sala(self):
        self.view.ask('ID DE LA SALA A BORRAR: ')
        ID_Sala = input()
        count = self.model.delete_sala(ID_Sala)
        if count != 0:
            self.view.ok(ID_Sala, 'BORRO')
        else:
            if count == 0:
                self.view.error('LA SALA NO EXISTE')
            else:
                self.view.error('ERROR AL BORRAR LA SALA')
        return

    # +++++++++++++++++ MENU TICKETS ++++++++++++++++++
    def ticket_menu(self):
        print('\n\n')
        print(
            '========================================================================================================'
        )
        print(
            '= = = = =                   ¡ ¡  E N   C O N S T R U C C I Ó N   ! !                           = = = = ='
        )
        print(
            '========================================================================================================'
        )
Пример #44
0
from view.view import View

if __name__ == '__main__':
    view = View()
    view.main_view()
Пример #45
0
class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()

    def start(self):
        self.view.start()
        self.menu()

    def menu(self):
        o = '0'
        while o != '4':
            self.view.menu()
            self.view.opcion('4')
            o = input()
            if o == '1':
                self.view.menu_prestamo()
            elif o == '2':
                self.usuario_menu()
            elif o == '3':
                self.libro_menu()
            elif o == '4':
                self.view.end()
            else:
                self.view.opcion_incorrecta()
        return

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    # Controlador prestamo
    def menu_prestamo(self):
        o = '0'
        while o != '8':
            self.view.menu()
            self.view.opcion('8')
            o = input()
            if o == '1':
                self.nuevo_prestamo()
            elif o == '2':
                self.buscar_prestamo_id()
            elif o == '3':
                self.buscar_prestamo_usuario()
            elif o == '4':
                self.buscar_prestamo_libro()
            elif o == '5':
                self.mostrar_prestamos()
            elif o == '6':
                self.actualizar_prestamo()
            elif o == '7':
                self.eliminar_prestamo()
            elif o == '8':
                return
            else:
                self.view.opcion_incorrecta()
        return

    def preguntar_prestamo(self):
        self.view.pregunta('ID de usuario: ')
        id_usuario = input()
        self.view.pregunta('ID de libro: ')
        id_libro = input()
        self.view.pregunta('Fecha: ')
        fecha = input()
        self.view.pregunta('Estatus: ')
        estatus = input()
        return [id_usuario, id_libro, fecha, estatus]

    def nuevo_prestamo(self):
        vals = self.preguntar_prestamo()
        out = self.model.crear_prestamo(vals[0], vals[1], vals[2], vals[3])
        if out == True:
            self.view.ok('Nuevo Prestamo', 'agregó')
        else:
            self.view.error('No se pudo agregar prestamo')
        return

    def buscar_prestamo_id(self):
        self.view.pregunta('ID del prestamo: ')
        id = input()
        prestamo = self.model.buscar_prestamo_id(id)
        if type(prestamo) == tuple:
            print(prestamo)
        else:
            if prestamo == None:
                self.view.error('No existe ese prestamo con ese ID')
            else:
                self.view.error('Problema al encontrar el prestamo')
        return

    def buscar_prestamo_usuario(self):
        self.view.pregunta('ID del usuario: ')
        id = input()
        prestamo = self.model.buscar_prestamo_usuario(id)
        if type(prestamo) == tuple:
            print(prestamo)
        else:
            if prestamo == None:
                self.view.error('No existen prestamos de ese usuario')
            else:
                self.view.error('Problema al encontrar el prestamo')
        return

    def buscar_prestamo_libro(self):
        self.view.pregunta('ID del libro: ')
        id = input()
        prestamo = self.model.buscar_prestamo_libro(id)
        if type(prestamo) == tuple:
            print(prestamo)
        else:
            if prestamo == None:
                self.view.error('No existen prestamos de ese libro')
            else:
                self.view.error('Problema al encontrar el prestamo')
        return

    def mostrar_prestamos(self):
        prestamo = self.model.buscar_todos_prestamos()
        if type(prestamo) == tuple:
            print(prestamo)
        else:
            if prestamo == None:
                self.view.error('No existen prestamos')
            else:
                self.view.error('Problema al encontrar el prestamo')
        return

    def actualizar_prestamo(self):
        self.view.pregunta('ID de prestamo: ')
        id = input()
        prestamo = self.model.buscar_prestamo_id(id)
        if type(prestamo) == tuple:
            print(prestamo)
        else:
            if prestamo == None:
                self.view.error('No existe ese prestamo')
            else:
                self.view.error('Problema al encontrar el prestamo')
            return
        self.view.msg('Ingresa los valores a modificar:')
        todos = self.preguntar_prestamo()
        fields, vals = self.update_lists(
            ['usuario_id', 'libro_id', 'fecha', 'estatus'], todos)
        vals.append(id)
        vals = tuple(vals)
        out = self.model.actualizar_prestamo(fields, vals)
        if out == True:
            self.view.ok(id, 'Actualizado')
        else:
            self.view.error('No se pudo actualizar el prestamo')
        return

    def eliminar_prestamo(self):
        self.view.pregunta('ID de prestamo a eliminar: ')
        id = input()
        count = self.model.eliminar_prestamo(id)
        if count != 0:
            self.view.ok(id, 'eliminado')
        else:
            if count == 0:
                self.view.error('Prestamo no existe')
            else:
                self.view.error('Problema al eliminar el prestamo')

    # Controlador para libro
    def libro_menu(self):
        o = '0'
        while o != '7':
            self.view.menu_libro()
            self.view.opcion('7')
            o = input()
            if o == '1':
                self.crear_libro()
            elif o == '2':
                self.buscar_libro()
            elif o == '3':
                self.buscar_libro_titulo()
            elif o == '4':
                self.buscar_todos_libros()
            elif o == '5':
                self.actualizar_libro()
            elif o == '6':
                self.eliminar_libro()
            elif o == '7':
                return

    def preguntar_libro(self):
        self.view.pregunta('Titulo: ')
        titulo = input()
        self.view.pregunta('Autor: ')
        autor = input()
        self.view.pregunta('Editorial: ')
        editorial = input()
        self.view.pregunta('Numero de paginas: ')
        no_paginas = input()
        self.view.pregunta('Genero: ')
        genero_id = input()
        self.view.pregunta('Cantidad de libros: ')
        cantidad = input()
        self.view.pregunta('Libros disponibles ')
        disponible = input()
        return [
            titulo, autor, editorial, no_paginas, genero_id, cantidad,
            disponible
        ]

    def crear_libro(self):
        titulo, autor, editorial, no_paginas, genero_id, cantidad, disponible = self.preguntar_libro(
        )
        out = self.model.crear_libro(titulo, autor, editorial, no_paginas,
                                     genero_id, cantidad, disponible)
        if out == True:
            self.view.ok(titulo, 'agrego')
        else:
            if out.errno == 1062:
                self.view.error('EL LIBRO ESTA REPETIDO')
            else:
                self.view.error('NO SE PUDO AGREGAR EL LIBRO. REVISA.')
        return

    def buscar_libro(self):
        self.view.pregunta('ID libro: ')
        libro_id = input()
        libro = self.model.buscar_libro(libro_id)
        if type(libro) == tuple:
            self.view.show_libro_header(' Datos del libro ' + libro_id + ' ')
            self.view.show_libro(libro)
            self.view.show_libro_midder()
            self.view.show_libro_footer()
        else:
            if libro == None:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
        return

    def buscar_libro_titulo(self):
        self.view.pregunta('Titulo: ')
        titulo = input()
        libro = self.model.buscar_libro_titulo(titulo)
        if type(libro) == tuple:
            self.view.show_libro_header(' Datos del libro ' + titulo + ' ')
            self.view.show_libro(libro)
            self.view.show_libro_midder()
            self.view.show_libro_footer()
        else:
            if libro == None:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
        return

    def buscar_todos_libros(self):
        libros = self.model.buscar_todos_libros()
        if type(libros) == list:
            self.view.show_libro_header(' Todos los libros ')
            for libro in libros:
                self.view.show_libro(libro)
                self.view.show_libro_midder()
            self.view.show_libro_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS LIBROS. REVISA')
        return

    def actualizar_libro(self):
        self.view.pregunta('ID libro: ')
        libro_id = input()
        libro = self.model.buscar_libro(libro_id)
        if type(libro) == tuple:
            self.view.show_libro_header(' Datos del libro ' + libro_id + ' ')
            self.view.show_libro(libro)
            self.view.show_libro_midder()
            self.view.show_libro_footer()
        else:
            if libro == None:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar(vacio para dejarlo igual)')
        whole_vals = self.preguntar_libro()
        fields, vals = self.update_lists([
            'titulo', 'autor', 'editorial', 'no_paginas', 'genero_id',
            'cantidad', 'disponible'
        ], whole_vals)
        vals.append(libro_id)
        vals = tuple(vals)
        out = self.model.actualizar_libro(fields, vals)
        if out == True:
            self.view.ok(libro_id, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL LIBRO. REVISA')
        return

    def eliminar_libro(self):
        self.view.pregunta('ID libro: ')
        libro_id = input()
        count = self.model.eliminar_libro(libro_id)
        if count != 0:
            self.view.ok(libro_id, 'borro')
        else:
            if count == 0:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL LIBRO. REVISA.')
        return

    # Controlador para usuarios
    def usuario_menu(self):
        o = '0'
        while o != '7':
            self.view.menu_usuario()
            self.view.opcion('7')
            o = input()
            if o == '1':
                self.crear_usuario()
            elif o == '2':
                self.buscar_usuario()
            elif o == '3':
                self.buscar_usuario_tel()
            elif o == '4':
                self.buscar_todos_usuarios()
            elif o == '5':
                self.actualizar_usuario()
            elif o == '6':
                self.eliminar_usuario()
            elif o == '7':
                return

    def preguntar_usuario(self):
        self.view.pregunta('Nombre: ')
        nombre_completo = input()
        self.view.pregunta('Email: ')
        email = input()
        self.view.pregunta('Telefono: ')
        telefono = input()
        return [nombre_completo, email, telefono]

    def crear_usuario(self):
        nombre_completo, email, telefono = self.preguntar_usuario()
        out = self.model.crear_usuario(nombre_completo, email, telefono)
        if out == True:
            self.view.ok(nombre_completo, 'agrego')
        else:
            if out.errno == 1062:
                self.view.error('EL USUARIO ESTA REPETIDO')
            else:
                self.view.error('NO SE PUDO AGREGAR EL USUARIO. REVISA.')
        return

    def buscar_usuario(self):
        self.view.pregunta('ID usuario: ')
        usuario_id = input()
        usuario = self.model.buscar_usuario(usuario_id)
        if type(usuario) == tuple:
            self.view.show_usuario_header(' Datos del libro ' + usuario_id +
                                          ' ')
            self.view.show_usuario(usuario)
            self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            if usuario_id == None:
                self.view.error('EL LIBRO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL LIBRO. REVISA.')
        return

    def buscar_usuario_tel(self):
        self.view.pregunta('Telefono: ')
        telefono = input()
        usuario = self.model.buscar_usuario_tel(telefono)
        if type(usuario) == tuple:
            self.view.show_usuario_header(' Datos del usuario ' + telefono +
                                          ' ')
            self.view.show_usuario(usuario)
            self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            if usuario == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL USUARIO. REVISA.')
        return

    def buscar_todos_usuarios(self):
        usuarios = self.model.buscar_todos_usuarios()
        if type(usuarios) == list:
            self.view.show_usuario_header(' Todos los usuarios ')
            for usuario in usuarios:
                self.view.show_usuario(usuario)
                self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS USUARIOS. REVISA')
        return

    def actualizar_usuario(self):
        self.view.pregunta('ID usuario: ')
        usuario_id = input()
        usuario = self.model.buscar_usuario(usuario_id)
        if type(usuario) == tuple:
            self.view.show_usuario_header(' Datos del usuario ' + usuario_id +
                                          ' ')
            self.view.show_usuario(usuario)
            self.view.show_usuario_midder()
            self.view.show_usuario_footer()
        else:
            if usuario == None:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER EL USUARIO. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar(vacio para dejarlo igual)')
        whole_vals = self.preguntar_usuario()
        fields, vals = self.update_lists(
            ['nombre_completo', 'email', 'telefono'], whole_vals)
        vals.append(usuario_id)
        vals = tuple(vals)
        out = self.model.actualizar_usuario(fields, vals)
        if out == True:
            self.view.ok(usuario_id, 'actualizo')
        else:
            self.view.error('NO SE PUDO ACTUALIZAR EL USUARIO. REVISA')
        return

    def eliminar_usuario(self):
        self.view.pregunta('ID usuario: ')
        usuario_id = input()
        count = self.model.eliminar_usuario(usuario_id)
        if count != 0:
            self.view.ok(usuario_id, 'borro')
        else:
            if count == 0:
                self.view.error('EL USUARIO NO EXISTE')
            else:
                self.view.error('PROBLEMA AL BORRAR EL USUARIO. REVISA.')
        return
Пример #46
0
from model import KutuluModel
from view.view import View


if __name__ == '__main__':
    model = KutuluModel()
    view = View(model)
    game_must_go_on = True

    while (game_must_go_on):
        if not view.loop():
            break
        game_must_go_on = model.make_turn()
        view.clock.tick(10)
    else:
        model.finish()
Пример #47
0


if __name__ == '__main__':
    try:
        QCoreApplication.setLibraryPaths(['C:\\Users\\lidingke\\Envs\\py34qt5\\Lib\\site-packages\\PyQt5\\plugins'])
    except Exception as e:
        pass

    app         = QApplication(sys.argv)
    pt = QPalette()
    pt.setColor(QPalette.Background , QColor(239,246,250))
    # pt.setColor(QPalette.Button, QColor(239,246,250))
    pt.setColor(QPalette.ButtonText, QColor(34,39,42))
    # pt.setColor(QPalette.WindowText, QColor(34,39,42))
    pt.setColor(QPalette.Highlight, QColor(74,149,184))

    app.setPalette(pt)
    font = app.font()
    font.setPointSize(10)
    font.setFamily('微软雅黑')

    app.setFont(font)

    gui         = View()

    presenter   = Presenter(gui)
    gui.show()

    sys.exit(app.exec_())
Пример #48
0
class Controller:
    # Constructor
    def __init__(self):
        self.model = Model()
        self.view = View()

    #Contacto Controllers
    def agregar_contacto(self, id_contacto, nombre, tel, correo, dir):
        e, c = self.model.agregar_contacto(id_contacto, nombre, tel, correo,
                                           dir)
        if e:
            self.view.agregar_contacto(c)
        else:
            self.view.contacto_ya_existe(c)

    def leer_contacto(self, id_contacto):
        e, c = self.model.leer_contactos(id_contacto)
        if e:
            self.view.mostrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_todos_contactos(self):
        c = self.model.leer_todos_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_contacto(self,
                            id_contacto,
                            n_nombre='',
                            n_tel='',
                            n_correo='',
                            n_dir=''):
        e = self.model.actualizar_contacto(id_contacto, n_nombre, n_tel,
                                           n_correo, n_dir)
        if e:
            self.view.actualizar_contacto(id_contacto)
        else:
            self.view.contacto_no_existe(id_contacto)

    def borrar_contacto(self, id_contacto):
        e, c = self.model.borrar_contacto(id_contacto)
        if e:
            self.view.borrar_contacto(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_contactos_letra(self, letra):
        c = self.model.leer_contactos_letra(letra)
        self.view.mostrar_contactos(c)

    #----------------- Citas Controller ----------------------------#
    def agregar_cita(self, id_cita, id_contacto, lugar, fecha, hora, asunto):
        e, c = self.model.agregar_cita(id_cita, id_contacto, lugar, fecha,
                                       hora, asunto)
        if e:
            self.view.agregar_cita(c)
        else:
            self.view.cita_no_existe(c)

    def leer_cita(self, id_cita):
        e, c = self.model.leer_cita(id_cita)
        if e:
            self.view.mostrar_cita(c)
        else:
            self.view.cita_no_existe(id_cita)

    def leer_todos_citas(self):
        c = self.model.leer_todos_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_Cita(self,
                        id_cita,
                        id_ncontacto='',
                        n_lugar='',
                        n_fecha='',
                        n_hora='',
                        n_asunto=''):
        e = self.model.actualizar_Cita(id_cita, id_ncontacto, n_lugar, n_fecha,
                                       n_hora, n_asunto)
        if e:
            self.view.actualizar_contacto(id_cita)
        else:
            self.view.contacto_no_existe(id_cita)

    def borrar_cita(self, id_cita):
        e, c = self.model.borrar_cita(id_cita)
        if e:
            self.view.borrar_cita(c)
        else:
            self.view.cita_no_existe(id_cita)

    def buscar_cita(self, fecha):
        c = self.model.buscar_cita(fecha)
        self.view.mostrar_cita(c)

    # General methods
    def insertar_contactos(self):
        self.agregar_contacto(1, 'Francisco Zárate', '473-162-1246',
                              '*****@*****.**', 'Juan Rojas Gonzales')
        self.agregar_contacto(2, 'Carlos Canno', '464-145-1835',
                              '*****@*****.**', 'Vulcano')
        self.agregar_contacto(3, 'Jonathan Hernandez', '464-132-1235',
                              '*****@*****.**', 'Arteaga no 6')
        '''
    def insertar_citas(self):
        self.agregar_cita(1, 1, 'Dicis', '17/02/2020', '15:30', 'Sistemas')
        self.agregar_cita(2, 2, 'Escuela', '20/11/2020', '20:30', 'NLP')
        self.agregar_cita(3, 1, 'Centro', '18/03/2020', '13:30', 'Trabajo')
        '''

    def start(self):
        # Display a welcome message
        self.view.start()

        # Insertar data in model
        self.insertar_contactos()
        #self.insertar_citas()

        #Show all contacts in DB
        self.leer_todos_contactos()
        #self.leer_contactos_letra('a')

    def write_contact(self):
        id = input("ID: ")
        n = str(input("Ingrese nombre: "))
        t = str(input("Ingrese telefono: "))
        c = str(input("Ingrese correo: "))
        d = str(input("Direccion: "))

        self.agregar_contacto(id, n, t, c, d)

    def search_contacto(self):
        letra = str(input('Ingresa letra a buscar: '))
        self.leer_contactos_letra(letra)

    def delete_contacto(self):
        id = input("Id contacto a borrar: ")
        self.borrar_contacto(id)

    def update_contaco(self):
        print("Si no desea modificar alguna parte del contacto presiona enter")
        id_contacto = input("Inserte el id del contacto que desea modificar:")
        n_nombre = str(input("Inserte el nuevo nombre:"))
        n_tel = str(input("Inserte el nuevo telefono:"))
        n_correo = str(input("Inserte el nuevo correo:"))
        n_dir = str(input("Inserte el nuevo direccion:"))
        self.actualizar_contacto(id_contacto, n_nombre, n_tel, n_correo, n_dir)

    def menu(self):
        #Display menu
        self.view.menu()
        o = input('Selecciona una opcion (1-9): ')

        if o == '1':
            self.write_contact()
        elif o == '2':
            self.search_contacto()
        elif o == '3':
            self.update_contaco()
        elif o == '4':
            pass
        elif o == '5':
            pass
        elif o == '6':
            pass
        elif o == '7':
            pass
        elif o == '8':
            pass
        elif o == '9':
            self.view.end()
        else:
            self.view.opcion_no_valida()
import sys

sys.path.append("..")

import json
import time

from model.model import Model
from view.view import View
from service.service import Service
from data.data import Data

model = Model()
view = View()
service = Service()
data = Data()


class Controller:
    def matchFunction(self, customerChoice):
        checkToExit = 0

        if (customerChoice == 1):
            option = view.printListByOption()
            if (option == 1):
                model.getDataFromDatabase()
            elif (option == 2):
                model.getDataFromDatabasePassExam()
            input("Press enter to continue...")
            checkToExit = True
Пример #50
0
class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()

    def start(self):
        self.view.start()
        print('1) Admin menu')
        print('2) User menu')
        print('3) Exit')
        op = input()
        if op == '1':
            self.admin_menu()
        elif op == '2':
            self.user_main_menu()
        elif op == '3':
            self.view.end()
        else:
            self.view.not_valid_option()
        return

    def main_menu(self):
        o = '0'
        while o != '6':
            self.view.logged_admin_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.admin_menu()
            elif o == '2':
                self.movie_menu()
            elif o == '3':
                self.hall_menu()
            elif o == '4':
                self.seat_menu()
            elif o == '5':
                self.schedule_menu()
            elif o == '6':
                self.start()
            else:
                self.view.not_valid_option()
        return

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    def admin_submenu(self):
        o = '0'
        while o != '6':
            self.view.admin_submenu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.create_admin()
            elif o == '2':
                self.read_all_admin()
            elif o == '3':
                self.read_admin_name()
            elif o == '4':
                self.update_admin()
            elif o == '5':
                self.delete_admin()
            else:
                self.view.not_valid_option()
        return

    def user_main_menu(self):
        o = '0'
        while o != '5':
            self.view.user_main_menu()
            self.view.option('5')
            o = input()
            if o == '1':
                self.user_menu()
            elif o == '2':
                self.user_main_menu_schedule()
            elif o == '3':
                self.start()
            else:
                self.view.not_valid_option()
        return

    def ask_admin(self):
        self.view.ask('Name: ')
        a_name = input()
        self.view.ask('Last name: ')
        a_lastName = input()
        self.view.ask('Email: ')
        a_email = input()
        self.view.ask('Phone: ')
        a_phone = input()
        return [a_name, a_lastName, a_email, a_phone]

    def create_admin(self):
        a_name, a_lastName, a_email, a_phone = self.ask_admin()
        out = self.model.create_admin(a_name, a_lastName, a_email, a_phone)
        if out == True:
            self.view.ok(a_name + ' ' + a_lastName, ' added')
        else:
            self.view.error('The user could not be added')
        return

    def read_admin(self, id_admin):

        admin = self.model.read_admin(id_admin)
        if type(admin) == tuple:
            self.view.show_admin_header('Info from Admin: ' + id_admin + ' ')
            self.view.show_a_admin(admin)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if dir == None:
                self.view.error('The admin with this ID doesnt exist')
            else:
                self.view.error(
                    'A problem ocurred when reading the admin register')
        return

    def read_all_admin(self):
        admins = self.model.read_all_admin()
        if type(admins) == list:
            self.view.show_admin_header(' All Admins ')
            for admin in admins:
                self.view.show_a_admin(admin)
            self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error(
                'A problem ocurred when reading the admin register ')

    def read_admin_name(self):
        self.view.ask('Admin name: ')
        a_name = input()
        a_names = self.model.read_admin_name(a_name)
        if type(a_names) == list:
            self.view.show_admin_header('Admins with name:  ' + a_name + ' ')
            for a_name in a_names:
                self.view.show_a_admin(a_name)
            self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error(
                'A problem ocurred when reading the admin register ')
        return

    def update_admin(self):
        self.view.ask('ID of admin to update: ')
        id_admin = input()
        admin = self.model.read_admin(id_admin)
        if type(admin) == tuple:
            self.view.show_admin_header(' Info from admin ' + id_admin + ' ')
            self.view.show_a_admin(admin)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if admin == None:
                self.view.error('The admin doesnt exist')
            else:
                self.view.error(
                    'A problem ocurred when reading the admin register')
            return
        self.view.msg(
            ' Input the new values to update (Leave blank to skip): ')
        whole_vals = self.ask_admin()
        fields, vals = self.update_lists(
            ['a_name', 'a_lastName', 'a_email', 'a_phone'], whole_vals)
        vals.append(id_admin)
        vals = tuple(vals)
        out = self.model.update_admin(fields, vals)
        if out == True:
            self.view.ok(id_admin, 'updated')
        else:
            self.view.error('The admin could not be updated')
        return

    def delete_admin(self):
        self.view.ask('ID of admin to delete: ')
        id_admin = input()
        count = self.model.delete_admin(id_admin)
        if count != 0:
            self.view.ok(id_admin, 'deleted')
        else:
            if count == 0:
                self.view.error('The admin doesnt exist')
            else:
                self.view.error('The admin could not be deleted')
        return

    def user_menu(self):
        o = '0'
        while o != '3':
            self.view.user_menu()
            self.view.option('3')
            o = input()
            if o == '1':
                self.view.ask('User ID: ')
                user_id = input()
                self.login_user(user_id)
            elif o == '2':
                self.create_user()
            elif o == '3':
                self.user_main_menu()
            else:
                self.view.not_valid_option()
        return

    def admin_menu(self):
        o = '0'
        while o != '3':
            self.view.admin_menu()
            self.view.option('3')
            o = input()
            if o == '1':
                self.view.ask('Admin ID: ')
                admin_id = input()
                self.login_admin(admin_id)
            elif o == '2':
                self.create_admin()
            elif o == '3':
                self.start()
            else:
                self.view.not_valid_option()
        return

    def login_user(self, user_id):
        o = '0'
        while o != '5':
            self.read_user(user_id)
            self.view.user_logged()
            o = input()
            if o == '1':
                self.update_user(user_id)
            elif o == '2':
                self.delete_user(user_id)
            elif o == '3':
                self.user_main_menu_schedule()
            elif o == '4':
                self.user_main_menu_tickets(user_id)
            elif o == '5':
                self.user_main_menu()
            else:
                self.view.not_valid_option()
        return

    def login_admin(self, admin_id):
        o = '0'
        while o != '6':
            self.read_admin(admin_id)
            self.view.logged_admin_menu()
            self.view.option('6')
            o = input()
            if o == '1':
                self.admin_submenu()
            elif o == '2':
                self.movie_menu()
            elif o == '3':
                self.hall_menu()
            elif o == '4':
                self.seat_menu()
            elif o == '5':
                self.schedule_menu()
            elif o == '6':
                self.admin_menu()
            else:
                self.view.not_valid_option()
        return

    def ask_user(self):
        self.view.ask('Name: ')
        u_name = input()
        self.view.ask('Last name: ')
        u_lastName = input()
        self.view.ask('Email: ')
        u_email = input()
        self.view.ask('Phone: ')
        u_phone = input()
        return [u_name, u_lastName, u_email, u_phone]

    def create_user(self):
        u_name, u_lastName, u_email, u_phone = self.ask_user()
        out, user = self.model.create_user(u_name, u_lastName, u_email,
                                           u_phone)
        if out == True:
            self.view.ok(
                'User ID: ' + str(user[0]) + ' User name: ' + u_name + ' ' +
                u_lastName, ' added')
        else:
            self.view.error('User could not be added')
        return

    def read_user(self, id_user):

        user = self.model.read_user(id_user)
        if type(user) == tuple:
            self.view.show_user_header('Info from user: '******' ')
            self.view.show_a_user(user)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if dir == None:
                self.view.error('User ID does not exist')
            else:
                self.view.error('There was a problem at reading the user')
        return

    def read_all_user(self):
        users = self.model.read_all_user()
        if type(users) == list:
            self.view.show_user_header(' All users')
            for user in users:
                self.view.show_a_user(user)
            self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the users ')

    def read_user_lname(self):
        self.view.ask('User Last name: ')
        u_lastName = input()
        u_lastNames = self.model.read_user_lname(u_lastName)
        if type(u_lastNames) == list:
            self.view.show_user_header('Users with last name:  ' + u_lastName +
                                       ' ')
            for u_lastName in u_lastNames:
                self.view.show_a_user(u_lastName)
            self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the users ')
        return

    def update_user(self, id_user):
        user = self.model.read_user(id_user)
        if type(user) == tuple:
            self.view.show_user_header(' Info from User ' + id_user + ' ')
            self.view.show_a_user(user)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if user == None:
                self.view.error('The user does not exist')
            else:
                self.view.error('There was a problem at reading the user')
            return
        self.view.msg(
            '  Input the new values to update (Leave blank to skip): ')
        whole_vals = self.ask_admin()
        fields, vals = self.update_lists(
            ['u_name', 'u_lastName', 'u_email', 'u_phone'], whole_vals)
        vals.append(id_user)
        vals = tuple(vals)
        out = self.model.update_user(fields, vals)
        if out == True:
            self.view.ok(id_user, 'updated')
        else:
            self.view.error('The user could not be updated')
        return

    def delete_user(self, id_usuario):
        count = self.model.delete_user(id_usuario)
        if count != 0:
            self.view.ok(id_usuario, 'deleted')
        else:
            if count == 0:
                self.view.error('The user does not exist')
            else:
                self.view.error('The user could not be deleted')
        return

    def movie_menu(self):
        o = '0'
        while o != '7':
            self.view.movie_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.create_movie()
            elif o == '2':
                self.read_a_movie()
            elif o == '3':
                self.read_all_movie()
            elif o == '4':
                self.read_movie_name()
            elif o == '5':
                self.update_movie()
            elif o == '6':
                self.delete_movie()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def user_main_menu_movie(self):
        o = '0'
        while o != '5':
            self.view.user_main_menu_movie()
            self.view.option('5')
            o = input()
            if o == '1':
                self.read_a_movie()
            elif o == '2':
                self.read_all_movie()
            elif o == '3':
                self.read_movie_name()
            elif o == '4':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_movie(self):
        self.view.ask('Title ')
        m_name = input()
        self.view.ask('Duration: ')
        m_duration = input()
        self.view.ask('Language: ')
        m_language = input()
        self.view.ask('Subtitles: ')
        m_subtitles = input()
        return (m_name, m_duration, m_language, m_subtitles)

    def create_movie(self):
        m_name, m_duration, m_language, m_subtitles = self.ask_movie()
        out = self.model.create_movie(m_name, m_duration, m_language,
                                      m_subtitles)
        if out == True:
            self.view.ok(
                m_name + ' in ' + m_language + ' with ' + m_subtitles +
                ' subtitles', 'added')
        else:
            self.view.error('The movie could not be added')
        return

    def read_a_movie(self):
        self.view.ask('Movie ID: ')
        id_movie = input()
        movie = self.model.read_movie(id_movie)
        print(movie)
        if type(movie) == tuple:
            self.view.show_movie_header('Movie ID: ' + id_movie + ' ')
            self.view.show_a_movie(movie)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if movie == None:
                self.view.error('The movie does not exist')
            else:
                self.view.error('There was a problem at reading the movie')
        return

    def read_all_movie(self):
        movies = self.model.read_all_movie()
        if type(movies) == list:
            self.view.show_movie_header(' All movies ')
            for movie in movies:
                self.view.show_a_movie(movie)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the movies')
        return

    def read_movie_name(self):
        self.view.ask('Movie Title: ')
        name = input()
        movies = self.model.read_movie_name(name)
        if type(movies) == list:
            self.view.show_movie_header('Movies with the title: ' + name + ' ')
            for movie in movies:
                self.view.show_a_movie(movie)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the movies')
        return

    def update_movie(self):
        self.view.ask('ID of the movie to update: ')
        id_movie = input()
        movie = self.model.read_movie(id_movie)
        m_name = movie[1]
        if type(movie) == tuple:
            self.view.show_movie_header(' Info from movie ' + m_name +
                                        ' (Movie Id: ' + id_movie + ') ')
            self.view.show_a_movie(movie)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if movie == None:
                self.view.error('The movie does not exist')
            else:
                self.view.error('There was a problem at reading the movie')
        self.view.msg('Input the new values to update (Leave blank to skip): ')
        whole_vals = self.ask_movie()
        fields, vals = self.update_lists(
            ['m_name', 'm_duration', 'm_language', 'm_subtitles'], whole_vals)
        vals.append(id_movie)
        vals = tuple(vals)
        out = self.model.update_movie(fields, vals)
        if out == True:
            self.view.ok(m_name + ' (Movie ID:' + id_movie + ')', ' updated')
        else:
            self.view.error('Error, the movie could not be updated')
        return

    def delete_movie(self):
        self.view.ask('ID of the movie to delete: ')
        id_movie = input()
        movie = self.model.read_movie(id_movie)
        m_name = movie[1]
        count = self.model.delete_movie(id_movie)
        if count != 0:
            self.view.ok(m_name + ' (Movie ID:' + id_movie + ')', ' deleted')
        else:
            if count == 0:
                self.view.error('The movie does not exist')
            else:
                self.view.error('There was a problem at deleting the movie')
        return

    def hall_menu(self):
        o = '0'
        while o != '7':
            self.view.hall_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.create_hall()
            elif o == '2':
                self.read_a_hall()
            elif o == '3':
                self.read_all_hall()
            elif o == '4':
                self.read_hall_seat()
            elif o == '5':
                self.update_hall()
            elif o == '6':
                self.delete_hall()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_hall(self):
        self.view.ask('Number of seats: ')
        h_totalSeat = input()
        return [h_totalSeat]

    def create_hall(self):
        h_totalSeat = self.ask_hall()
        out = self.model.create_hall(h_totalSeat)
        if out == True:
            self.view.ok('The hall ', 'added')
        else:
            self.view.error('The hall could not be added')
        return

    def read_a_hall(self):
        self.view.ask('Hall ID: ')
        id_hall = input()
        hall = self.model.read_hall(id_hall)
        if type(hall) == tuple:
            self.view.show_hall_header('Info from Hall  ' + id_hall + ' ')
            self.view.show_a_hall(hall)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if hall == None:
                self.view.error('The hall does not exist')
            else:
                self.view.error('There was a problem at reading the hall')
        return

    def read_all_hall(self):
        halls = self.model.read_all_hall()
        if type(halls) == list:
            self.view.show_hall_header(' All halls ')
            for hall in halls:
                self.view.show_a_hall(hall)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error(' There was a problem at reading the hall')

    def read_hall_seat(self):
        self.view.ask('Number of seats: ')
        h_totalSeat = input()
        seats = self.model.read_hall_seat(h_totalSeat)
        print(seats)
        if type(seats) == list:
            self.view.show_hall_header('Halls with ' + h_totalSeat + ' seats')
            for seat in seats:
                self.view.show_a_hall(seat)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the halls')
        return

    def update_hall(self):
        self.view.ask('ID of the hall to update: ')
        id_hall = input()
        hall = self.model.read_hall(id_hall)
        if type(hall) == tuple:
            self.view.show_hall_header(' Info from hall ' + id_hall + ' ')
            self.view.show_a_hall(hall)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if hall == None:
                self.view.error('The hall does not exist')
            else:
                self.view.error('There was a problem at reading the hall')
        self.view.msg('Input the new values to update (Leave blank to skip): ')
        whole_vals = self.ask_hall()
        fields, vals = self.update_lists(['h_totalSeat'], whole_vals)
        vals.append(id_hall)
        vals = tuple(vals)
        out = self.model.update_hall(fields, vals)
        if out == True:
            self.view.ok(id_hall, 'updated')
        else:
            self.view.error('Error, the hall could not be updated')
        return

    def delete_hall(self):
        self.view.ask('ID of the hall to delete: ')
        id_hall = input()
        count = self.model.delete_hall(id_hall)
        if count != 0:
            self.view.ok(id_hall, 'deleted')
        else:
            if count == 0:
                self.view.error('The hall does not exist')
            else:
                self.view.error('The was a problem at deleting the hall')
        return

    def seat_menu(self):
        o = '0'
        while o != '9':
            self.view.seat_menu()
            self.view.option('9')
            o = input()
            if o == '1':
                self.create_seat()
            elif o == '2':
                self.read_a_seat()
            elif o == '3':
                self.read_all_seat()
            elif o == '4':
                self.read_disp_seat()
            elif o == '5':
                self.read_seats_hall()
            elif o == '6':
                self.update_seat()
            elif o == '7':
                self.reset_seats()
            elif o == '8':
                self.delete_seat()
            elif o == '9':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_seat(self):
        disp = 0
        self.view.ask('Hall: ')
        se_id_hall = input()
        return [disp, se_id_hall]

    def create_seat(self):
        dis, se_id_hall = self.ask_seat()
        out = self.model.create_seat(dis, se_id_hall)
        if out == True:
            self.view.ok('The seat ', 'added')
        else:
            self.view.error('The seat could not be added')
        return

    def read_a_seat(self):
        self.view.ask('Seat ID: ')
        id_seat = input()
        seat = self.model.read_seat(id_seat)
        if type(seat) == tuple:
            self.view.show_seat_header('Info from seat ' + id_seat + ' ')
            self.view.show_a_seat(seat)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if seat == None:
                self.view.error('The seat does not exist')
            else:
                self.view.error('There was a problem at reading the seat')
        return

    def read_all_seat(self):
        seats = self.model.read_all_seat()
        if type(seats) == list:
            self.view.show_seat_header(' All seats ')
            for seat in seats:
                self.view.show_a_seat(seat)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error(' There was a problem at reading the seats')

    def read_disp_seat(self):
        self.view.ask('Hall: ')
        hall = input()
        self.view.ask('Status (free/taken): ')
        disp = input()

        if (disp == 'free'):
            disp = 0x00
        elif (disp == 'taken'):
            disp = 0x01
        seats = self.model.read_disp_seat(disp, hall)
        print(seats)
        if type(seats) == list:
            if (disp == 0x00):
                self.view.show_seat_header('Availabe seats')
            else:
                self.view.show_seat_header('Not available seats')
            for seat in seats:
                self.view.show_a_seat_disp(seat)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the seats')
        return

    def read_seats_hall(self):
        self.view.ask('Hall ID: ')
        id_hall = input()
        seats = self.model.read_seats_hall(id_hall)
        if type(seats) == list:
            self.view.show_seat_header('Seats from hall ' + id_hall)
            for seat in seats:
                self.view.show_a_seat(seat)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the seat')
        return

    def update_seat(self):
        self.view.ask('Seat to reserve: ')
        id_seat = input()
        seat = self.model.read_seat(id_seat)
        if (seat[1] == 0x01):
            print('The seat is already taken, 1). Try again  | 2). Cancel')
            op = input()
            if (op == '1'):
                self.update_seat()
            else:
                return 0

        if type(seat) == tuple:
            self.view.show_seat_header(' Info from seat' + id_seat + ' ')
            self.view.show_a_seat(seat)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if seat == None:
                self.view.error('The seat does not exist')
            else:
                self.view.error('There was a problem at reading the seat')

        whole_vals = [1, str(seat[2])]
        fields, vals = self.update_lists(['se_status', 'se_id_hall'],
                                         whole_vals)
        vals.append(id_seat)
        vals = tuple(vals)
        out = self.model.update_seat(fields, vals)
        if out == True:
            self.view.ok(id_seat, 'updated')
            return id_seat
        else:
            self.view.error('Error, the seat could not be updated')
        return 0

    def reset_seats(self):
        self.view.ask('Restore seats from hall: ')
        se_id_hall = input()
        seats = self.model.read_seats_hall(se_id_hall)
        if type(seats) == list:
            for seat in seats:
                id_seat = seat[0]
                seat = self.model.read_seat(id_seat)
                whole_vals = [0, str(seat[2])]
                fields, vals = self.update_lists(['se_status', 'se_id_hall'],
                                                 whole_vals)
                vals.append(id_seat)
                vals = tuple(vals)
                out = self.model.update_seat(fields, vals)
                if out != True:
                    self.view.error('Error, the seats could not be updated')
            self.view.ok('the seats', 'restored')
        else:
            self.view.error('There was a problem at reading the seats')
        return

    def delete_seat(self):
        self.view.ask('ID of the seat to delete: ')
        id_seat = input()
        count = self.model.delete_seat(id_seat)
        if count != 0:
            self.view.ok(id_seat, 'deleted')
        else:
            if count == 0:
                self.view.error('The seat does not exist')
            else:
                self.view.error('There was a problem at deleting the seat')
        return

    def schedule_menu(self):
        o = '0'
        while o != '8':
            self.view.schedule_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_schedule()
            elif o == '2':
                self.read_a_schedule()
            elif o == '3':
                self.read_all_schedule()
            elif o == '4':
                self.read_schedule_movie()
            elif o == '5':
                self.read_schedules_date()
            elif o == '6':
                self.update_schedule()
            elif o == '7':
                self.delete_schedule()
            elif o == '8':
                return
            else:
                self.view.not_valid_option()
        return

    def user_main_menu_schedule(self):
        o = '0'
        while o != '5':
            self.view.user_main_menu_schedule()
            self.view.option('5')
            o = input()
            if o == '1':
                self.read_all_schedule()
            elif o == '2':
                self.read_schedule_movie()
            elif o == '3':
                self.read_schedules_date()
            elif o == '4':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_schedule(self):
        self.view.ask('Time: ')
        s_time = input()
        self.view.ask('Date: ')
        s_date = input()
        self.view.ask('Movie ID: ')
        s_id_movie = input()
        self.view.ask('Hall ID: ')
        s_id_hall = input()
        return (s_time, s_date, s_id_movie, s_id_hall)

    def create_schedule(self):
        s_time, s_date, s_id_movie, s_id_hall = self.ask_schedule()
        out = self.model.create_schedule(s_time, s_date, s_id_movie, s_id_hall)
        movie = self.model.read_movie(s_id_movie)
        if out == True:
            self.view.ok(
                movie[1] + ' at ' + s_time + ' on ' + s_date + ' in hall: ' +
                s_id_hall, 'added')
        else:
            self.view.error('The movie could not be added')
        return

    def read_a_schedule(self):
        self.view.ask('Schedule ID: ')
        id_schedule = input()
        schedule = self.model.read_schedule(id_schedule)
        if type(schedule) == tuple:
            self.view.show_schedule_header('Schedule ID: ' + id_schedule + ' ')
            self.view.show_a_schedule(schedule)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if schedule == None:
                self.view.error('The schedule does not exist')
            else:
                self.view.error('There was a problem at reading the schedule')
        return

    def read_all_schedule(self):
        schedules = self.model.read_all_schedule()
        if type(schedules) == list:
            self.view.show_schedule_header(' All schedules ')
            for schedule in schedules:
                self.view.show_a_schedule(schedule)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the schedules')
        return

    def read_schedule_movie(self):
        self.view.ask('Movie title: ')
        name = input()
        schedules = self.model.read_schedule_movie(name)
        if type(schedules) == list:
            self.view.show_schedule_header('Schedules for: ' + name + ' ')
            for schedule in schedules:
                self.view.show_a_schedule(schedule)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the schedule')
        return

    def read_schedules_date(self):
        self.view.ask('Date: ')
        date = input()
        schedules = self.model.read_schedule_date(date)
        if type(schedules) == list:
            self.view.show_schedule_header('Schedules on  : ' + date + ' ')
            for schedule in schedules:
                self.view.show_a_schedule(schedule)
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the schedule')
        return

    def update_schedule(self):
        self.view.ask('ID of schedule to update: ')
        id_schedule = input()
        schedule = self.model.read_schedule(id_schedule)
        if type(schedule) == tuple:
            self.view.show_schedule_header(' Info from Schedule ' +
                                           id_schedule)
            self.view.show_a_schedule(schedule)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if schedule == None:
                self.view.error('The schedule does not exist')
            else:
                self.view.error('There was a problem at reading the schedule')
        self.view.msg('Input the new values to update (Leave blank to skip): ')
        whole_vals = self.ask_schedule()
        fields, vals = self.update_lists(
            ['s_time', 's_date', 's_id_movie', 's_id_hall'], whole_vals)
        vals.append(id_schedule)
        vals = tuple(vals)
        out = self.model.update_schedule(fields, vals)
        if out == True:
            self.view.ok('The schedule' + ' (ID:' + id_schedule + ')',
                         ' updated')
        else:
            self.view.error('There was a problem at updating the schedule')
        return

    def delete_schedule(self):
        self.view.ask('ID of the schedule to delete ')
        id_schedule = input()
        count = self.model.delete_schedule(id_schedule)
        if count != 0:
            self.view.ok('The schedule' + ' (ID:' + id_schedule + ')',
                         ' deleted')
        else:
            if count == 0:
                self.view.error('The schedule does not exist')
            else:
                self.view.error('There was a problem at deleting the schedule')
        return

    def user_main_menu_tickets(self, id_user):
        o = '0'
        while o != '4':
            self.view.user_main_menu_tickets()
            self.view.option('4')
            o = input()
            if o == '1':
                self.create_ticket(id_user)
            elif o == '2':
                self.read_ticket_user(id_user)
            elif o == '3':
                self.login_user(id_user)
            else:
                self.view.not_valid_option()
        return

    def ask_ticket(self):
        self.read_all_schedule()
        self.view.ask('Schedule ID: ')
        t_id_schedule = input()
        schedule = self.model.read_schedule(t_id_schedule)
        hall = self.model.read_disp_seat(0x00, schedule[4])
        print('Available seats: ', hall)

        id_seat = self.update_seat()

        return (t_id_schedule, schedule[4], id_seat)

    def create_ticket(self, t_id_usuario):
        t_id_schedule, t_id_hall, t_id_seat = self.ask_ticket()
        if (t_id_seat == 0):
            return
        out = self.model.create_ticket(t_id_usuario, t_id_schedule, t_id_seat)
        schedule = self.model.read_schedule(t_id_schedule)
        if out == True:
            self.view.ok(
                'The ticket from user: '******' for the movie: ' +
                schedule[6] + ' in ' + schedule[8] + ' with ' + schedule[9] +
                ' subtitles ' + '\n on ' + str(schedule[2]) + ' at ' +
                schedule[1] + '; Hall: ' + str(t_id_hall) + ' Seat: ' +
                str(t_id_seat), 'added')
        else:
            self.view.error('The ticket could not be added')
        return

    def read_a_ticket(self):
        self.view.ask('Ticket ID: ')
        id_ticket = input()
        ticket, schedule = self.model.read_ticket(id_ticket)
        if type(ticket) == tuple:
            self.view.show_ticket_header('Ticket ID: ' + id_ticket + ' ')
            self.view.show_a_ticket(ticket, schedule)
            self.view.show_midder()
            self.view.show_footer()
        else:
            if ticket == None:
                self.view.error('The ticket does not exist')
            else:
                self.view.error('There was a problem at reading the ticket')
        return

    def read_all_ticket(self):
        tickets, schedules = self.model.read_all_ticket()
        if type(tickets) == list:
            self.view.show_ticket_header(' All tickets')
            for i in range(len(tickets)):
                self.view.show_a_ticket(tickets[i], schedules[i])
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the tickets')
        return

    def read_ticket_user(self, id_user):
        tickets, schedules = self.model.read_ticket_user(id_user)
        if type(tickets) == list:
            self.view.show_ticket_header(' All tickets from the user ' +
                                         id_user)
            for i in range(len(tickets)):
                self.view.show_a_ticket(tickets[i], schedules[i])
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the tickets')
        return

    def read_ticket_schedule(self):
        self.view.ask('Schedule ID: ')
        schedule = input()
        tickets, schedules = self.model.read_ticket_schedule(schedule)
        if type(tickets) == list:
            self.view.show_ticket_header(' All tickets on schedule ' +
                                         schedule)
            for i in range(len(tickets)):
                self.view.show_a_ticket(tickets[i], schedules[i])
                self.view.show_midder()
            self.view.show_footer()
        else:
            self.view.error('There was a problem at reading the tickets')
        return
Пример #51
0
def main():
    copyKiller = QtGui.QApplication(sys.argv)
    view = View()
    view.show()
    sys.exit(copyKiller.exec_())
Пример #52
0
 def __init__(self):
     self.model = Model()
     self.view = View()
Пример #53
0
class Controller:
    #Constructor
    def __init__(self):
        self.model = model()
        self.view = View()

    #Constructor Controllers
    def agregar_contacto(self, id_contacto, nombre, tel, correo, dir):
        b, c = self.model.agregar_contacto(id_contacto, nombre, tel, correo,
                                           dir)
        if b:
            self.view.agregar_contacto(c)
        else:
            self.view.contacto_ya_existe(c)

    def leer_contacto(self, id_contacto):
        e, c = self.model.leer_contacto(id_contacto)
        if e:
            self.view.mostrar_contactos(c)
        else:
            self.view.contacto_no_existe(id_contacto)

    def leer_todos_contactos(self):
        c = self.model.leer_todos_contactos()
        self.view.mostrar_contactos(c)

    def actualizar_contacto(self,
                            id_contacto='',
                            nombre='',
                            tel='',
                            correo='',
                            direccion=''):
        e = self.model.actualizar_contacto(id_contacto, nombre, tel, correo,
                                           direccion)
        if e:
            self.view.actualizar_contacto(id_contacto, id_contacto)
        else:
            self.view.contacto_no_existe(id_contacto)

    def borrar_contacto(self, id_contacto):
        e, c = self.model.borra_contacto(id_contacto)
        if e:
            self.view.borrar_contacto(c)
        else:
            self.view.contacto_no_existe(c)

    def leer_contactos_letra(self, letra):
        c = self.model.buscar_contacto(letra)
        self.view.mostrar_contactos(c)

    def insertar_contactos(self):
        self.agregar_contacto(1, 'Christian', '4641702754',
                              '*****@*****.**', 'Tomasa Esteves')
        self.agregar_contacto(2, 'Pedro', '4641702234', '*****@*****.**',
                              'Miguel hidalgo')
        self.agregar_contacto(3, 'Pablo', '4641702234', '*****@*****.**',
                              'Miguel hidalgo')

    #Cita controllers

    def agregar_citas(self, id_cita, id_contacto, lugar, fecha, hora, asunto):
        b, c = self.model.agregar_cita(id_cita, id_contacto, lugar, fecha,
                                       hora, asunto)
        if not b:
            self.view.crear_cita(c)
        else:
            self.view.cita_ya_existe(id_cita)

    def insertar_citas(self):
        self.agregar_citas(1, 1, 'Salamanca', '14/08/29', '02:00',
                           'Comer carnitas')
        self.agregar_citas(2, 2, 'Salamanca', '14/08/29', '02:00',
                           'Comer pikxa')
        self.agregar_citas(3, 3, 'Salamanca', '14/08/29', '02:00',
                           'Comer kaka')

    def leer_todas_citas(self):
        c = self.model.leer_todas_citas()
        self.view.mostrar_Citas(c)

    def start(self):
        #Display a welcome message
        self.view.start()
        #Insert data in model
        self.insertar_contactos()
        self.insertar_citas()
        #Show all contacts in database
        self.leer_todos_contactos()
        #self.leer_contactos_letra('a')
        self.leer_todas_citas()

    def menu(self):
        while (True):
            self.view.menu()
            o = input('Selecciona una puta opcion (1-9): ')
            if o == '1':
                id_contacto = input('Ingresa Id Contacto: ')
                nombre = input('Ingresa telefono: ')
                tel = input('Ingresa Nombre: ')
                correo = input('Ingresa correo: ')
                dir = input('Ingresa dir: ')
                self.agregar_contacto(id_contacto, nombre, tel, correo, dir)
            if o == '2':
                id_contacto = input('Ingresa Id Contacto: ')
                self.leer_contacto(id_contacto)
            if o == '3':
                self.leer_todos_contactos()
            if o == '4':
                self.actualizar_contacto()
            if o == '5':
                id_contacto = input('Ingresa Id Contacto: ')
                self.borrar_contacto(id_contacto)
            if o == '6':
                letra = input('Ingresa letra: ')
                self.leer_contactos_letra(letra)
            if o == '7':
                self.insertar_contactos()
            if o == '8':
                self.start()
            if o == '9':
                self.leer_todas_citas()
            if o == '10':
                id_cita = input('Ingresa id_cita: ')
                id_contacto = input('Ingresa id_contacto: ')
                lugar = input('Ingresa lugar: ')
                fecha = input('Ingresa fecha: ')
                hora = input('Ingresa hora: ')
                asunto = input('Ingresa asunto: ')
                self.agregar_citas(id_cita, id_contacto, lugar, fecha, hora,
                                   asunto)
            if o == '11':
                print('Vaya a chingar a su puta madre\t')
                break
Пример #54
0
    def __init__(self):
        pygame.init()
        self.clock = pygame.time.Clock()
        
        self.screen = pygame.display.set_mode([600, 600])
        self.view = View(self.screen)
        self.font = pygame.font.Font(None,30)
        
        self.engine = PhysicsEngine()
        self.engine.contactGenerators.append(ContactGenerator(self.engine))
        self.engine.gravity = Vec(0,0)


#for i in range(5):
#    c = Particle()
#    c.engine = engine
#    c.p = Vec(random.uniform(20,580),random.uniform(20,580))
#    c.v = Vec(random.uniform(-150,150),random.uniform(-150,150))
#    c.m = random.uniform(40,1000)
#    c.collider = Circle(c,Vec(0,0),math.sqrt(c.m))
#    c.collider.restitution = 0.75
#    
#    engine.moving.append(c)
#    color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
#    view.objects.append(CircleObject(c,color))
#    
#u = Particle()
#u.engine = engine
#u.p = Vec(100,100)
#u.v = Vec(0,0)
#u.m = 100.0
#u.collider = Union(u)
#u.collider.colliders.append(Circle(u,Vec(0,-10),20))
#u.collider.colliders.append(Circle(u,Vec(0,10),20))
#u.collider.restitution = 0.75

#for i in range(25):
#    p = Particle();
#    p.engine = engine
#    p.p = Vec(random.uniform(20,580),random.uniform(20,580))
#    p.v = Vec(random.uniform(-50,50),random.uniform(-50,50))
#    p.collider = Polygon(p,[Vec(random.uniform(-30,-10),random.uniform(10,30)), 
#                            Vec(random.uniform(-30,-10),random.uniform(-30,-10)),
#                            Vec(random.uniform(10,30),random.uniform(-30,-10)), 
#                            Vec(random.uniform(10,30),random.uniform(10,30))])
#    p.collider.restitution = 1.0
#
#    engine.moving.append(p)
#    color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
#    view.objects.append(PolyObject(p,color))


            
        '''for i in range(15):
            rb = Rigidbody()
            rb.engine = self.engine
            rb.p = Vec(random.uniform(20,580),random.uniform(20,580))
            rb.v = Vec(random.uniform(-250,250),random.uniform(-250,250))
            rb.w = random.uniform(-0.5,0.5)
            rb.invmass = 1
            rb.invmoi = 0.001
            rb.collider = Narc(rb)
            rb.mat.setRotation(random.uniform(0,2*math.pi))             
            rb.collider.restitution = 1.0
            
            self.engine.moving.append(rb)
            color = pygame.Color(random.randint(0,200),random.randint(0,200),random.randint(0,200))
            self.view.objects.append(NarcObject(rb,color))'''

        arena = Particle()
        arena.engine = self.engine
        arena.p = Vec(0,0)
        arena.collider = Arena(arena,600,600)
        arena.collider.restitution = 1.0
        self.engine.static.append(arena)
        arena.invmass = 0
Пример #55
0
class Controller:
    """
	*******************************
	* A controller for a store DB *
	*******************************
	"""
    def __init__(self):
        self.model = Model()
        self.view = View()

    def start(self):
        self.view.start()
        self.main_menu()

    """
	***********************
	* General controllers *
	***********************
	"""

    def main_menu(self):
        o = '0'
        while o != '5':
            self.view.main_menu()
            self.view.option('5')
            o = input()
            if o == '1':
                self.zips_menu()
            elif o == '2':
                self.products_menu()
            elif o == '3':
                self.clients_menu()
            elif o == '4':
                self.orders_menu()
            elif o == '5':
                self.view.end()
            else:
                self.view.not_valid_option()
        return

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    """
	************************
	* Controllers for zips *
	************************
	"""

    def zips_menu(self):
        o = '0'
        while o != '7':
            self.view.zips_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.create_zip()
            elif o == '2':
                self.read_a_zip()
            elif o == '3':
                self.read_all_zips()
            elif o == '4':
                self.read_zips_city()
            elif o == '5':
                self.update_zip()
            elif o == '6':
                self.delete_zip()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_zip(self):
        self.view.ask('Ciudad: ')
        city = input()
        self.view.ask('Estado: ')
        state = input()
        return [city, state]

    def create_zip(self):
        self.view.ask('CP: ')
        i_zip = input()
        city, state = self.ask_zip()
        out = self.model.create_zip(i_zip, city, state)
        if out == True:
            self.view.ok(i_zip, 'agrego')
        else:
            if out.errno == 1062:
                self.view.error('EL CP ESTA REPETIDO')
            else:
                self.view.error('NO SE PUDO AGREGAR EL CP. REVISA.')
        return

    def read_a_zip(self):
        self.view.ask('CP: ')
        i_zip = input()
        zip = self.model.read_a_zip(i_zip)
        if type(zip) == tuple:
            self.view.show_zip_header('  Datos del CP ' + i_zip + ' ')
            self.view.show_a_zip(zip)
            self.view.show_zip_midder()
            self.view.show_zip_footer()
        else:
            if zip == None:
                self.view.error('EL CP NO EXISTE')
            else:
                self.view.error('PROBLEMA AL LEER CP. REVISA.')
        return

    def read_all_zips(self):
        zips = self.model.read_all_zips()
        if type(zips) == list:
            self.view.show_zip_header('  Todos los CPs  ')
            for zip in zips:
                self.view.show_a_zip(zip)
            self.view.show_zip_midder()
            self.view.show_zip_footer()
        else:
            self.view.error('PROBLEMA AL LEER LOS CPs. REVISA.')
        return

    def read_zips_city(self):
        self.view.ask('Ciudad:')
        city = input()
        zips = self.model.read_zips_city(city)
        if type(zips) == list:
            self.view.show_zip_header(' CPs para la ciudad de ' + city + ' ')
            for zip in zips:
                self.view.show_a_zip(zip)
            self.view.show_zip_midder()
            self.view.show_zip_footer()
        else:
            self.view.error('PROBLEMA al LEER LOS CPs. REVISA.')
        return

    def update_zip(self):
        self.view.ask('Cp a modificar: ')
        i_zip = input()
        zip = self.model.read_a_zip(i_zip)
        if type(zip) == tuple:
            self.view.show_zip_header('Datos del CP' + i_zip + ' ')
            self.view.show_a_zip(zip)
            self.view.show_zip_midder()
            self.view.show_zip_footer()
        else:
            if zip == None:
                self.view.error('El CP no existe')
            else:
                self.view.error('Problemas al leer el CP, REVISA')
            return
        self.view.msg(
            'Ingresa los valores a modificar:(vacio para dejarlo igual)')
        whole_vals = self.ask_zip()
        fields, vals = self.update_lists(['z_city', 'z_state'], whole_vals)
        vals.append(i_zip)
        vals = tuple(vals)
        out = self.model.update_zip(fields, vals)
        if out == True:
            self.view.ok(i_zip, 'actualizo')
        else:
            self.view.error('No se pudo actualizar el CP. REVISA')
        return

    def delete_zip(self):
        self.view.ask('Cp a borrar: ')
        i_zip = input()
        count = self.model.delete_zip(i_zip)
        if count != 0:
            self.view.ok(i_zip, 'borro')
        else:
            if count == 0:
                self.view.error('El CP no existe')
            else:
                self.view.error('Problemas al leer el CP. REVISA')
        return

    """
	***************************
	* Controllers for Producs *
	***************************
	"""

    def products_menu(self):
        o = '0'
        while o != '8':
            self.view.products_menu()
            self.view.option('8')
            o = input()
            if o == '1':
                self.create_product()
            elif o == '2':
                self.read_a_product()
            elif o == '3':
                self.read_all_products()
            elif o == '4':
                self.read_products_brand()
            elif o == '5':
                self.read_products_price_range()
            elif o == '6':
                self.update_product()
            elif o == '7':
                self.delete_product()
            elif o == '8':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_product(self):
        self.view.ask('Nombre: ')
        name = input()
        self.view.ask('Marca: ')
        brand = input()
        self.view.ask('Descripcion: ')
        descrip = input()
        self.view.ask('Precio: ')
        price = input()
        return [name, brand, descrip, price]

    def create_product(self):
        name, brand, descrip, price = self.ask_product()
        out = self.model.create_product(name, brand, descrip, price)
        if out == True:
            self.view.ok(name + ' ' + brand, 'agrego')
        else:
            self.view.error('No se pudo agregar producto. REVISA')
        return

    def read_a_product(self):
        self.view.ask('ID producto: ')
        id_product = input()
        product = self.model.read_a_product(id_product)
        if type(product) == tuple:
            self.view.show_product_header('Datos del producto ' + id_product +
                                          ' ')
            self.view.show_a_product(product)
            self.view.show_product_midder()
            self.view.show_product_footer()
        else:
            if product == None:
                self.view.error('El producto no existe')
            else:
                self.view.error('Problema al leer el producto. REVISA')
        return

    def read_all_products(self):
        products = self.model.read_all_products()
        if type(products) == list:
            self.view.show_product_header(' Todos los productos ')
            for product in products:
                self.view.show_a_product(product)
                self.view.show_product_midder()
            self.view.show_product_footer()
        else:
            self.view.error('Problemas al leer los productos. REVISA')
        return

    def read_products_brand(self):
        self.view.ask('Marca: ')
        brand = input()
        products = self.model.read_products_brand(brand)
        if type(products) == list:
            self.view.show_product_header(' Productos de la marca ' + brand +
                                          ' ')
            for product in products:
                self.view.show_a_product(product)
                self.view.show_product_midder()
            self.view.show_product_footer()
        else:
            self.view.error('Problemas al leer los productos. REVISA')
        return

    def read_products_price_range(self):
        self.view.ask('Precio inferior: ')
        price_ini = input()
        self.view.ask('Precio superior: ')
        price_end = input()
        products = self.model.read_products_price_range(
            float(price_ini), float(price_end))
        if type(products) == list:
            self.view.show_product_header(' Productos entre ' + price_ini +
                                          ' y ' + price_end + ' ')
            for product in products:
                self.view.show_a_product(product)
                self.view.show_product_midder()
            self.view.show_product_footer()
        else:
            self.view.error('Problemas al leer los productos. REVISA')
        return

    def update_product(self):
        self.view.ask('ID de producto a modificar: ')
        id_product = input()
        product = self.model.read_a_product(id_product)
        if type(product) == tuple:
            self.view.show_product_header(' Datos del producto ' + id_product +
                                          ' ')
            self.view.show_a_product(product)
            self.view.show_product_midder()
            self.view.show_product_footer()
        else:
            if product == None:
                self.view.error('El producto no exise')
            else:
                self.view.error('Problemas al leer el producto. REVISA')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual): ')
        whole_vals = self.ask_product()
        fields, vals = self.update_lists(
            ['p_name', 'p_brand', 'p_descrip', 'p_price'], whole_vals)
        vals.append(id_product)
        vals = tuple(vals)
        out = self.model.update_product(fields, vals)
        if out == True:
            self.view.ok(id_product, 'actualizo')
        else:
            self.view.error('No se puede actualizar el producto. REVISA')
        return

    def delete_product(self):
        self.view.ask('id de producto a borrar: ')
        id_product = input()
        count = self.model.delete_product(id_product)
        if count != 0:
            self.view.ok(id_product, 'borro')
        else:
            if count == 0:
                self.view.error('el producto no eixste')
            else:
                self.view.error('Problemas al borrar el producto. REVISA ')
        return

    """
	***************************
	* Controllers for Clients *
	***************************
	"""

    def clients_menu(self):
        o = '0'
        while o != '7':
            self.view.clients_menu()
            self.view.option('7')
            o = input()
            if o == '1':
                self.create_client()
            elif o == '2':
                self.read_a_client()
            elif o == '3':
                self.read_all_clients()
            elif o == '4':
                self.read_clients_zip()
            elif o == '5':
                self.update_client()
            elif o == '6':
                self.delete_client()
            elif o == '7':
                return
            else:
                self.view.not_valid_option()
        return

    def ask_client(self):
        self.view.ask('Nombre: ')
        name = input()
        self.view.ask('Apellido Paterno: ')
        sname1 = input()
        self.view.ask('Apellido Materno: ')
        sname2 = input()
        self.view.ask('calle: ')
        street = input()
        self.view.ask('No exterior: ')
        noext = input()
        self.view.ask('No interior: ')
        noint = input()
        self.view.ask('colonia: ')
        col = input()
        self.view.ask('CP: ')
        zip = input()
        self.view.ask('Email: ')
        email = input()
        self.view.ask('Telefono: ')
        phone = input()
        return [
            name, sname1, sname2, street, noext, noint, col, zip, email, phone
        ]

    def create_client(self):
        name, sname1, sname2, street, noext, noint, col, zip, email, phone = self.ask_client(
        )
        out = self.model.create_client(name, sname1, sname2, street, noext,
                                       noint, col, zip, email, phone)
        if out == True:
            self.view.ok(name + ' ' + sname1 + ' ' + sname2, 'agrego')
        else:
            self.view.error('No se pudo agregar el cliente. REVISA')
        return

    def read_a_client(self):
        self.view.ask('ID cliente: ')
        id_client = input()
        client = self.model.read_a_client(id_client)
        if type(client) == tuple:
            self.view.show_client_header(' Datos del cliente ' + id_client +
                                         ' ')
            self.view.show_a_client(client)
            self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            if client == None:
                self.view.error('El cliente no existe')
            else:
                self.view.error('No se pudo agregar el cliente. REVISA')
        return

    def read_all_clients(self):
        clients = self.model.read_all_clients()
        if type(clients) == list:
            self.view.show_client_header(' Todos los clientes ')
            for client in clients:
                self.view.show_a_client(client)
                self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            self.view.error('Problema al leer el cliente. REVISA')
        return

    def read_clients_zip(self):
        self.view.ask('Cp: ')
        zip = input()
        clients = self.model.read_clients_zip(zip)
        if type(clients) == list:
            self.view.show_client_header('Clientes en el CP ' + zip + ' ')
            for client in clients:
                self.view.show_a_client(client)
                self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            self.view.error('Problema al leer los clientes. REVISA')
        return

    def update_client(self):
        self.view.ask('ID del cliente a modificar: ')
        id_client = input()
        client = self.model.read_a_client(id_client)
        if type(client) == tuple:
            self.view.show_client_header(' Datos del cliente ' + id_client +
                                         ' ')
            self.view.show_a_client(client)
            self.view.show_client_midder()
            self.view.show_client_footer()
        else:
            if client == None:
                self.view.error('El cliente no exise')
            else:
                self.view.error('Problemas al leer el cliente. REVISA')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        whole_vals = self.ask_client()
        fields, vals = self.update_lists([
            'c_fname', 'c_sname1', 'c_sname2', 'c_street', 'c_noext',
            'c_noint', 'c_col', 'c_zip', 'c_email', 'c_phone'
        ], whole_vals)
        vals.append(id_client)
        vals = tuple(vals)
        out = self.model.update_client(fields, vals)
        if out == True:
            self.view.ok(id_client, 'actualizo')
        else:
            self.view.error('No se puede actualizar el cliente')
        return

    def delete_client(self):
        self.view.ask('ID del cliente a borrar: ')
        id_client = input()
        count = self.model.delete_client(id_client)
        if count != 0:
            self.view.ok(id_client, 'borro')
        else:
            if count == 0:
                self.view.error('el cliente no eixste')
            else:
                self.view.error('Problemas al borrar el cliente. REVISA')
        return

    """
	**************************
	* Controllers for Orders *
	**************************
	"""

    def orders_menu(self):
        o = '0'
        while o != '11':
            self.view.orders_menu()
            self.view.option('11')
            o = input()
            if o == '1':
                self.create_order()
            elif o == '2':
                self.read_a_order()
            elif o == '3':
                self.read_all_orders()
            elif o == '4':
                self.read_orders_date()
            elif o == '5':
                self.read_orders_client()
            elif o == '6':
                self.update_order()
            elif o == '7':
                self.add_order_details()
            elif o == '8':
                self.update_order_details()
            elif o == '9':
                self.delete_order_details()
            elif o == '10':
                self.delete_order()
            elif o == '11':
                return
            else:
                self.view.not_valid_option()
        return

    def create_order(self):
        self.view.ask('ID client: ')
        id_client = input()
        o_status = 'processing'
        today = date.today()
        o_date = today.strftime('%y-%m-%d')
        o_total = 0.0
        id_order = self.model.create_order(id_client, o_status, o_date,
                                           o_total)
        if type(id_order) == int:
            id_product = ' '
            while id_product != '':
                self.view.msg(
                    '---Agregar Prodcutos a la orden(deja vacio el id del producto para salir)---'
                )
                id_product, od_total = self.create_order_details(id_order)
                o_total += od_total
            self.model.update_order(('o_total = %s', ), (o_total, id_order))
        else:
            self.view.error('No se pudo crear la orden. REVISA')
        return

    def read_a_order(self):
        self.view.ask('ID Orden: ')
        id_order = input()
        order = self.model.read_a_order(id_order)
        if type(order) == tuple:
            order_details = self.model.read_order_details(id_order)
            if type(order_details) != list and order_details != None:
                self.view.error('Problema al leer la orden. REVISA')
            else:
                self.view.show_order_header(' Datos de la orden ' + id_order +
                                            ' ')
                self.view.show_order(order)
                self.view.show_order_details_header()
                for order_detail in order_details:
                    self.view.show_a_order_details(order_detail)
                self.view.show_order_details_footer()
                self.view.show_order_total(order)
                self.view.show_order_footer()
                return order
        else:
            if order == None:
                self.view.error('La orden no existe')
            else:
                self.view.error('No se pudo leer la orden. REVISA')
        return

    def read_all_orders(self):
        orders = self.model.read_all_orders()
        if type(orders) == list:
            self.view.show_order_header(' Todas las ordenes ')
            for order in orders:
                id_order = order[0]
                order_details = self.model.read_order_details(id_order)
                if type(order_details) != list and order_details != None:
                    self.view.error('Problema al leer la orden ' + id_order +
                                    '. REVISA. ')
                else:
                    self.view.show_order(order)
                    self.view.show_order_details_header()
                    for order_detail in order_details:
                        self.view.show_a_order_details(order_detail)
                    self.view.show_order_details_footer()
                    self.view.show_order_total(order)
                    self.view.show_order_midder()
            self.view.show_order_footer()
        else:
            self.view.error('No se pudo leer la orden. REVISA.')
        return

    def read_orders_date(self):
        self.view.ask('Fecha: ')
        date = input()
        orders = self.model.read_orders_date(date)
        if type(orders) == list:
            self.view.show_order_header(' Ordenes para la fecha ' + date + ' ')
            for order in orders:
                id_order = order[0]
                order_details = self.model.read_order_details(id_order)
                if type(order_details) != list and order_details != None:
                    self.view.error('Problema al leer la orden' + id_order +
                                    '. REVISA.')
                else:
                    self.view.show_order(order)
                    self.view.show_order_details_header()
                    for order_detail in order_details:
                        self.view.show_a_order_details(order_detail)
                    self.view.show_order_details_footer()
                    self.view.show_order_total(order)
                    self.view.show_order_midder()
            self.view.show_order_footer()
        else:
            self.view.error('No se pudo leer la orden. REVISA.')
        return

    def read_orders_client(self):
        self.view.ask('ID client: ')
        id_client = input()
        orders = self.model.read_orders_client(id_client)
        if type(orders) == list:
            self.view.show_order_header(' Ordenes para el cliente ' +
                                        id_client + ' ')
            for order in orders:
                id_order = order[0]
                order_details = self.model.read_order_details(id_order)
                if type(order_details) != list and order_details != None:
                    self.view.error('Problema al leer la orden ' + id_order +
                                    '. REVISA.')
                else:
                    self.view.show_order(order)
                    self.view.show_order_details_header()
                    for order_detail in order_details:
                        self.view.show_a_order_details(order_detail)
                    self.view.show_order_details_footer()
                    self.view.show_order_total(order)
                    self.view.show_order_midder()
            self.view.show_order_footer()
        else:
            self.view.error('Problema al leer las ordenes. REVISA.')
        return

    def update_order(self):
        self.view.ask('ID del orden a modificar: ')
        id_order = input()
        order = self.model.read_a_order(id_order)
        if type(order) == tuple:
            self.view.show_order_header(' Datos de la orden ' + id_order + ' ')
            self.view.show_order(order)
            self.view.show_order_total(order)
            self.view.show_order_footer()
        else:
            if order == None:
                self.view.error('La orden no exise')
            else:
                self.view.error('Problemas al leer la orden. REVISA.')
            return
        self.view.msg(
            'Ingresa los valores a modificar (vacio para dejarlo igual):')
        self.view.ask('ID Cliente: ')
        id_client = input()
        self.view.ask('Estado (Prosesing, acepted, sent, received): ')
        o_status = input()
        self.view.ask('Fecha (yyyy/mm/dd): ')
        o_date = input()
        whole_vals = [id_client, o_status, o_date]
        fields, vals = self.update_lists(['id_client', 'o_status', 'o_date'],
                                         whole_vals)
        vals.append(id_order)
        vals = tuple(vals)
        out = self.model.update_order(fields, vals)
        if out == True:
            self.view.ok(id_order, 'actualizo')
        else:
            self.view.error('No se puede actualizar la orden. REVISA.')
        return

    def delete_order(self):
        self.view.ask('Id de orden a borrar: ')
        id_order = input()
        count = self.model.delete_order(id_order)
        if count != 0:
            self.view.ok(id_order, 'borro')
        else:
            if count == 0:
                self.view.error('La orden no existe')
            else:
                self.view.error('Problema al borrar la orden. REVISA.')
        return

    """
	********************************
	* Controllers for order_details *
	********************************
	"""

    def create_order_details(self, id_order):
        od_total = 0.0
        self.view.ask('ID Producto: ')
        id_product = input()
        if id_product != '':
            product = self.model.read_a_product(id_product)
            if type(product) == tuple:
                self.view.show_product_header(' Datos del producto ' +
                                              id_product + ' ')
                self.view.show_a_product(product)
                self.view.show_product_footer()
                self.view.ask('Cantidad: ')
                od_amount = int(input())
                od_total = od_amount * product[4]
                out = self.model.create_order_detail(id_order, id_product,
                                                     od_amount, od_total)
                if out == True:
                    self.view.ok(product[1] + '' + product[2],
                                 'Agrego a la orden')
                else:
                    if out.errno == 1062:
                        self.view.error('El producto ya esta en la orden')
                    else:
                        self.view.error(
                            'No se pudo agregar el producto. REVISA.')
                    od_total = 0.0
            else:
                if product == None:
                    self.view.error('El producto no existe')
                else:
                    self.view.error('Problemas al leer el producto. REVISA.')
        return id_product, od_total

    def add_order_details(self):
        order = self.read_a_order()
        if type(order) == tuple:
            id_order = order[0]
            o_total = order[4]
            id_product = ' '
            while id_product != '':
                self.view.msg(
                    '---Agregar productos a la orden(deja vacio el id del producto para salir)---'
                )
                id_product, od_total = self.create_order_details(id_order)
                o_total += od_total
            self.model.update_order(('o_total = %s', ), (o_total, id_order))
        return

    def update_order_details(self):
        order = self.read_a_order()
        if type(order) == tuple:
            id_order = order[0]
            o_total = order[4]
            id_product = ' '
            while id_product != '':
                self.view.msg(
                    '---Modifica productos de la orden(deja espacio vacio para salir)---'
                )
                self.view.ask('ID producto: ')
                id_product = input()
                if id_product != '':
                    order_detail = self.model.read_a_order_detail(
                        id_order, id_product)
                    if type(order_detail) == tuple:
                        od_total_old = order_detail[5]
                        o_total -= od_total_old
                        product = self.model.read_a_product(id_product)
                        price = product[4]
                        self.view.ask('Cantidad: ')
                        od_amount = int(input())
                        od_total = price * od_amount
                        o_total += od_total
                        fields, whole_vals = self.update_lists(
                            ['od_amount', 'od_total'], [od_amount, od_total])
                        whole_vals.append(id_order)
                        whole_vals.append(id_product)
                        self.model.update_order_details(fields, whole_vals)
                        self.view.ok(id_product, 'Actualizo en la orden')
                    else:
                        if order_detail == None:
                            self.view.error('Producto no existe en la orden')
                        else:
                            self.view.erro(
                                'Problema al actualizar el producto. REVISA.')
            self.model.update_order(('o_total = %s', ), (o_total, id_order))
        return

    def delete_order_details(self):
        order = self.read_a_order()
        if type(order) == tuple:
            id_order = order[0]
            o_total = order[4]
            id_product = ' '
            while id_product != '':
                self.view.msg(
                    '---Borrar productos de la orden(deja espacio vacio para salir)---'
                )
                self.view.ask('ID producto: ')
                id_product = input()
                if id_product != '':
                    order_detail = self.model.read_a_order_detail(
                        id_order, id_product)
                    count = self.model.delete_order_details(
                        id_order, id_product)
                    if type(order_detail) == tuple and count != 0:
                        od_total = order_detail[5]
                        o_total -= od_total
                        self.view.ok(id_product, 'Borro de la orden')
                    else:
                        if order_detail == None:
                            self.view.error(
                                'El Producto no existe en la orden')
                        else:
                            self.view.error(
                                'Problema al borrar el producto. REVISA.')
            self.model.update_order(('o_total = %s', ), (o_total, id_order))
        return
 def __init__(self):  #CONSTRUCTOR
     self.model = Model()
     self.view = View()
Пример #57
0
class Controller(NysaBaseController):

    @staticmethod
    def get_name():
        return APP_NAME

    @staticmethod
    def get_driver():
        return DRIVER

    def __init__(self):
        super (Controller, self).__init__()
        self.actions = LogicAnalyzerActions()
        self.actions.trigger_en_changed.connect(self.trigger_enable_changed)
        self.actions.trigger_pol_changed.connect(self.trigger_pol_changed)
        self.actions.enable_capture.connect(self.enable_capture)
        self.actions.reset_logic_analyzer.connect(self.reset_logic_analyzer)
        self.actions.repeat_count_changed.connect(self.repeat_count_changed)
        self.actions.trigger_offset_changed.connect(self.capture_offset_changed)
        self.actions.repeat_count_update.connect(self.update_repeat_count)
        self.actions.trigger_offset_update.connect(self.update_capture_offset)
        self.actions.restart_logic_analyzer.connect(self.restart_logic_analyzer)
        self.actions.capture_detected.connect(self.capture_detected)

    def _initialize(self, platform, urn):
        self.v = View(self.status, self.actions)
        self.v.setup_view()
        self.lax = LogicAnalyzer(platform, urn, debug = False)
        self.lax.set_both_edge(0x00000000)
        self.lax.set_trigger_edge(0xFFFFFFFF)
        self.v.update_enable(self.lax.is_enabled())
        if self.lax.is_enabled():
            self.lax.enable_interrupts(True)
        else:
            self.lax.enable_interrupts(False)

        self.v.update_repeat_count(self.lax.get_repeat_count())
        self.v.update_trigger_offset(self.lax.get_trigger_after())
        self.v.update_trigger_enable(self.lax.get_trigger_mask())
        self.v.update_trigger_polarity(self.lax.get_trigger())
        self.lax.register_interrupt_callback(self.actions.capture_detected)

    def start_tab_view(self, platform, urn, status):
        self.status = status
        self.status.Verbose( "Starting Template Application")
        self._initialize(platform, urn)

    def get_view(self):
        return self.v

    def capture_detected(self):
        print "Capture Detected"
        filepath = self.v.get_save_filepath()
        data = self.lax.read_data()
        clock_count = self.lax.get_clock_divider()
        buf = create_vcd_buffer(data, count = 32, clock_count = clock_count, add_clock = True)
        f = open(filepath, "w")
        f.write(buf)
        f.close()
        print "Wrote file: %s" % filename

    def trigger_enable_changed(self):
        value = self.v.get_trigger_enable()
        print "Trigger enable value: 0x%08X" % value
        self.lax.set_trigger_mask(value)

    def trigger_pol_changed(self):
        value = self.v.get_trigger_polarity()
        print "Trigger polarity value: 0x%08X" % value
        self.lax.set_trigger(value)

    def enable_capture(self, enable):
        if enable:
            print "Enable Capture!"
            if not self.lax.is_interrupts_enabled():
                self.lax.enable_interrupts(True)
        else:
            print "Disable Capture"
            if self.lax.is_interrupts_enabled():
                self.lax.enable_interrupts(False)

        self.lax.enable(enable)

    def reset_logic_analyzer(self):
        print "Reset Logic Analyzer"
        self.lax.reset()
        self.v.update_enable(self.lax.is_enabled())
        self.lax.enable_interrupts(False)
        self.update_repeat_count()
        self.update_capture_offset()
        self.update_trigger_polarity()
        self.update_trigger_enable()

    def restart_logic_analyzer(self):
        print "Restart Logic Analyzer"
        self.lax.restart()
        self.v.update_enable(self.lax.is_enabled())
        self.lax.enable_interrupts(False)
        self.update_repeat_count()
        self.update_capture_offset()
        self.update_trigger_polarity()
        self.update_trigger_enable()

    def repeat_count_changed(self):
        count = self.v.get_repeat_count()
        print "Repeat Count: %d" % count
        self.lax.set_repeat_count(count)

    def capture_offset_changed(self):
        offset = self.v.get_trigger_offset()
        print "Capture offset: %d" % offset
        self.lax.set_trigger_after(offset)

    def update_trigger_enable(self):
        self.v.update_trigger_enable(self.lax.get_trigger_mask())

    def update_trigger_polarity(self):
        self.v.update_trigger_polarity(self.lax.get_trigger())

    def update_repeat_count(self):
        print "Update the repeat count"
        repeat_count = self.lax.get_repeat_count()
        self.v.update_repeat_count(repeat_count)

    def update_capture_offset(self):
        print "Update capture offset"
        trigger_after = self.lax.get_trigger_after()
        self.v.update_trigger_offset(trigger_after)
Пример #58
0
class Controller:
    def __init__(self):
        self.model = Model()
        self.view = View()
        self.logged = False

    def start(self):
        self.on = True

        while self.on:
            if self.logged:
                self.menu()
            else:
                self.menu_login()

    def menu_login(self):
        self.view.menu_login()
        self.view.opcion('3')
        o = input()
        if o == '1':
            self.login()
        elif o == '2':
            self.signin()
        elif o == '3':
            self.on = False
        else:
            self.view.opcion_incorrecta()

    def login(self):
        self.view.input('email')
        self.correo = input()
        self.view.input('contraseña')
        password = input()

        usuario = self.model.select_usuario_email(self.correo)
        if usuario:
            if usuario[3] == password:
                self.nombre = usuario[1]
                self.id_usuario = usuario[0]
                self.admin = usuario[4]
                self.logged = True
                self.view.msj('Bienvenido ' + self.nombre)
                return
            else:
                self.email = ''
                self.view.msj('Email o contraseña incorrectos')

        else:
            self.view.err()

    def signin(self):
        self.view.input('nombre completo')
        nombre = input()
        self.view.input('correo electrónico')
        correo = input()
        self.view.input('contraseña')
        password = input()

        res = self.model.sign_in((nombre, correo, password, False))
        if res == True:
            self.view.msj('usuario ' + nombre + ' creado')
            usuario = self.model.select_usuario_email(correo)
            self.correo = correo
            self.id_usuario = usuario[0]
            self.nombre = usuario[1]
            self.admin = usuario[4]
            self.logged = True
            self.view.msj('Bienvenido ' + self.nombre)
        else:
            self.view.err()

    # -------------------------
    # Métodos Generales
    # -------------------------

    def update_lists(self, fs, vs):
        fields = []
        vals = []
        for f, v in zip(fs, vs):
            if v != '':
                fields.append(f + ' = %s')
                vals.append(v)
        return fields, vals

    def delete(self, tabla):
        self.view.input('ID del elemento a eliminar del registro ' + tabla)
        id = input()
        res = self.model.delete(tabla, id)
        if res == True:
            self.view.msj('Elemento eliminado')
        else:
            self.view.err()

    def print_registros(self, tabla, registros=[]):

        if tabla == 'pelicula':
            campos = ['ID', 'Nombre', 'Despcripción']
            if not registros:
                registros = self.model.select_all('pelicula')
        elif tabla == 'funcion':
            campos = ['ID', 'Pelicula', 'Sala', 'Fecha y Hora', 'Precio']
            if not registros:
                registros = self.model.select_all_funcion()
        elif tabla == 'sala':
            campos = ['Número', 'Número de filas', 'Número de asientos']
            if not registros:
                registros = self.model.select_all('sala')
        elif tabla == 'usuario':
            campos = ['ID', 'Nombre', 'Correo', 'Contraseña', 'Administrador']
            if not registros:
                registros = self.model.select_all('usuario')
        elif tabla == 'compra':
            campos = ['ID', 'ID de usuario', 'Fecha', 'Total']
            if not registros:
                registros = self.model.select_compra_id(self.id_usuario)

        if registros:
            for r in registros:
                self.view.msj('*************************')
                for c, v in zip(campos, r):
                    self.view.print_all(c, v)
                if tabla == 'compra':
                    asientos = self.model.select_ca_id(r[0])
                    a_vals = ['Asiento', 'Funcion']
                    print('* Asientos:')
                    for asiento in asientos:
                        for a, av in zip(asiento, a_vals):
                            print('\t' + str(av) + ': ' + str(a))
                        print('\n')

        else:
            self.view.msj('No existen registros de ' + tabla)

    def create(self, tabla):
        if tabla == 'funcion':
            campos = [
                'id de pelicula', 'número de sala',
                'fecha y hora (YYYY-MM-DD HH:MM:SS)', 'precio de la entrada'
            ]
        elif tabla == 'pelicula':
            campos = ['nombre de la pelicula', 'descripción de la trama']
        elif tabla == 'sala':
            campos = ['número de filas', 'número de asientos por fila']
        elif tabla == 'usuario':
            campos = [
                'nombre completo', 'correo electrónico', 'contraseña',
                'administrador (True o False)'
            ]

        vals = []
        for c in campos:
            self.view.input(c)
            vals.append(input())

        if tabla == 'usuario':
            if vals[-1] == 'True':
                vals[-1] = True
            else:
                vals[-1] = False

        if tabla == 'funcion':
            res = self.model.c_funcion(tuple(vals))
        else:
            res = self.model.create(tabla, tuple(vals))

        if res == True:
            self.view.msj('Nuevo ' + tabla + ' creado')
        else:
            self.view.err()

    def update(self, tabla):
        if tabla == 'funcion':
            campos = [
                'ID de la pelicula', 'ID de la sala',
                'fecha y hora (YYYY-MM-DD HH:MM:SS)', 'precio de la entrada'
            ]
            fields = ['id_pelicula', 'id_sala', 'fecha_hora', 'precio']
        elif tabla == 'pelicula':
            campos = ['Nombre de la pelicula', 'Descripción de la trama']
            fields = ['nombre', 'descr']
        elif tabla == 'sala':
            campos = ['número de filas', 'número de asientos por fila']
            fields = ['n_filas', 'n_asientos']
        elif tabla == 'usuario':
            campos = [
                'nombre completo', 'correo electrónico', 'contraseña',
                'administrador (True o False)'
            ]
            fields = ['nombre', 'correo', 'password', 'admin']

        self.view.input('ID de ' + tabla + ' a editar')
        id = input()

        registro = self.model.select_id(tabla, id)
        if registro:
            vals = []
            i = 1
            self.view.msj(
                'Ingresa los valores a modificar (Dejar vacio para no modificar)'
            )
            for c in campos:
                self.view.input(c + '. Valor anterior: ' + str(registro[i]))
                vals.append(input())
                i = i + 1

            if tabla == 'usuario':
                if vals[-1] == 'True':
                    vals[-1] = True
                else:
                    vals[-1] = False

            fields, vals = self.update_lists(fields, vals)

            vals.append(id)
            res = self.model.update(tabla, fields, tuple(vals))
            if res == True:
                self.view.msj('Elemento en ' + tabla + ' actualizado')
            else:
                self.view.err()
        else:
            self.view.err()
            self.view.msj(tabla + 'inexistente')

    # -------------------------
    # Menú principal
    # -------------------------

    def menu(self):
        self.view.menu(self.admin)
        if self.admin:
            self.view.opcion('6')
            op = input()
            if op == '1':
                self.menu_funcion()
            elif op == '2':
                self.menu_pelicula()
            elif op == '3':
                self.menu_sala()
            elif op == '4':
                self.menu_compra()
            elif op == '5':
                self.menu_usuario()
            elif op == '6':
                self.logged = False
                self.admin = False
                self.correo = ''
                self.nombre = ''
                self.id_usuario = 0
            else:
                self.view.opcion_incorrecta()

        else:
            self.view.opcion('6')
            op = input()
            if op == '1':
                self.print_registros('funcion')
            elif op == '2':
                self.select_funcion_day()
            elif op == '3':
                self.select_funcion_pelicula()
            elif op == '4':
                self.comprar_entrada()
            elif op == '5':
                self.print_registros('compra')
            elif op == '6':
                self.logged = False
                self.admin = False
                self.correo = ''
                self.nombre = ''
                self.id_usuario = 0
            else:
                self.view.opcion_incorrecta()

    # -------------------------
    # Métodos para funciones
    # -------------------------

    def menu_funcion(self):
        self.view.menu_funcion()
        self.view.opcion('7')
        op = input()
        if op == '1':
            self.create('funcion')
        elif op == '2':
            self.update('funcion')
        elif op == '3':
            self.print_registros('funcion')
        elif op == '4':
            self.select_funcion_day()
        elif op == '5':
            self.select_funcion_pelicula()
        elif op == '6':
            self.delete('funcion')
        elif op == '7':
            return

    def select_funcion_day(self):
        self.view.input('dia (YYYY-MM-DD)')
        dia = input()

        funciones_id = self.model.select_funcion_dia(dia)

        if funciones_id:
            funciones = []
            for id in funciones_id:
                funciones.append(self.model.select_funcion_id_join(id[0]))

            self.print_registros('funcion', funciones)
        else:
            self.view.msj('No hay registros de funciones')

    def select_funcion_pelicula(self):
        self.view.input('nombre de la pelicula')
        pelicula = input()

        funciones = self.model.select_funcion_pelicula(pelicula)
        if funciones:
            self.print_registros('funcion', funciones)
        else:
            self.view.msj('No existen funciones con esa pelicula')

    # -------------------------
    # Métodos para peliculas
    # -------------------------

    def menu_pelicula(self):
        self.view.menu_pelicula()
        self.view.opcion('5')
        op = input()
        if op == '1':
            self.create('pelicula')
        elif op == '2':
            self.update('pelicula')
        elif op == '3':
            self.print_registros('pelicula')
        elif op == '4':
            self.delete('pelicula')
        elif op == '5':
            return
        else:
            self.view.opcion_incorrecta()

    # -------------------------
    # Métodos para salas
    # -------------------------

    def menu_sala(self):
        self.view.menu_sala()
        self.view.opcion('4')
        op = input()
        if op == '1':
            self.create('sala')
        elif op == '2':
            self.update('sala')
        elif op == '3':
            self.print_registros('sala')
        elif op == '4':
            return
        else:
            self.view.opcion_incorrecta()

    # -------------------------
    # Métodos para usuarios
    # -------------------------

    def menu_usuario(self):
        self.view.menu_usuario()
        self.view.opcion('5')
        op = input()
        if op == '1':
            self.create('usuario')
        elif op == '2':
            self.update('usuario')
        elif op == '3':
            self.print_registros('usuario')
        elif op == '4':
            self.delete('usuario')
        elif op == '5':
            return
        else:
            self.view.opcion_incorrecta()

    # -------------------------
    # Métodos para compras
    # -------------------------
    def menu_compra(self):
        self.view.menu_compra()
        self.view.opcion('2')

        op = input()
        if op == '1':
            self.print_registros('compra')
        elif op == '2':
            return
        else:
            self.view.opcion_incorrecta()

    def comprar_entrada(self):
        date = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        self.model.c_compra((self.id_usuario, date, 0))

        id_compra = self.model.s_current_compra()

        count = 0
        while True:
            self.view.menu_boleto()
            self.view.opcion('2')
            op = input()
            if op == '1':
                self.compra_boleto(id_compra)
                count = count + 1
            elif op == '2':
                if count > 0:
                    break
                else:
                    self.view.msj('Debes de agregar al menos un boleto')
            else:
                self.view.opcion_incorrecta()

        boletos = self.model.select_compraid_ca(id_compra)
        total = 0
        for b in boletos:
            total = total + float(self.model.select_precio_id(b[0])[0])

        print('TOTAL ---', total)
        res = self.model.u_total(int(total), id_compra)
        if res == True:
            self.view.msj('Compra realizada con éxito')
        else:
            self.view.err()

    def compra_boleto(self, id_compra):
        self.view.input('ID de función')
        id_funcion = input()

        asientos = self.model.s_asientos_funcion(id_funcion)
        self.view.print_asientos(asientos)

        self.view.input('número de asiento')
        id_asiento = input()

        res = self.model.c_compra_asiento((id_compra, id_asiento, id_funcion))
        if res == True:
            self.view.msj('Asiento añadido com éxito')
        else:
            self.view.err()
Пример #59
0
import logging
log = logging.getLogger(__name__)


from model.root import Root
from view.view import View
from controller.controller import Controller

from lib.portrait import FremantleRotation

root = Root()
root.build_data()

controller = Controller(root)
view = View(root, controller)

controller.view = view


rotation_object = FremantleRotation('SmsNostalgia', 
                                    main_window=view.window_main.window, 
                                    version='1.0', 
                                    mode=FremantleRotation.AUTOMATIC)


view.start()
Пример #60
0
import pygame
import config
from model import model
from view.view import View
from controller.controller import Controller
from socket import socket, AF_INET, SOCK_STREAM
from config import HOST, PORT, ENCODING
from utils import convert_keys_to_string
from threading import Thread
import struct

view = View()
controller = Controller()

clientsock = socket(AF_INET, SOCK_STREAM)
clientsock.connect((HOST, PORT))

player_id = int.from_bytes(clientsock.recv(1), byteorder="big")
print(f'your id is {player_id}')

map_name = clientsock.recv(config.MAP_NAME_LENGTH).decode(config.ENCODING)
model.game_map.load_selected_map(map_name)

running = True
clock = pygame.time.Clock()
timeout_limit = 10


def receive_tanks():
    tanks = []
    tank_data = bytes()