Skip to content

Commit

Permalink
Merge pull request #12 from uw-it-aca/hotfix/attribute-fixes
Browse files Browse the repository at this point in the history
Hotfix/attribute fixes
  • Loading branch information
vegitron committed Apr 11, 2017
2 parents fe29c8d + c5edf9f commit 6480b8a
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
15 changes: 13 additions & 2 deletions restclients_core/models/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,34 @@ def getheader(self, field, default=''):


class Model(object):
initialized = False

def __init__(self, *args, **kwargs):
self._dynamic_fields = set()
self._field_values = {}
self._init()

super(Model, self).__init__()

for key in kwargs:
setattr(self, key, kwargs[key])

def _init(self):
# Some models overrode __init__ without calling super. This keeps
# those models from failing now
if not self.initialized:
self.initialized = True
self._dynamic_fields = set()
self._field_values = {}

def _set_value(self, field_id, value):
self._init()
self._field_values[field_id] = value

def _get_value(self, field_id):
self._init()
return self._field_values[field_id]

def _delete(self, field_id):
self._init()
del(self._field_values[field_id])

def _track_field(self, field):
Expand Down
13 changes: 13 additions & 0 deletions restclients_core/tests/models/test_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,17 @@


class TestModelBase(TestCase):
def test_override_init(self):
class ModelTest(models.Model):
bools = models.BooleanField()

def __init__(self, *args, **kwargs):
pass

model = ModelTest()
model.bools = True
self.assertTrue(model.bools)

def test_field_types(self):
class ModelTest(models.Model):
bools = models.BooleanField()
Expand Down Expand Up @@ -146,9 +157,11 @@ def match_count():
return count

build()
gc.collect()
starting = match_count()

build()
gc.collect()
after_2 = match_count()

self.assertEquals(starting, after_2)

0 comments on commit 6480b8a

Please sign in to comment.