コード例 #1
0
 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()
コード例 #2
0
 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()
コード例 #3
0
    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()
コード例 #4
0
ファイル: views.py プロジェクト: sacrud/ps_alchemy
    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()
コード例 #5
0
ファイル: views.py プロジェクト: sacrud/ps_alchemy
 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()