from django_inlines.inlines import TemplateInline
from darkroom.models import Photo


class PhotoInline(TemplateInline):
    """
    An inline that takes a darkroom photo id, slug, or just a url returns a photo template with proper width and height.

    Examples::

        {{ photo 34 }}

    The inluded template supports width and height arguments::

        {{ photo 32 size=small }} 

    """

    help_text = (
        "Takes a darkroom photo id or slug and returns a template for the photo."
    )
    inline_args = [dict(name="size", help_text="Small/Medium/Large/Full")]

    def get_context(self):
        try:
            photo = Photo.objects.get(pk=self.value)
        except:
            photo = Photo.objects.get(slug=self.value)
        return {"photo": photo}


class GraphicInline(TemplateInline):
    """
    An inline that takes a darkroom graphic id, slug, or just a url returns a template with size and position classes set.

    Examples::

        {{ graphic 34 }}

    The inluded template supports width and height arguments::

        {{ graphic 32 size=small float=right }} 

    """

    help_text = (
        "Takes a darkroom graphic id or slug and returns a template for the graphic."
    )
    inline_args = [dict(name="size", help_text="Small/Medium/Large/Full")]

    def get_context(self):
        try:
            photo = Graphic.objects.get(pk=self.value)
        except:
            photo = Graphic.objects.get(slug=self.value)
        return {"graphic": graphic}
