Source code for dcolumn.common
# -*- coding: utf-8 -*-
#
# dcolumn/common/__init__.py
#
"""
Implementation class.
"""
__docformat__ = "restructuredtext en"
import re
from string import ascii_letters, digits
_DEFAULT_CHARS = ascii_letters + digits
__all__ = ('ChoiceManagerImplementation', 'create_field_name',)
#
# ChoiceManagerImplementation
#
[docs]class ChoiceManagerImplementation(object):
"""
Manditory methods that must be defined in both choice models and Django
models.
"""
[docs] def get_value_by_pk(self, pk, field=None):
raise NotImplementedError("Must implement 'get_value_by_pk'.")
[docs] def get_choices(self, field, comment=True, sort=True):
raise NotImplementedError("Must implement 'get_choices'.")
[docs] def model_objects(self, active=True):
raise NotImplementedError("Must implement 'model_objects'.")
[docs]def create_field_name(value):
value = ''.join([c if c in _DEFAULT_CHARS else '_' for c in value])
m = re.search(r'[_]{2,1000}', value)
while m:
start, stop = m.span() if m else (0, 0)
s = value[start: stop]
value = value.replace(s, '_')
m = re.search(r'[_]{2,1000}', value)
return value.lower()