app/django/contrib/localflavor/us/models.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sat, 06 Dec 2008 11:53:26 +0000
changeset 675 14958011dceb
parent 323 ff1a9aa48cfd
permissions -rw-r--r--
Use key().name() instead of link_id This is now possible because key_name is constructed purely from the key fields of an entity. It is not sufficient to use just link_id, that works only for single-scoped entities (e.g., those that either do not have a scope, or that have a scope which itself does not have a scope). It would break if there was an entity that has a scoped scope (it would only include the scope's link_id in the url, which made it impossible to look up the scope as we missed the link_id of the scope's scope). Patch by: Sverre Rabbelier

from django.conf import settings
from django.db.models.fields import Field

class USStateField(Field): 
    def get_internal_type(self): 
        return "USStateField" 
        
    def db_type(self):
        if settings.DATABASE_ENGINE == 'oracle':
            return 'CHAR(2)'
        else:
            return 'varchar(2)'
    
    def formfield(self, **kwargs): 
        from django.contrib.localflavor.us.forms import USStateSelect 
        defaults = {'widget': USStateSelect} 
        defaults.update(kwargs) 
        return super(USStateField, self).formfield(**defaults)

class PhoneNumberField(Field):
    def get_internal_type(self):
        return "PhoneNumberField"

    def db_type(self):
        if settings.DATABASE_ENGINE == 'oracle':
            return 'VARCHAR2(20)'
        else:
            return 'varchar(20)'

    def formfield(self, **kwargs):
        from django.contrib.localflavor.us.forms import USPhoneNumberField
        defaults = {'form_class': USPhoneNumberField}
        defaults.update(kwargs)
        return super(PhoneNumberField, self).formfield(**defaults)