﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
23926	Misleading error message provided when custom permission names are too long	Greatlemer	Joeri Bekker	"Whilst adding a new custom permission to a model, I accidentally created one that was too long and instead of being informed the problem was an overly long name field, the validation error raised complained about the verbose name of my model being too long.

This was observed in Django 1.7.1 under python 2.7.

I was able to reproduce it by putting the following code in the models.py of an application listed in INSTALLED_APPS:
{{{
from django.db.models import Model

class Tmp(Model):
    class Meta:
        permissions = (
            (
                'can_do_something_long',
                'A custom permission name with greater than 50 chars',
            ),
        )
}}}


Then when I ran ./manage.py migrate I got the following error:
{{{
(env)blah> python ./manage.py migrate
Operations to perform:
  Synchronize unmigrated apps: blah
  Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
    Creating table blah_tmp
  Installing custom SQL...
  Installing indexes...
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying sessions.0001_initial... OK
Traceback (most recent call last):
  File ""./manage.py"", line 10, in <module>
    execute_from_command_line(sys.argv)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/core/management/__init__.py"", line 385, in execute_from_command_line
    utility.execute()
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/core/management/__init__.py"", line 377, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/core/management/base.py"", line 288, in run_from_argv
    self.execute(*args, **options.__dict__)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/core/management/base.py"", line 338, in execute
    output = self.handle(*args, **options)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/core/management/commands/migrate.py"", line 164, in handle
    emit_post_migrate_signal(created_models, self.verbosity, self.interactive, connection.alias)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/core/management/sql.py"", line 268, in emit_post_migrate_signal
    using=db)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/dispatch/dispatcher.py"", line 198, in send
    response = receiver(signal=self, sender=sender, **named)
  File ""/data/home/ar/tmp/perm_issue/env/lib/python2.7/site-packages/django/contrib/auth/management/__init__.py"", line 111, in create_permissions
    verbose_name_max_length,
django.core.exceptions.ValidationError: [u'The verbose_name of tmp is longer than 39 characters']
}}}"	Bug	closed	contrib.auth	1.7	Normal	fixed		Shai Berger	Ready for checkin	1	0	0	0	0	0
