Skip to content

Commit cc62c42

Browse files
Make importation check for the name already being registered.
Also, use the new whole-name 'name' field.
1 parent 63c1e80 commit cc62c42

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

model/database.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,11 @@ def add_person(name_record, main_record):
280280
name_record['link_id'] = link_id # todo: make it index by this
281281
main_record['membership_number'] = membership_number
282282
name_record['membership_number'] = membership_number
283+
if (database[collection_names['profiles']].find({'given_name': name_record.get('given_name', "NoSuchGivenName"),
284+
'surname': name_record.get('surname', "NoSuchSurname")})
285+
or database[collection_names['profiles']].find({'name': name_record.get('name', "NoSuchName")})):
286+
print("Skipping", name_record, "as there is already someone with that name")
287+
return None
283288
print("Adding", main_record, "to operational database", collection_names['people'])
284289
database[collection_names['people']].insert(main_record)
285290
print("Adding", name_record, "to profiles database", collection_names['profiles'])

utils/importer.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,21 @@ def import0(args):
114114
with open(args.members) as members_file:
115115
for row in csv.DictReader(members_file):
116116
# todo: check that they are not already in the collection
117-
name_parts = row['Name'].rsplit(" ", 1)
117+
name = row['Name']
118+
name_parts = name.rsplit(" ", 1)
118119
member_no = row.get('Member no', "0")
119120
if member_no == "":
120121
member_no = "0"
121-
database.add_person({'membership_number': int(member_no),
122-
'email': row.get('Email', None),
123-
'given_name': name_parts[0],
124-
'surname': name_parts[1],
125-
'known_as': name_parts[0],
126-
'admin_note': row.get('Note', None)},
127-
{'membership_number': member_no})
122+
added_link_id = database.add_person({'membership_number': int(member_no),
123+
'email': row.get('Email', None),
124+
'given_name': name_parts[0],
125+
'surname': name_parts[1],
126+
'name': name,
127+
'known_as': name_parts[0],
128+
'admin_note': row.get('Note', None)},
129+
{'membership_number': member_no})
130+
if added_link_id is None:
131+
continue
128132
added = Person.find(row['Name'])
129133
added.set_fob(row.get('Fob', None))
130134
# todo: find or create a training event to match row['Date inducted']

0 commit comments

Comments
 (0)