def test_pk_list_to_dict2(self): foo = [1, 2, 3, "a", "b", {"foo": "bar"}] resp = pk_list_to_dict(foo) self.assertEqual(resp, {1: 2, 3: 'a', 'b': {'foo': 'bar'}}) foo = [1, 2, 3, "a", "b"] resp = pk_list_to_dict(foo) self.assertEqual(resp, None)
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 make_selected_action(self): selected_action = self.request.POST.get('selected_action') items_list = None try: items_list = self.request.POST.getall('selected_item') except AttributeError: items_list = self.request.POST.get('selected_item') if selected_action == 'delete': obj_list = [] for item in items_list: pk_list = json.loads(item) pk = pk_list_to_dict(pk_list) try: obj = self.crud.delete(pk) obj_list.append(obj['name']) except (NoResultFound, KeyError): raise HTTPNotFound except SacrudMessagedException 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("<br/>".join( [escape(x or '') for x in obj_list])) return HTTPFound( location=self.request.route_url('sa_list', table=self.tname))
def mass_delete(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.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 SacrudMessagedException 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("<br/>".join(object_names)) return HTTPFound( location=self.request.route_url(PYRAMID_SACRUD_LIST, table=self.tname))
def _getitem(self, resource, name): primary_key = self.get_primary_key() primary_key.append(name) pk_len = len(self.table.__table__.primary_key) * 2 if len(primary_key) < pk_len: return self.__class__(self.table, self, self.dbsession, name) elif len(primary_key) == pk_len: try: obj = self.crud.read(pk_list_to_dict(primary_key)).one() except sqlalchemy.orm.exc.NoResultFound: return None resource.obj = obj return resource
def __init__(self, request): self.pk = None self.request = request self.tname = request.matchdict["table"] self.table = get_table(self.tname, self.request) self.crud = sacrud_crud(self.request.dbsession, self.table, commit=False) self.params = request.params if hasattr(self.params, "dict_of_lists"): self.params = self.params.dict_of_lists() if not self.table: raise HTTPNotFound pk = request.matchdict.get("pk") if pk and len(pk) % 2 == 0: self.pk = pk_list_to_dict(pk) elif pk or pk == (): raise HTTPNotFound
def __init__(self, request): self.pk = None self.request = request self.tname = request.matchdict['table'] self.table = get_table(self.tname, self.request) self.crud = self.request.dbsession.sacrud(self.table, commit=False) self.params = request.params if hasattr(self.params, 'dict_of_lists'): self.params = self.params.dict_of_lists() if not self.table: raise HTTPNotFound pk = request.matchdict.get('pk') if pk and len(pk) % 2 == 0: self.pk = pk_list_to_dict(pk) elif pk or pk == (): raise HTTPNotFound
def _getitem(self, resource, name): primary_key = self.get_primary_key() primary_key.append(name) pk_len = len(self.table.__table__.primary_key) * 2 if len(primary_key) < pk_len: resource = self.__class__(self.table, self.dbsession, name) resource.__parent__ = self return resource elif len(primary_key) == pk_len: try: obj = self.sacrud.read(pk_list_to_dict(primary_key)).one() except sqlalchemy.orm.exc.NoResultFound: return None resource.obj = obj resource.__parent__ = self return resource
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()
def test_bad_pk_list_to_dict(self): l = ['id', 1, 'id2', 22, 'foo'] d = pk_list_to_dict(l) self.assertEqual(d, None)
def test_pk_list_to_dict(self): l = ['id', 1, 'id2', 22, 'foo', 'bar'] d = pk_list_to_dict(l) self.assertEqual(d, {'foo': 'bar', 'id2': 22, 'id': 1})
def test_pk_list_to_dict(self): l = ["id", 1, "id2", 22, "foo", "bar"] d = pk_list_to_dict(l) self.assertEqual(d, {"foo": "bar", "id2": 22, "id": 1})
def test_bad_pk_list_to_dict(self): l = ["id", 1, "id2", 22, "foo"] d = pk_list_to_dict(l) self.assertEqual(d, None)