def list(self): if not self.query: q = self.db.query(self.model) if self.ordering: q = q.order_by(*self.ordering) else: q = self.query try: if self.paginate: objects = h.page(q, self.request, items_per_page=self.paginate) else: objects = q except: self.request.session.flash( _('Помилка. Неможливо відобразити список.')) return HTTPFound( location=self.request.route_url('%s_list' % self.verbose_name)) self.context.update({'objects': objects}) self.context.update({'fields': get_columns_from_model(self.model)}) self.context.update({'my_model': self.model.__name__.lower()}) return render_to_response('%s:templates/admin_list.mako' % APP_NAME, self.context, request=self.request)
def update(self): id = self.request.matchdict.get('id') form = self.form(model=self.model, request=self.request.POST or None) try: if form.validate(): obj = self.db.query(self.model).filter_by(id=id).first() if hasattr(form, 'process_obj'): form.process_obj(obj) form.populate_obj(obj) self.before_update(form, obj) self.db.add(obj) self.after_update(form, obj) else: if self.request.is_xhr: return xhr_form_errors(form.errors, self.request) self.context.update({'form': form, 'id': id}) self.context.update({'my_model': self.model.__name__.lower()}) return render_to_response('%s:templates/admin_update.mako' % APP_NAME, self.context, request=self.request) except: flash_msg = _('Помилка. Неможливо оновити елемент.') if self.request.is_xhr: return xhr_flash_errors([flash_msg], self.request) self.context.update({'form': form, 'id': id}) self.context.update({'my_model': self.model.__name__.lower()}) self.request.session.flash(flash_msg) return render_to_response('%s:templates/admin_update.mako' % APP_NAME, self.context, request=self.request) flash_msg = _('Елемент успішно оновлений.') if self.request.is_xhr: return xhr_flash_messages([flash_msg], self.request) self.request.session.flash(flash_msg) return HTTPFound(location=self.get_redirect_location(obj))
def create(self): form = self.form(model=self.model, request=self.request.POST or None) try: if form.validate() and self.request.method == "POST": obj = self.model() if hasattr(form, 'process_obj'): form.process_obj(obj) form.populate_obj(obj) self.before_create(form, obj) self.db.add(obj) self.after_create(form, obj) else: if self.request.is_xhr: return xhr_form_errors(form.errors, self.request) self.context.update({'form': form}) self.context.update({'my_model': self.model.__name__.lower()}) return render_to_response('%s:templates/admin_create.mako' % APP_NAME, self.context, request=self.request) except Exception as e: flash_msg = _('Помилка. Неможливо створити елемент. %s' ) % self.verbose_name_i18n if self.request.is_xhr: return xhr_flash_errors([flash_msg], self.request) self.context.update({'form': form}) self.context.update({'my_model': self.model.__name__.lower()}) self.request.session.flash(flash_msg) return render_to_response('%s:templates/admin_create.mako' % APP_NAME, self.context, request=self.request) flash_msg = _( '%s успішно створено.') % self.verbose_name_i18n.capitalize() if self.request.is_xhr: return xhr_flash_messages([flash_msg], self.request) self.request.session.flash(flash_msg) return HTTPFound(location=self.get_redirect_location(obj))
def delete(self): if 'id' in self.request.matchdict: id = self.request.matchdict['id'] else: id = self.request.params.get('id') if not id: flash_msg = _('Помилка. Не вибраний жоден з елементів.') if self.request.is_xhr: return xhr_flash_errors([flash_msg], self.request) self.request.session.flash(flash_msg) return HTTPFound( location=self.request.route_url('%s_list' % self.verbose_name)) try: self.before_delete() obj = self.db.query(self.model).filter_by(id=id).delete() self.after_delete() except: flash_msg = _('Неможливо видалити елемент.') if self.request.is_xhr: return xhr_flash_errors([flash_msg], self.request) self.request.session.flash(flash_msg) else: flash_msg = _('Елемент успішно видалений.') if self.request.is_xhr: return xhr_flash_messages([flash_msg], self.request) self.request.session.flash(flash_msg) return HTTPFound(location=self.get_redirect_location(obj))
def view(self): if 'slug' in self.request.matchdict: slug = self.request.matchdict.get('slug') obj = self.db.query(self.model).filter_by(slug=slug).first() else: id = self.request.matchdict.get('id') obj = self.db.query(self.model).filter_by(id=id).first() if obj: self.context.update({'object': obj}) self.context.update({'my_model': self.model.__name__.lower()}) return render_to_response('%s:templates/admin_view.mako' % APP_NAME, self.context, request=self.request) else: self.request.session.flash( _('Помилка при перегляді елементу.') % self.verbose_name_i18n) return HTTPFound(location=self.get_redirect_location(obj))
def edit(self): if 'id' in self.request.matchdict: id = self.request.matchdict['id'] else: id = self.request.params.get('id') obj = self.db.query(self.model).filter_by(id=id).first() if obj: form = self.form(model=self.model, obj=obj) else: self.request.session.flash( _('Помилка. Не вибраний жоден з елементів.')) return HTTPFound( location=self.request.route_url('%s_list' % self.verbose_name)) self.context.update({'form': form, 'id': id}) self.context.update({'my_model': self.model.__name__.lower()}) return render_to_response('%s:templates/admin_update.mako' % APP_NAME, self.context, request=self.request)
def add_localizer(event, request=None): if request is None: request = getattr(event, 'request', get_current_request()) request.translate = lambda string: _(string, request=request)