Django

Code

Changeset 698

Show
Ignore:
Timestamp:
09/26/05 00:12:22 (3 years ago)
Author:
adrian
Message:

Subclassed models now use their own class name (or explicitly defined verbose_name) as the verbose_name, not the parent's verbose_name. See also #558 and [697].

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/core/meta/__init__.py

    r697 r698  
    386386        new_functions[k] = func 
    387387 
     388# Calculate the module_name using a poor-man's pluralization. 
     389get_module_name = lambda class_name: class_name.lower() + 's' 
     390 
     391# Calculate the verbose_name by converting from InitialCaps to "lowercase with spaces". 
     392get_verbose_name = lambda class_name: re.sub('([A-Z])', ' \\1', class_name).lower().strip() 
     393 
    388394class ModelBase(type): 
    389395    "Metaclass for all models" 
     
    431437            # simultaneously remove them from attrs. When this is done, attrs 
    432438            # will be a dictionary of custom methods, plus __module__. 
    433             meta_overrides = {'fields': fields, 'module_name': name.lower() + 's'
     439            meta_overrides = {'fields': fields, 'module_name': get_module_name(name), 'verbose_name': get_verbose_name(name)
    434440            for k, v in meta_attrs.items(): 
    435441                if not callable(v) and k != '__module__': 
     
    440446        else: 
    441447            opts = Options( 
    442                 # If the module_name wasn't given, use the class name 
    443                 # in lowercase, plus a trailing "s" -- a poor-man's 
    444                 # pluralization. 
    445                 module_name = meta_attrs.pop('module_name', name.lower() + 's'), 
     448                module_name = meta_attrs.pop('module_name', get_module_name(name)), 
    446449                # If the verbose_name wasn't given, use the class name, 
    447450                # converted from InitialCaps to "lowercase with spaces". 
    448                 verbose_name = meta_attrs.pop('verbose_name', 
    449                     re.sub('([A-Z])', ' \\1', name).lower().strip()), 
     451                verbose_name = meta_attrs.pop('verbose_name', get_verbose_name(name)), 
    450452                verbose_name_plural = meta_attrs.pop('verbose_name_plural', ''), 
    451453                db_table = meta_attrs.pop('db_table', ''),