fix(csv): 修复`JMSCSVParser`调用`serializer`导致循环调用问题

pull/4498/head
xinwen 2020-07-28 20:28:38 +08:00 committed by 老广
parent ffea2aef02
commit 8cbc98f338
1 changed files with 5 additions and 4 deletions

View File

@ -38,9 +38,9 @@ class JMSCSVParser(BaseParser):
yield row
@staticmethod
def _get_fields_map(serializer):
def _get_fields_map(serializer_cls):
fields_map = {}
fields = serializer.fields
fields = serializer_cls().fields
fields_map.update({v.label: k for k, v in fields.items()})
fields_map.update({k: k for k, _ in fields.items()})
return fields_map
@ -82,7 +82,8 @@ class JMSCSVParser(BaseParser):
def parse(self, stream, media_type=None, parser_context=None):
parser_context = parser_context or {}
try:
serializer = parser_context["view"].get_serializer()
view = parser_context['view']
serializer_cls = view.get_serializer_class()
except Exception as e:
logger.debug(e, exc_info=True)
raise ParseError('The resource does not support imports!')
@ -96,7 +97,7 @@ class JMSCSVParser(BaseParser):
rows = self._gen_rows(binary, charset=encoding)
header = next(rows)
fields_map = self._get_fields_map(serializer)
fields_map = self._get_fields_map(serializer_cls)
header = [fields_map.get(name.strip('*'), '') for name in header]
data = []