Files @ 4f0871b0322a
Branch filter:

Location: symposion_app/vendor/registrasion/registrasion/controllers/for_id.py

Joel Addison
Update social image
from django.core.exceptions import ObjectDoesNotExist
from django.http import Http404


class ForId(object):
    ''' Mixin class that gives you new classmethods: for_id for_id_or_404.
    These let you retrieve an instance of the class by specifying the model ID.

    Your subclass must define __MODEL__ as a class attribute. This will be the
    model class that we wrap. There must also be a constructor that takes a
    single argument: the instance of the model that we are controlling. '''

    @classmethod
    def for_id(cls, id_):
        id_ = int(id_)
        obj = cls.__MODEL__.objects.get(pk=id_)
        return cls(obj)

    @classmethod
    def for_id_or_404(cls, id_):
        try:
            return cls.for_id(id_)
        except ObjectDoesNotExist:
            raise Http404()