Skip to content

Commit f4504d7

Browse files
Merge pull request apel#318 from tofu-rocketry/refactor-records
Refactor records
2 parents c48c3c5 + f1217de commit f4504d7

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

apel/db/loader/record_factory.py

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,27 +87,30 @@ def create_records(self, msg_text):
8787
# recreate message as string having removed header
8888
msg_text = '\n'.join(lines)
8989

90-
created_records = []
91-
9290
# crop the string to before the first ':'
9391
index = header.index(':')
9492
msg_header_type = header[0:index].strip()
9593
# msg_header_version = header[index:].strip()
9694

97-
if msg_header_type == RecordFactory.JR_HEADER:
98-
created_records = self._create_record_objects(msg_text, JobRecord)
99-
elif header.strip() == RecordFactory.SR_HEADER:
100-
created_records = self._create_record_objects(msg_text, SummaryRecord)
101-
elif header.strip() == RecordFactory.NSR_HEADER:
102-
created_records = self._create_record_objects(msg_text, NormalisedSummaryRecord)
103-
elif msg_header_type == RecordFactory.SYNC_HEADER:
104-
created_records = self._create_record_objects(msg_text, SyncRecord)
105-
elif msg_header_type == RecordFactory.CLOUD_HEADER:
106-
created_records = self._create_record_objects(msg_text, CloudRecord)
107-
elif msg_header_type == RecordFactory.CLOUD_SUMMARY_HEADER:
108-
created_records = self._create_record_objects(msg_text, CloudSummaryRecord)
109-
else:
110-
raise RecordFactoryException('Message type %s not recognised.' % header)
95+
record_mapping = {
96+
RecordFactory.JR_HEADER: JobRecord,
97+
RecordFactory.SR_HEADER: SummaryRecord,
98+
RecordFactory.NSR_HEADER: NormalisedSummaryRecord,
99+
RecordFactory.SYNC_HEADER: SyncRecord,
100+
RecordFactory.CLOUD_HEADER: CloudRecord,
101+
RecordFactory.CLOUD_SUMMARY_HEADER: CloudSummaryRecord,
102+
}
103+
104+
try:
105+
record_type = record_mapping[msg_header_type]
106+
except KeyError:
107+
try:
108+
# Use the full header to distinguish normalised and non-norm summaries.
109+
record_type = record_mapping[header]
110+
except KeyError:
111+
raise RecordFactoryException('Message type %s not recognised.' % header)
112+
113+
created_records = self._create_record_objects(msg_text, record_type)
111114

112115
return created_records
113116

apel/db/records/record.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,8 @@ def set_all(self, fielddict):
8484
Checks the field type and corrects it if it is necessary.
8585
'''
8686
for key in fielddict:
87-
if key in self._db_fields:
88-
self._record_content[key] = self.checked(key, fielddict[key])
89-
else:
90-
if key not in self._ignored_fields:
91-
raise InvalidRecordException('Unknown field: %s' % key)
87+
self.set_field(key, fielddict[key])
88+
9289

9390
def set_field(self, key, value):
9491
'''

0 commit comments

Comments
 (0)