Skip to content

Commit

Permalink
fix(persons): Use person UUIDs in merging instead of serial IDs (#11038)
Browse files Browse the repository at this point in the history
* fix(persons): Use person UUIDs in merging instead of serial IDs

* fix tests

Co-authored-by: Tim Glaser <[email protected]>
  • Loading branch information
Twixes and timgl authored Jul 28, 2022
1 parent 3f62f01 commit 08e4489
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 10 deletions.
8 changes: 4 additions & 4 deletions frontend/src/scenes/persons/MergeSplitPerson.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,17 @@ function MergePerson(): JSX.Element {

<LemonSelectMultiple
placeholder="Please select persons to merge"
onChange={(value) => setSelectedPersonsToMerge(value.map((x) => parseInt(x, 10)))}
onChange={(value) => setSelectedPersonsToMerge(value)}
filterOption={false}
onSearch={(value) => setListFilters({ search: value })}
mode="multiple"
data-attr="subscribed-emails"
value={selectedPersonsToMerge.map((x) => x.toString())}
options={(persons.results || [])
.filter((p: PersonType) => p.id && p.uuid !== person.uuid)
.filter((p: PersonType) => p.uuid && p.uuid !== person.uuid)
.map((p) => ({
key: `${p.id}`,
label: `${p.name || p.id}`,
key: p.uuid as string,
label: (p.name || p.uuid) as string,
}))}
disabled={executedLoading}
/>
Expand Down
8 changes: 4 additions & 4 deletions frontend/src/scenes/persons/mergeSplitPersonLogic.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export interface SplitPersonLogicProps {
person: PersonType
}

export type PersonIds = NonNullable<PersonType['id']>[]
export type PersonUuids = NonNullable<PersonType['uuid']>[]

export const mergeSplitPersonLogic = kea<mergeSplitPersonLogicType>({
props: {} as SplitPersonLogicProps,
Expand All @@ -31,7 +31,7 @@ export const mergeSplitPersonLogic = kea<mergeSplitPersonLogicType>({
}),
actions: {
setActivity: (activity: ActivityType) => ({ activity }),
setSelectedPersonsToMerge: (persons: PersonIds) => ({ persons }),
setSelectedPersonsToMerge: (persons: PersonUuids) => ({ persons }),
setSelectedPersonToAssignSplit: (id: string) => ({ id }),
cancel: true,
},
Expand All @@ -44,7 +44,7 @@ export const mergeSplitPersonLogic = kea<mergeSplitPersonLogicType>({
],
person: [props.person, {}],
selectedPersonsToMerge: [
[] as PersonIds,
[] as PersonUuids,
{
setSelectedPersonsToMerge: (_, { persons }) => persons,
},
Expand Down Expand Up @@ -73,7 +73,7 @@ export const mergeSplitPersonLogic = kea<mergeSplitPersonLogicType>({
execute: async () => {
if (values.activity === ActivityType.MERGE) {
const newPerson = await api.create('api/person/' + values.person.id + '/merge/', {
ids: values.selectedPersonsToMerge,
uuids: values.selectedPersonsToMerge,
})
if (newPerson.id) {
lemonToast.success('Persons have been merged')
Expand Down
2 changes: 1 addition & 1 deletion posthog/api/person.py
Original file line number Diff line number Diff line change
Expand Up @@ -372,7 +372,7 @@ def _get_person_property_values_for_key(self, key, value):

@action(methods=["POST"], detail=True)
def merge(self, request: request.Request, pk=None, **kwargs) -> response.Response:
people = Person.objects.filter(team_id=self.team_id, pk__in=request.data.get("ids"))
people = Person.objects.filter(team_id=self.team_id, uuid__in=request.data.get("uuids"))
person = self.get_object()
person.merge_people([p for p in people])

Expand Down
2 changes: 1 addition & 1 deletion posthog/api/test/test_person.py
Original file line number Diff line number Diff line change
Expand Up @@ -252,7 +252,7 @@ def test_merge_people(self, mock_capture_internal) -> None:
)
person2 = _create_person(team=self.team, distinct_ids=["2"], properties={"random_prop": "asdf"})

response = self.client.post("/api/person/%s/merge/" % person1.pk, {"ids": [person2.pk, person3.pk]},)
response = self.client.post("/api/person/%s/merge/" % person1.uuid, {"uuids": [person2.uuid, person3.uuid]},)
mock_capture_internal.assert_has_calls(
[
mock.call(
Expand Down

0 comments on commit 08e4489

Please sign in to comment.