def __call__(self, request, item_id, *args): self._initialize(request, *args) item = self.query.get(item_id) if request.method == 'POST' and request.form.get('submit'): self.session.begin() try: self.session.delete(item) self.session.commit() except IntegrityError: self.session.rollback() flash(request, 'notice', 'No se pudo borrar el %s %s, mas elementos dependen de el!' % (item.__verbose_name__, unicode(item)) ) else: return redirect('%s/../../../list' % request.base_url) return Template('crud_delete', { 'body_class': 'crud_delete %s' % self.instance_name, 'title': self.instance_config['name'], 'subtitle': '%s %s' % (self.model.__verbose_name__, item_id), 'toolbar': self.toolbar, 'item_id': item_id, 'item': item, 'base_url': self._url, })
def _instance_selection(self, request): flash(request, 'error', 'Seleccione una instancia.') return Template('crud_instance_selection', { 'instances': conf('crud.instances.%s' % conf('config.app')), 'body_class': 'instance_selection', 'title': conf('config.name'), 'subtitle': 'Seleccion de instancia' })
def _save_from_post(self, request, columns, session, item=None): is_update = item is not None obj = item if is_update else self.model() original_values = {} primary_key = None for column in columns: if column.primary_key: primary_key = column.name if column.name in request.form: if is_update: original_values[column.name] = getattr(obj, column.name) if column.nullable and not request.form[column.name]: setattr(obj, column.name, None) else: setattr(obj, column.name, request.form[column.name]) if is_update and hasattr(obj, '__pre_update__'): obj.__pre_update__(request, session, original_values) elif not is_update and hasattr(obj, '__pre_insert__'): obj.__pre_insert__(request, session) try: message = self.__validate__(request, columns, session, item) if message and not isinstance(message, basestring): session.begin() session.add(obj) session.commit() elif isinstance(message, basestring): flash(request, 'error', 'Hubo un error al guardar. %s' % message) return except OperationalError, e: session.rollback() flash(request, 'error', 'Hubo un error al guardar. %s' % e) logger.error(e)
try: message = self.__validate__(request, columns, session, item) if message and not isinstance(message, basestring): session.begin() session.add(obj) session.commit() elif isinstance(message, basestring): flash(request, 'error', 'Hubo un error al guardar. %s' % message) return except OperationalError, e: session.rollback() flash(request, 'error', 'Hubo un error al guardar. %s' % e) logger.error(e) else: if item is None: flash(request, 'success', 'Creado exitosamente') id = getattr(obj, primary_key) return redirect('%s/../../update/%s' % (request.base_url, id)) else: flash(request, 'success', 'Guardado exitosamente') return obj class ReportList(CrudBase): instance = None def __init__(self, model, name, columns, headers=None, query=None, subtitle=None, search_type=None, download_csv=False): super(ReportList, self).__init__(model, query=query) self.subtitle = subtitle self.search_type = search_type