mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +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="",
 | 
						|
        ),
 | 
						|
    ]
 |