Skip to content

Commit

Permalink
Исправление десериализации
Browse files Browse the repository at this point in the history
В schoolroo.ru отсутствует `Diary.room`, из-за чего было невозможно десериализовать
дневник.
  • Loading branch information
igorlanov committed May 19, 2021
1 parent ae04696 commit 4869759
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 19 deletions.
2 changes: 1 addition & 1 deletion mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ nav:
theme: readthedocs

extra:
version: 5.0.0
version: 5.0.1
2 changes: 1 addition & 1 deletion netschoolapi/netschoolapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ def __init__(self, url: str):
url = url.rstrip('/')
self._client = AsyncClient(
base_url='{0}/webapi'.format(url),
headers={'user-agent': 'NetSchoolAPI/5.0.0', 'referer': url},
headers={'user-agent': 'NetSchoolAPI/5.0.1', 'referer': url},
event_hooks={'response': [_die_on_bad_status]},
)

Expand Down
34 changes: 18 additions & 16 deletions netschoolapi/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,29 +32,31 @@ class Assignment(NetSchoolAPISchema):
data_key='typeId',
)
content = fields.String(data_key='assignmentName')
mark = fields.Function(
deserialize=lambda mark_dict: mark_dict['mark'],
allow_none=True,
data_key='mark',
)
is_duty = fields.Function(
deserialize=lambda mark_dict: mark_dict['dutyMark'],
missing=False,
data_key='mark',
)
mark = fields.Integer(allow_none=True, data_key='mark')
is_duty = fields.Boolean(data_key='dutyMark')
comment = fields.Function(
deserialize=lambda mark_comment: mark_comment['name'],
missing='',
data_key='markComment',
)
deadline = fields.Date(data_key='dueDate')

@pre_load
def unwrap_marks(self, assignment: dict[str, Any], **_) -> dict[str, str]:
mark = assignment.pop('mark')
if mark:
assignment.update(mark)
else:
assignment.update({'mark': None, 'dutyMark': False})
return assignment



class Lesson(NetSchoolAPISchema):
day = fields.Date()
start = fields.Time(data_key='startTime')
end = fields.Time(data_key='endTime')
room = fields.String()
room = fields.String(missing='')
number = fields.Integer()
subject = fields.String(data_key='subjectName')
assignments = fields.List(fields.Nested(Assignment), missing=[])
Expand Down Expand Up @@ -86,8 +88,8 @@ class School(NetSchoolAPISchema):
UVR = fields.String(data_key='principalUVR')

@pre_load
def unwrap_nested_dicts(self, data: dict[str, Any], **_) -> dict[str, str]:
data.update(data.pop('commonInfo'))
data.update(data.pop('contactInfo'))
data.update(data.pop('managementInfo'))
return data
def unwrap_nested_dicts(self, school: dict[str, Any], **_) -> dict[str, str]:
school.update(school.pop('commonInfo'))
school.update(school.pop('contactInfo'))
school.update(school.pop('managementInfo'))
return school
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

setup(
name='netschoolapi',
version='5.0.0',
version='5.0.1',
description='Асинхронный API-клиент для «Сетевого города»',
long_description=long_description,
long_description_content_type='text/markdown',
Expand Down

0 comments on commit 4869759

Please sign in to comment.