Skip to content

Commit

Permalink
Checking metadata fields more carefully
Browse files Browse the repository at this point in the history
  • Loading branch information
Greg Wilson committed Jun 22, 2016
1 parent fc98097 commit 0c9c153
Showing 1 changed file with 30 additions and 7 deletions.
37 changes: 30 additions & 7 deletions bin/lesson_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@
'sql'
}

# What fields are required in episode metadata?
EPISODE_METADATA_FIELDS = {
# What fields are required in teaching episode metadata?
TEACHING_METADATA_FIELDS = {
('title', str),
('teaching', int),
('exercises', int),
Expand All @@ -77,6 +77,13 @@
('keypoints', list)
}

# What fields are required in break episode metadata?
BREAK_METADATA_FIELDS = {
('layout', str),
('title', str),
('break', int)
}

# How long are lines allowed to be?
MAX_LINE_LEN = 100

Expand Down Expand Up @@ -351,11 +358,27 @@ def __init__(self, args, filename, metadata, metadata_len, text, lines, doc):
def check_metadata(self):
super(CheckEpisode, self).check_metadata()
if self.metadata:
for (name, type_) in EPISODE_METADATA_FIELDS:
self.reporter.check(type(self.metadata.get(name, None)) == type_,
self.filename,
'"{0}" missing, empty, or has wrong type in metadata',
name)
if 'layout' in self.metadata:
if self.metadata['layout'] == 'break':
self.check_metadata_fields(BREAK_METADATA_FIELDS)
else:
self.reporter.add(self.filename,
'Unknown episode layout "{0}"',
self.metadata['layout'])
else:
self.check_metadata_fields(TEACHING_METADATA_FIELDS)


def check_metadata_fields(self, expected):
for (name, type_) in expected:
if name not in self.metadata:
self.reporter.add(self.filename,
'Missing metadata field {0}',
name)
elif type(self.metadata[name]) != type_:
self.reporter.add(self.filename,
'"{0}" has wrong type in metadata ({1} instead of {2})',
name, type(self.metadata[name]), type_)


class CheckReference(CheckBase):
Expand Down

0 comments on commit 0c9c153

Please sign in to comment.