* 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>
101 lines
2.9 KiB
Python
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",
|
|
),
|
|
),
|
|
]
|