mirror of
https://github.com/zulip/zulip.git
synced 2025-10-23 04:52:12 +00:00
Depending on PostgreSQL’s query plan, it was possible for the value condition to be evaluated before the field_type condition was checked, leading to errors like psycopg2.errors.InvalidDatetimeFormat: invalid value "stri" for "YYYY" DETAIL: Value must be an integer. Signed-off-by: Anders Kaseorg <anders@zulip.com>
31 lines
926 B
Python
31 lines
926 B
Python
from django.db import migrations
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
"""
|
|
We previously accepted invalid ISO 8601 dates like 1909-3-5 for
|
|
date values of custom profile fields. Correct them by adding the
|
|
missing leading zeros: 1909-03-05.
|
|
"""
|
|
|
|
dependencies = [
|
|
("zerver", "0305_realm_deactivated_redirect"),
|
|
]
|
|
|
|
operations = [
|
|
migrations.RunSQL(
|
|
sql="""\
|
|
UPDATE zerver_customprofilefieldvalue
|
|
SET value = to_char(to_date(value, 'YYYY-MM-DD'), 'YYYY-MM-DD')
|
|
FROM zerver_customprofilefield AS f
|
|
WHERE f.id = field_id
|
|
AND f.field_type = 4
|
|
AND CASE
|
|
WHEN f.field_type = 4
|
|
THEN value <> to_char(to_date(value, 'YYYY-MM-DD'), 'YYYY-MM-DD')
|
|
END;
|
|
""",
|
|
reverse_sql="",
|
|
),
|
|
]
|