Skip to content

Commit

Permalink
Remove BaseDataProxy._get_field to_raise attribute
Browse files Browse the repository at this point in the history
  • Loading branch information
lafrech committed Oct 20, 2020
1 parent c8ffbe6 commit 409195f
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 17 deletions.
16 changes: 7 additions & 9 deletions umongo/data_proxy.py
Expand Up @@ -92,19 +92,17 @@ def load(self, data):
# TODO: mark added missing fields as modified?
self._add_missing_fields()

def _get_field(self, name, to_raise):
if name not in self._fields:
raise to_raise(name)
def _get_field(self, name):
field = self._fields[name]
name = field.attribute or name
return name, field

def get(self, name, to_raise=KeyError):
name, _ = self._get_field(name, to_raise)
def get(self, name):
name, _ = self._get_field(name)
return self._data[name]

def set(self, name, value, to_raise=KeyError):
name, field = self._get_field(name, to_raise)
def set(self, name, value):
name, field = self._get_field(name)
if value is None and not getattr(field, 'allow_none', False):
raise ma.ValidationError(field.error_messages['null'])
if value is not None:
Expand All @@ -113,8 +111,8 @@ def set(self, name, value, to_raise=KeyError):
self._data[name] = value
self._mark_as_modified(name)

def delete(self, name, to_raise=KeyError):
name, field = self._get_field(name, to_raise)
def delete(self, name):
name, field = self._get_field(name)
default = field.default
self._data[name] = default() if callable(default) else default
self._mark_as_modified(name)
Expand Down
4 changes: 2 additions & 2 deletions umongo/document.py
Expand Up @@ -270,15 +270,15 @@ def __setattr__(self, name, value):
if name in self._fields:
if self.is_created and name == self.pk_field:
raise AlreadyCreatedError("Can't modify id of a created document")
self._data.set(name, value, to_raise=AttributeError)
self._data.set(name, value)
else:
super().__setattr__(name, value)

def __delattr__(self, name):
if name in self._fields:
if self.is_created and name == self.pk_field:
raise AlreadyCreatedError("Can't modify pk of a created document")
self._data.delete(name, to_raise=AttributeError)
self._data.delete(name)
else:
super().__delattr__(name)

Expand Down
12 changes: 6 additions & 6 deletions umongo/embedded_document.py
Expand Up @@ -169,18 +169,18 @@ def __setitem__(self, name, value):

def __setattr__(self, name, value):
if name in self._fields:
self._data.set(name, value, to_raise=AttributeError)
self._data.set(name, value)
else:
super().__setattr__(name, value)

def __getattr__(self, name):
if name[:2] == name[-2:] == '__':
raise AttributeError(name)
value = self._data.get(name, to_raise=AttributeError)
return None if value is ma.missing and not EXPOSE_MISSING.get() else value
if name in self._fields:
value = self._data.get(name)
return None if value is ma.missing and not EXPOSE_MISSING.get() else value
raise AttributeError(name)

def __delattr__(self, name):
if name in self._fields:
self._data.delete(name, to_raise=AttributeError)
self._data.delete(name)
else:
super().__delattr__(name)

0 comments on commit 409195f

Please sign in to comment.