def mass_delete_view(self): items_list = self.request.POST.getall('selected_item') primary_keys = [ pk_list_to_dict(json.loads(item)) for item in items_list ] objects = self.context.crud.read(*primary_keys) try: if hasattr(objects, 'delete'): object_names = [escape(x.__repr__() or '') for x in objects] objects.delete() else: object_names = [ escape(objects.__repr__() or ''), ] self.request.dbsession.delete(objects) except (NoResultFound, KeyError): raise HTTPNotFound except SacrudException as e: self.flash_message(e.message, status=e.status) except Exception as e: transaction.abort() logging.exception("Something awful happened!") raise e transaction.commit() self.flash_message(_ps("You delete the following objects:")) [self.flash_message(obj) for obj in object_names] return self.list_view_response()
def delete_view(self): if not hasattr(self.context, 'obj'): raise HTTPNotFound self.context.dbsession.delete(self.context.obj) self.commit() self.flash_message( _ps("You have removed object of ${name}", mapping={'name': escape(text_type(self.context.obj) or '')})) return self.list_view_response()
def edit_form_post_view(self): form = self.context.form(self.request) params = {'form': form.render()} def get_reponse(form=None): if form: params['form'] = form return render_to_response(self.context.renderer, params, request=self.request) if 'form.submitted' in self.request.params: controls = self.request.POST.items() pstruct = peppercorn.parse(controls) # Validate form try: deserialized = form.validate_pstruct(pstruct).values() except deform.ValidationFailure as e: return get_reponse(e.render()) data = { k: preprocessing_value(k, v, form) # TODO: optimize it for d in deserialized for k, v in d.items() } # Update object try: if self.context.obj: obj = self.context.crud._add(self.context.obj, data) flash_action = 'updated' else: obj = self.context.crud.create(data) flash_action = 'created' name = obj.__repr__() self.context.dbsession.flush() except SacrudException as e: self.flash_message(e.message, status=e.status) return get_reponse() except Exception as e: self.abort() logging.exception("Something awful happened!") raise e self.commit() # Make response self.flash_message( _ps(u"You ${action} object of ${name}", mapping={ 'action': flash_action, 'name': escape(name or '') })) return self.list_view_response() return get_reponse()
def edit_form_post_view(self): form = self.context.form(self.request) params = {'form': form.render()} def get_reponse(form=None): if form: params['form'] = form return render_to_response( self.context.renderer, params, request=self.request ) if 'form.submitted' in self.request.params: controls = self.request.POST.items() pstruct = peppercorn.parse(controls) # Validate form try: deserialized = form.validate_pstruct(pstruct).values() except deform.ValidationFailure as e: return get_reponse(e.render()) data = {k: preprocessing_value(k, v, form) # TODO: optimize it for d in deserialized for k, v in d.items()} # Update object try: if self.context.obj: obj = self.context.sacrud._add(self.context.obj, data) flash_action = 'updated' else: obj = self.context.sacrud.create(data) flash_action = 'created' name = obj.__repr__() self.context.dbsession.flush() except SacrudException as e: self.flash_message(e.message, status=e.status) return get_reponse() except Exception as e: self.abort() logging.exception("Something awful happened!") raise e self.commit() # Make response self.flash_message(_ps( u"You ${action} object of ${name}", mapping={'action': flash_action, 'name': escape(name or '')} )) return self.list_view_response() return get_reponse()
def mass_delete_view(self): items_list = self.request.POST.getall('selected_item') primary_keys = [pk_list_to_dict(json.loads(item)) for item in items_list] objects = self.context.sacrud.read(*primary_keys) try: if hasattr(objects, 'delete'): object_names = [escape(x.__repr__() or '') for x in objects] objects.delete() else: object_names = [escape(objects.__repr__() or ''), ] self.request.dbsession.delete(objects) except (NoResultFound, KeyError): raise HTTPNotFound except SacrudException as e: self.flash_message(e.message, status=e.status) except Exception as e: transaction.abort() logging.exception("Something awful happened!") raise e transaction.commit() self.flash_message(_ps("You delete the following objects:")) [self.flash_message(obj) for obj in object_names] return self.list_view_response()