Source code for django_find.handlers

from django.db import models

[docs]class FieldHandler(object): """ Abstract base type for all field handlers. A field handler is an object that you can use to define custom behavior when searching a field of a model. You might want to use a field handler if you are using a custom model field, or if your query contains information that requires client-side processing before being passed to the database. """ db_type = None
[docs] @classmethod def handles(cls, model, field): raise NotImplemented
[docs] @classmethod def prepare(cls, value): return value
[docs]class StrFieldHandler(FieldHandler): db_type = 'STR'
[docs] @classmethod def handles(cls, model, field): return isinstance(field, (models.CharField, models.TextField))
[docs]class LowerCaseStrFieldHandler(StrFieldHandler): db_type = 'LCSTR'
[docs]class IPAddressFieldHandler(LowerCaseStrFieldHandler):
[docs] @classmethod def handles(cls, model, field): return isinstance(field, models.GenericIPAddressField)
[docs]class BooleanFieldHandler(FieldHandler): db_type = 'BOOL'
[docs] @classmethod def handles(cls, model, field): return isinstance(field, models.BooleanField)
[docs]class IntegerFieldHandler(FieldHandler): db_type = 'INT'
[docs] @classmethod def handles(cls, model, field): return isinstance(field, (models.IntegerField, models.AutoField))
[docs]class DateFieldHandler(FieldHandler): db_type = 'DATE'
[docs] @classmethod def handles(cls, model, field): return isinstance(field, models.DateField)
[docs]class DateTimeFieldHandler(FieldHandler): db_type = 'DATETIME'
[docs] @classmethod def handles(cls, model, field): return isinstance(field, models.DateTimeField)
type_registry = [ LowerCaseStrFieldHandler, IPAddressFieldHandler, BooleanFieldHandler, IntegerFieldHandler, DateTimeFieldHandler, DateFieldHandler, ]