mirror of
https://github.com/zulip/zulip.git
synced 2025-11-03 05:23:35 +00:00
models: Enforce stricter requirements on the full_name field.
This changes the requirements for UserProfile to disallow some additional characters, with the overall goal of being able to use formataddr in send_mail.py. We don't need to be particularly careful in the database migration, because user full_names are not required to be unique.
This commit is contained in:
committed by
Tim Abbott
parent
f54a63e2f9
commit
c25dcf048d
@@ -0,0 +1,31 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.20 on 2019-06-28 21:45
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations
|
||||
from django.db.backends.postgresql_psycopg2.schema import DatabaseSchemaEditor
|
||||
from django.db.migrations.state import StateApps
|
||||
from unicodedata import category
|
||||
|
||||
NAME_INVALID_CHARS = ['*', '`', "\\", '>', '"', '@']
|
||||
|
||||
|
||||
def remove_name_illegal_chars(apps: StateApps, schema_editor: DatabaseSchemaEditor) -> None:
|
||||
UserProfile = apps.get_model("zerver", "UserProfile")
|
||||
for user in UserProfile.objects.all():
|
||||
stripped = []
|
||||
for char in user.full_name:
|
||||
if (char not in NAME_INVALID_CHARS) and (category(char)[0] != "C"):
|
||||
stripped.append(char)
|
||||
user.full_name = "".join(stripped)
|
||||
user.save(update_fields=["full_name"])
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0235_userprofile_desktop_icon_count_display'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(remove_name_illegal_chars)
|
||||
]
|
||||
Reference in New Issue
Block a user