Example #1
0
    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,
            })
Example #2
0
 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'
     })
Example #3
0
    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)
Example #4
0
        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