Opened 12 years ago
Closed 12 years ago
#22070 closed Bug (fixed)
Admin index shows mixed lowercase and capitalized app names when using contrib apps and old-style apps
| Reported by: | Ben Davis | Owned by: | jenkinsbr2 |
|---|---|---|---|
| Component: | Core (Other) | Version: | dev |
| Severity: | Release blocker | Keywords: | admin app-loading |
| Cc: | Ben Davis, jenkinsbr2 | Triage Stage: | Accepted |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | yes | UI/UX: | no |
Description (last modified by )
The base AppConfig class uses self.label.title() for verbose_name if verbose_name is not supplied. The new AppConfigs in django.contrib use lowercase verbose names. This causes the admin index to look a bit sloppy when old-style apps are capitalized while new-style apps are all lowercase.
In my opinion, one of the following changes should be made:
- All contrib apps should follow the convention for verbose_names used by the default
AppConfig - The default
AppConfigshould follow the same convention for verbose name as the contrib apps - The admin template should force all app names to use the same title convention (e.g.,
{% verbose_name|title %})
I'm in favor of any of these options -- the main goal here is consistency.
Change History (11)
comment:1 by , 12 years ago
| Cc: | added |
|---|
comment:2 by , 12 years ago
| Keywords: | app-loading added |
|---|
comment:3 by , 12 years ago
| Description: | modified (diff) |
|---|---|
| Triage Stage: | Unreviewed → Accepted |
comment:4 by , 12 years ago
| Cc: | added |
|---|---|
| Owner: | changed from to |
| Status: | new → assigned |
comment:5 by , 12 years ago
comment:6 by , 12 years ago
I think we should change the strings to be title case. Calling title() is a dead end - you might want the string to start with a lower case letter, eg "mYk's Gallery".
comment:8 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
comment:9 by , 12 years ago
I disagree with that commit and I think it must be reverted.
Application names must be lower case for the same reason model names are lower case.
If templates need an title-cased version, they can title-ize or capitalize the value.
I've been working on a patch since last week-end and I hope to complete it this week-end.
comment:10 by , 12 years ago
| Component: | contrib.admin → Core (Other) |
|---|---|
| Resolution: | fixed |
| Severity: | Normal → Release blocker |
| Status: | closed → new |
| Type: | Cleanup/optimization → Bug |
comment:11 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
I changed my mind: https://groups.google.com/d/msg/django-developers/t3hnHQAhEg8/kdLfb2m1BE8J.
I'll reopen the ticket again if the discussion brings up new ideas.
This seems like a good ticket for me to get my feet wet with a contribution. I'd just like to clarify a couple of things and see if my thinking is correct. Going through listed options, I'd tend to immediately discard option 2 - seems to me that title case is what we would want here. At first I thought option 3 would be the most elegant solution, however I realized that that will not take care of other instances in the page title, header, and breadcrumbs - do we care about title casing in those spots? I think the title case is generally nicer looking and of course the title filter could be added in several locations in the template, but unnecessary filters cluttering the template seems undesirable. All considered option 1 seems to be the easiest and most comprehensive change. My question is: do I simply change each instance of apps.py in
django.contrib.*to reflect the correct title cased verbose name? Would it be more desirable to change the string or to call.title()on it?I appreciate any feedback (and patience with dumb questions!)