Fix bug where we weren't properly caching enum values and we were always looking up the media type when constructing manifests
This commit is contained in:
parent
ed75daf3d9
commit
bbfb0211dc
5 changed files with 51 additions and 21 deletions
|
@ -398,6 +398,16 @@ class QuayUserField(ForeignKeyField):
|
|||
super(QuayUserField, self).__init__(*args, **kwargs)
|
||||
|
||||
|
||||
@lru_cache(maxsize=16)
|
||||
def _get_enum_field_values(enum_field):
|
||||
values = []
|
||||
for row in enum_field.rel_model.select():
|
||||
key = getattr(row, enum_field.enum_key_field)
|
||||
value = getattr(row, 'id')
|
||||
values.append((key, value))
|
||||
return Enum(enum_field.rel_model.__name__, values)
|
||||
|
||||
|
||||
class EnumField(ForeignKeyField):
|
||||
""" Create a cached python Enum from an EnumTable """
|
||||
def __init__(self, model, enum_key_field='name', *args, **kwargs):
|
||||
|
@ -409,15 +419,9 @@ class EnumField(ForeignKeyField):
|
|||
super(EnumField, self).__init__(model, *args, **kwargs)
|
||||
|
||||
@property
|
||||
@lru_cache(maxsize=1)
|
||||
def enum(self):
|
||||
""" Returns a python enun.Enum generated from the associated EnumTable """
|
||||
values = []
|
||||
for row in self.rel_model.select():
|
||||
key = getattr(row, self.enum_key_field)
|
||||
value = getattr(row, 'id')
|
||||
values.append((key, value))
|
||||
return Enum(self.rel_model.__name__, values)
|
||||
return _get_enum_field_values(self)
|
||||
|
||||
def get_id(self, name):
|
||||
""" Returns the ForeignKeyId from the name field
|
||||
|
|
Reference in a new issue