# -*- coding: utf-8 -*- from django.contrib.auth import get_user_model from django.contrib.auth.models import Group from django.core.validators import MaxLengthValidator User = get_user_model() # load config from json from . import config config.init() NEW_LENGTH = { 'username': 255, 'email': 254, 'password': 255, } def monkey_patch_groupname(): f = Group._meta.get_field('name') f.max_length = 255 for v in f.validators: if isinstance(v, MaxLengthValidator): v.limit_value = 255 def monkey_patch_username(): for field in NEW_LENGTH: f = User._meta.get_field(field) f.max_length = NEW_LENGTH[field] for v in f.validators: if isinstance(v, MaxLengthValidator): v.limit_value = NEW_LENGTH[field] monkey_patch_groupname() def apply_patch(): from django.db import connection, transaction cursor = connection.cursor() table = connection.introspection.get_table_description(cursor, Group._meta.db_table) sql = [] for row in table: if row.name == 'name' and row.internal_size != 255: sql.append('ALTER TABLE "%s" ALTER "%s" TYPE varchar(%d)' % ( Group._meta.db_table, row.name, 255) ) for q in sql: cursor.execute(q) if sql: transaction.commit() monkey_patch_username()