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)
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")
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()
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)
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
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
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 _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()
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 __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 _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 _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 _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 _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)
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)
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()
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
def __init__(self): self.view = View().start() self.start(self.view)
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)
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))
def __init__(self): self.model = Model() self.view = View() self.logged = False
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()
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
def __init__(self): self.model = Model() self.view = View() self.viewAdmin = ViewAdmin() self.viewUser = ViewUser()
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
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_())
def main(): copyKiller = QtGui.QApplication(sys.argv) view = View() view.show() sys.exit(copyKiller.exec_())
def on_render(self): for obj in self.game_objects: View.blit(View.window, obj.display(), obj.get_cords(), "top left") View.update()
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)
def main(): app = QApplication([]) model = DataBase() view = View() _ = Presenter(model, view) sys.exit(app.exec_())
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
def main(): travel_db = SQLTravelDB() travel_view_model = ViewModel(travel_db) travel_view = View(travel_view_model) travel_view.show_menu()
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()
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()
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)
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()
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())
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)
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'
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
def _initialize(self, platform, urn): self.v = View(self.status, self.actions) self.drv = SATADriver(platform, urn) self.refresh()
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( '========================================================================================================' )
from view.view import View if __name__ == '__main__': view = View() view.main_view()
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
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()
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_())
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
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
def __init__(self): self.model = Model() self.view = View()
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
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
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()
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)
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()
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()
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()