#31200: Default permissions creation raises a DataError on excessively long 
model
names
----------------------------------------------+------------------------
               Reporter:  Michael Mulholland  |          Owner:  nobody
                   Type:  Bug                 |         Status:  new
              Component:  contrib.auth        |        Version:  2.2
               Severity:  Normal              |       Keywords:
           Triage Stage:  Unreviewed          |      Has patch:  0
    Needs documentation:  0                   |    Needs tests:  0
Patch needs improvement:  0                   |  Easy pickings:  0
                  UI/UX:  0                   |
----------------------------------------------+------------------------
 I stumbled across this while performing some migrations on models with
 rather... descriptive names (my original model was dynamically created).

 Anyway, it looks like in cases where a model name is just under the 100
 character limit, and contrib.auth is used, the codenames generated for the
 default permissions (ie. add_*, change_*, delete_*, view_*) can exceed the
 maximum 100 characters on the Permission model.

 As an example, the model below having a 98 character name allows
 migrations to be generated, but upon running the migration, a database
 error is raised when it tries to create permissions with codenames above
 100 characters.

 The model:
 {{{
 class
 
SomeExcessivelyDescriptiveModelWithAnAbsolutelyRidiculousNameThatCouldntEverNeedToBeNearlyThisLong(models.Model):
     field1 = models.CharField(max_length=25)
 }}}

 The error:

 {{{
 django.db.utils.DataError: value too long for type character varying(100)
 }}}

 While I'm aware that you can override the default permissions by setting
 Meta.default_permissions on the model (this is how I fixed my app), and
 that the majority of people would never need model names this long, I
 figured it might be worth adding validation for this case since it uses
 contrib.auth's default behaviour. Also, the error message originally came
 up while using a flush command, which seemed counterintuitive.

-- 
Ticket URL: <https://code.djangoproject.com/ticket/31200>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-updates+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-updates/055.54c40a025f25616b4e30950d19cf93df%40djangoproject.com.

Reply via email to