from utils.Database import DataModel model = DataModel('Proveedor') #model.get_record(1) model.update_record({'cp': 72420, 'email_contacto': '*****@*****.**'}, 1) model.dispose()
class ConfiguracionesFactory(gtk.Frame): __record_id = 0 def __init__(self, main): super(ConfiguracionesFactory, self).__init__() self.main = main builder = gtk.Builder() builder.add_from_file("config_frame.glade") self.content = builder.get_object("vbox_content") self.entry = builder.get_object("pdf_entry") self.entry_margen_superior = builder.get_object("margen_superior") self.entry_margen_izquierdo = builder.get_object("margen_izquierdo") builder.connect_signals(self) self.content.reparent(self) self.content.show() self.config_model = DataModel('Configuracion') reader = get_pdf_reader() self.entry.set_text(reader['valor']) self.__record_id = reader['id'] self.margen_izquierdo = get_margen('margen_izquierdo') self.margen_superior = get_margen('margen_superior') if self.margen_superior is not None: self.entry_margen_superior.set_text(str(self.margen_superior['valor']).strip()) if self.margen_izquierdo is not None: self.entry_margen_izquierdo.set_text(str(self.margen_izquierdo['valor']).strip()) def on_aceptar_button_clicked(self, widget): pdf = self.entry.get_text() if self.__record_id == 0: self.config_model.create_record({'parametro': 'pdf_reader', 'valor': pdf}) else: self.config_model.update_record({'parametro': 'pdf_reader', 'valor': pdf}, self.__record_id) #try: float(self.entry_margen_superior.get_text()) """except: self._show_error_message('El valor para el margen superior debe de ser numerico') return""" if self.margen_superior is None: self.config_model.create_record({'parametro': 'margen_superior', 'valor': self.entry_margen_superior.get_text()}) else: self.config_model.update_record({'valor': self.entry_margen_superior.get_text()}, self.margen_superior['id']) try: float(self.entry_margen_izquierdo.get_text()) except: self._show_error_message('El valor para el margen izquierdo debe de ser numerico') return if self.margen_izquierdo is None: self.config_model.create_record({'parametro': 'margen_izquierdo', 'valor': self.entry_margen_izquierdo.get_text()}) else: self.config_model.update_record({'valor': self.entry_margen_izquierdo.get_text()}, self.margen_izquierdo['id']) def on_cerrar_button_clicked(self, widget): page = self.parent.get_current_page() self.parent.remove_page(page) del self.main.pages[page] def _show_error_message(self, message): dialog = gtk.MessageDialog(self.parent.parent.parent, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_ERROR, gtk.BUTTONS_OK, message) dialog.run() dialog.destroy()
class FormBuilder: __fields = [] def __init__(self, builder, entity): self.builder = builder self.entity = entity self.model = DataModel(entity) self.__fields = self.model.get_colums() def get_entity(self, entity_id): row = self.model.get_record(entity_id) if row is not None: for field in self.__fields: self.load_widget_value(field, row[field]) def save_entity(self, upsert=False, custom_id=False): id = self.__get_id() values = {} for field in self.__fields: if field != 'id' or (field == 'id' and custom_id == True): values[field] = self.get_widget_value(field) if id == 0 or id == '': self.model.create_record(values) else: self.model.update_record(values, id, upsert) self.clear_form() def delete_entity(self): id = self.__get_id() if id > 0 or id != '': dialog = gtk.MessageDialog(None, gtk.DIALOG_DESTROY_WITH_PARENT, gtk.MESSAGE_QUESTION, gtk.BUTTONS_YES_NO, "¿Desea eliminar el registro actual?") response = dialog.run() dialog.destroy() if response == gtk.RESPONSE_YES: self.model.delete_record(id) self.clear_form() def clear_form(self): for field in self.__fields: self.load_widget_value(field, '') def load_widget_value(self, widget_name, value): widget = self.builder.get_object(widget_name) if isinstance(widget, gtk.Entry) or isinstance(widget, gtk.Label): widget.set_text(str(value)) if isinstance(widget, gtk.ComboBox): model = widget.get_model() count = 0 for row in model: if row[0] == value: widget.set_active(count) count += 1 if isinstance(widget, gtk.CheckButton): widget.set_active(True if value else False) if isinstance(widget, gtk.Calendar): widget.select_month(value[1], value[0]) widget.select_day(value[2]) def get_widget_value(self, widget_name): value = None widget = self.builder.get_object(widget_name) if isinstance(widget, gtk.Entry) or isinstance(widget, gtk.Label): value = widget.get_text() if isinstance(widget, gtk.ComboBox): model = widget.get_model() tree_iter = widget.get_active_iter() if tree_iter != None: value = str(model[tree_iter][0]) if isinstance(widget, gtk.CheckButton): value = widget.get_active() if isinstance(widget, gtk.Calendar): value = widget.get_date() return value def get_model(self): return self.model def __get_id(self): id = 0 widget = self.builder.get_object('id') if isinstance(widget, gtk.Label) or isinstance(widget, gtk.Entry): id = widget.get_text() return id