diff --git a/backend/atlas/mutations/import_csv.py b/backend/atlas/mutations/import_csv.py index fb70de1..3bc2a2f 100644 --- a/backend/atlas/mutations/import_csv.py +++ b/backend/atlas/mutations/import_csv.py @@ -23,6 +23,7 @@ "date_of_birth", "title", "reports_to", + "referred_by", "department", "office", "employee_type", @@ -60,6 +61,7 @@ class CsvChange(graphene.ObjectType): department = graphene.Field(StringChange, required=False) office = graphene.Field(StringChange, required=False) reports_to = graphene.Field(StringChange, required=False) + referred_by = graphene.Field(StringChange, required=False) date_started = graphene.Field(DateChange, required=False) date_of_birth = graphene.Field(DateChange, required=False) employee_type = graphene.Field(EmployeeTypeChange, required=False) @@ -175,7 +177,7 @@ def apply_changes(changes: List[Dict], current_user: User = None): value, _ = Office.objects.get_or_create_by_natural_key( *value.split("-") ) - if field == "reports_to" and value: + if field in ("reports_to", "referred_by") and value: value, _ = User.objects.get_or_create_by_natural_key( *value.split("-") ) diff --git a/backend/atlas/mutations/test_import_csv.py b/backend/atlas/mutations/test_import_csv.py index cb778db..67ac81c 100644 --- a/backend/atlas/mutations/test_import_csv.py +++ b/backend/atlas/mutations/test_import_csv.py @@ -15,6 +15,7 @@ department { previous, new } office { previous, new } reportsTo { previous, new } + referredBy { previous, new } employeeType { previous, new } isHuman { previous, new } dateStarted { previous, new } @@ -124,8 +125,8 @@ def test_basic_updates(gql_client, default_superuser): def test_updates_all_attributes(gql_client, default_superuser): csv_file = io.BytesIO( - f"""id,name,email,employee_type,reports_to,department,title,office,is_human,date_started -{str(default_superuser.id)},{default_superuser.name},{default_superuser.email},CONTRACT,blah@example.com,500-Cool,Bruhah,HQ,false,1/1/20 + f"""id,name,email,employee_type,reports_to,referred_by,department,title,office,is_human,date_started +{str(default_superuser.id)},{default_superuser.name},{default_superuser.email},CONTRACT,blah@example.com,blah@example.com,500-Cool,Bruhah,HQ,false,1/1/20 """.strip().encode( "utf-8" ) @@ -143,6 +144,7 @@ def test_updates_all_attributes(gql_client, default_superuser): assert change["user"]["id"] == str(default_superuser.id) assert change["employeeType"] assert change["reportsTo"] + assert change["referredBy"] assert change["office"] assert change["title"] assert change["department"] @@ -169,5 +171,7 @@ def test_updates_all_attributes(gql_client, default_superuser): assert user.profile.office.name == "HQ" assert user.profile.reports_to.name == "blah" assert user.profile.reports_to.email == "blah@example.com" + assert user.profile.referred_by.name == "blah" + assert user.profile.referred_by.email == "blah@example.com" assert user.profile.is_human is False assert user.profile.date_started == date(2020, 1, 1) diff --git a/frontend/src/pages/AdminImportExportPeople.js b/frontend/src/pages/AdminImportExportPeople.js index 0211465..f794ff5 100644 --- a/frontend/src/pages/AdminImportExportPeople.js +++ b/frontend/src/pages/AdminImportExportPeople.js @@ -56,6 +56,7 @@ class ExportCard extends Component { "date_of_birth", "title", "reports_to", + "referred_by", "department", "office", "employee_type", @@ -70,6 +71,7 @@ class ExportCard extends Component { u.dateOfBirth, u.title, u.reportsTo ? u.reportsTo.email : "", + u.referredBy ? u.referredBy.email : "", formatDepartment(u.department), formatOffice(u.office), u.employeeType ? u.employeeType.id : "", diff --git a/frontend/src/queries.js b/frontend/src/queries.js index 610c1ef..4ac9729 100644 --- a/frontend/src/queries.js +++ b/frontend/src/queries.js @@ -495,6 +495,9 @@ export const EXPORT_PEOPLE_QUERY = gql` reportsTo { email } + referredBy { + email + } } } }