datatracker/ietf/nomcom/migrations/0005_user_to_person.py
Robert Sparks d9cc26be96
feat: replace references to User with references to Person (#6024)
* refactor: change references from User to Person (#5821)

* refactor: Change CommunityList reference from User to Person

* refactor: Convert more user references to person

* refactor: Change augment_docs_and_user_with_user_info to person

* refactor: Change Nomination and Feedback references from User to Person

* refactor: Change a few test case function signatures to be more pythonic

* refactor: Harmonize how profile and photo views look up email_or_name

* refactor: Rework community views to operate on Person instead of User (#5859)

* test: Update tests to try all of the person's emails and aliases

* fix: Recode a test case to avoid an exception if there's Unicode in the URL

This only happens using the form-filling and submission feature of
WebTest, which is only used in this one test case, so just it rip out.

* test: Add duplicate-person tests

* fix: If there are multiple matching users, prefer the logged-in one.

* chore: We no longer use WebTest, so don't include it.

* fix: Address review comments

* fix: case-insensitive person name or email matching (#6096)

* chore: Renumber migrations

* fix: Update merged code so tests pass (#6887)

* fix: Use refactored method

* fix: Don't assume user has person

* fix: Use new view param name

* chore: Drop community lists w/o person; cleanup (#6896)

* fix: Don't assume user has person

* fix: user->person in update_community_list_index.py

* feat: Remove CommunityLists without Person

* refactor: Speed up nomcom migrations

---------

Co-authored-by: Paul Selkirk <paul@painless-security.com>
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
2024-01-24 11:00:19 -06:00

101 lines
2.9 KiB
Python

# Generated by Django 4.2.2 on 2023-06-14 19:47
from django.db import migrations
from django.db.models import OuterRef, Subquery
import django.db.models.deletion
import ietf.utils.models
def forward(apps, schema_editor):
Nomination = apps.get_model('nomcom', 'Nomination')
Person = apps.get_model("person", "Person")
Nomination.objects.exclude(
user__isnull=True
).update(
person=Subquery(
Person.objects.filter(user_id=OuterRef("user_id")).values("pk")[:1]
)
)
Feedback = apps.get_model('nomcom', 'Feedback')
Feedback.objects.exclude(
user__isnull=True
).update(
person=Subquery(
Person.objects.filter(user_id=OuterRef("user_id")).values("pk")[:1]
)
)
def reverse(apps, schema_editor):
Nomination = apps.get_model('nomcom', 'Nomination')
Person = apps.get_model("person", "Person")
Nomination.objects.exclude(
person__isnull=True
).update(
user_id=Subquery(
Person.objects.filter(pk=OuterRef("person_id")).values("user_id")[:1]
)
)
Feedback = apps.get_model('nomcom', 'Feedback')
Feedback.objects.exclude(
person__isnull=True
).update(
user_id=Subquery(
Person.objects.filter(pk=OuterRef("person_id")).values("user_id")[:1]
)
)
class Migration(migrations.Migration):
dependencies = [
("person", "0001_initial"),
("nomcom", "0004_volunteer_origin_volunteer_time_volunteer_withdrawn"),
]
operations = [
migrations.AddField(
model_name="feedback",
name="person",
field=ietf.utils.models.ForeignKey(
blank=True,
editable=False,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="person.person",
),
),
migrations.AddField(
model_name="nomination",
name="person",
field=ietf.utils.models.ForeignKey(
editable=False,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="person.person",
),
),
migrations.RunPython(forward, reverse),
migrations.RemoveField(
model_name="feedback",
name="user",
field=ietf.utils.models.ForeignKey(
blank=True,
editable=False,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="user.user",
),
),
migrations.RemoveField(
model_name="nomination",
name="user",
field=ietf.utils.models.ForeignKey(
blank=True,
editable=False,
null=True,
on_delete=django.db.models.deletion.SET_NULL,
to="user.user",
),
),
]