# Path: feincms/contents.py

# 
# Path: feincms/module/medialibrary/contents.py
# class MediaFileContent(ContentWithMediaFile):
#     """
#     Rehashed, backwards-incompatible media file content which does not contain
#     the problems from v1 anymore.
# 
#     Create a media file content as follows::
# 
#         from feincms.content.medialibrary.models import MediaFileContent
#         Page.create_content_type(MediaFileContent, TYPE_CHOICES=(
#             ('default', _('Default')),
#             ('lightbox', _('Lightbox')),
#             ('whatever', _('Whatever')),
#             ))
# 
#     For a media file of type 'image' and type 'lightbox', the following
#     templates are tried in order:
# 
#     * content/mediafile/image_lightbox.html
#     * content/mediafile/image.html
#     * content/mediafile/lightbox.html
#     * content/mediafile/default.html
# 
#     The context contains ``content`` and ``request`` (if available).
#     """
# 
#     feincms_item_editor_inline = MediaFileContentInline
# 
#     class Meta:
#         abstract = True
#         verbose_name = _("media file")
#         verbose_name_plural = _("media files")
# 
#     @classmethod
#     def initialize_type(cls, TYPE_CHOICES=None):
#         if TYPE_CHOICES is None:
#             raise ImproperlyConfigured(
#                 "You have to set TYPE_CHOICES when" " creating a %s" % cls.__name__
#             )
# 
#         cls.add_to_class(
#             "type",
#             models.CharField(
#                 _("type"),
#                 max_length=20,
#                 choices=TYPE_CHOICES,
#                 default=TYPE_CHOICES[0][0],
#             ),
#         )
# 
#     def render(self, **kwargs):
#         return (
#             [
#                 f"content/mediafile/{self.mediafile.type}_{self.type}.html",
#                 "content/mediafile/%s.html" % self.mediafile.type,
#                 "content/mediafile/%s.html" % self.type,
#                 "content/mediafile/default.html",
#             ],
#             {"content": self},
#         )
# 
# Path: tests/testapp/tests/test_stuff.py
# class Empty:
#     """
#     Helper class to use as request substitute (or whatever)
#     """


from django.core.exceptions import ImproperlyConfigured
from django.db import models
from django.test import TestCase
from testapp.models import ExampleCMSBase, ExampleCMSBase2
from feincms.contents import RawContent, RichTextContent
from feincms.module.medialibrary.contents import MediaFileContent
from .test_stuff import Empty




# ------------------------------------------------------------------------
class SubRawContent(RawContent):
    title = models.CharField("title", max_length=100, blank=True)

    class Meta:
        abstract = True


class CMSBaseTest(TestCase):
    def test_01_simple_content_type_creation(self):
        self.assertEqual(ExampleCMSBase.content_type_for(RawContent), None)

        ExampleCMSBase.create_content_type(RawContent, regions=("main2",))
        ExampleCMSBase.create_content_type(RichTextContent)

        # content_type_for should return None if it does not have a subclass
        # registered
        self.assertEqual(ExampleCMSBase.content_type_for(Empty), None)

        self.assertTrue(
            "rawcontent"

# Path: feincms/contents.py

# 
# Path: feincms/module/medialibrary/contents.py
# class MediaFileContent(ContentWithMediaFile):
#     """
#     Rehashed, backwards-incompatible media file content which does not contain
#     the problems from v1 anymore.
# 
#     Create a media file content as follows::
# 
#         from feincms.content.medialibrary.models import MediaFileContent
#         Page.create_content_type(MediaFileContent, TYPE_CHOICES=(
#             ('default', _('Default')),
#             ('lightbox', _('Lightbox')),
#             ('whatever', _('Whatever')),
#             ))
# 
#     For a media file of type 'image' and type 'lightbox', the following
#     templates are tried in order:
# 
#     * content/mediafile/image_lightbox.html
#     * content/mediafile/image.html
#     * content/mediafile/lightbox.html
#     * content/mediafile/default.html
# 
#     The context contains ``content`` and ``request`` (if available).
#     """
# 
#     feincms_item_editor_inline = MediaFileContentInline
# 
#     class Meta:
#         abstract = True
#         verbose_name = _("media file")
#         verbose_name_plural = _("media files")
# 
#     @classmethod
#     def initialize_type(cls, TYPE_CHOICES=None):
#         if TYPE_CHOICES is None:
#             raise ImproperlyConfigured(
#                 "You have to set TYPE_CHOICES when" " creating a %s" % cls.__name__
#             )
# 
#         cls.add_to_class(
#             "type",
#             models.CharField(
#                 _("type"),
#                 max_length=20,
#                 choices=TYPE_CHOICES,
#                 default=TYPE_CHOICES[0][0],
#             ),
#         )
# 
#     def render(self, **kwargs):
#         return (
#             [
#                 f"content/mediafile/{self.mediafile.type}_{self.type}.html",
#                 "content/mediafile/%s.html" % self.mediafile.type,
#                 "content/mediafile/%s.html" % self.type,
#                 "content/mediafile/default.html",
#             ],
#             {"content": self},
#         )
# 
# Path: tests/testapp/tests/test_stuff.py
# class Empty:
#     """
#     Helper class to use as request substitute (or whatever)
#     """


# Path: tests/testapp/tests/test_cms.py
from django.core.exceptions import ImproperlyConfigured
from django.db import models
from django.test import TestCase
from testapp.models import ExampleCMSBase, ExampleCMSBase2
from feincms.contents import RawContent, RichTextContent
from feincms.module.medialibrary.contents import MediaFileContent
from .test_stuff import Empty





# ------------------------------------------------------------------------
class SubRawContent(RawContent):
    title = models.CharField("title", max_length=100, blank=True)

    class Meta:
        abstract = True


class CMSBaseTest(TestCase):
    def test_01_simple_content_type_creation(self):
        self.assertEqual(ExampleCMSBase.content_type_for(RawContent), None)

        ExampleCMSBase.create_content_type(RawContent, regions=("main2",))
        ExampleCMSBase.create_content_type(RichTextContent)

        # content_type_for should return None if it does not have a subclass
        # registered
        self.assertEqual(ExampleCMSBase.content_type_for(Empty), None)

        self.assertTrue(
            "rawcontent"

            not in dict(ExampleCMSBase.template.regions[0].content_types).keys()