예제 #1
0
def get_entry_model():
    """
    Return the actual entry model that is in use.

    This function reads the :ref:`FLUENT_BLOGS_ENTRY_MODEL` setting to find the model.
    The model is automatically registered with *django-fluent-comments*
    and *django-any-urlfield* when it's installed.
    """
    global _EntryModel

    if _EntryModel is None:
        # This method is likely called the first time when the admin initializes, the sitemaps module is imported, or BaseBlogMixin is used.
        # Either way, it needs to happen after all apps have initialized, to make sure the model can be imported.
        if not appsettings.FLUENT_BLOGS_ENTRY_MODEL:
            _EntryModel = Entry
        else:
            app_label, model_name = appsettings.FLUENT_BLOGS_ENTRY_MODEL.rsplit('.', 1)
            _EntryModel = get_model(app_label, model_name)

        # Auto-register with django-fluent-comments moderation
        if 'fluent_comments' in settings.INSTALLED_APPS and issubclass(_EntryModel, CommentsEntryMixin):
            from fluent_comments.moderation import moderate_model
            moderate_model(_EntryModel,
                publication_date_field='publication_date',
                enable_comments_field='enable_comments',
            )

        # Auto-register with django-any-urlfield
        if 'any_urlfield' in settings.INSTALLED_APPS:
            from any_urlfield.models import AnyUrlField
            from any_urlfield.forms.widgets import SimpleRawIdWidget
            AnyUrlField.register_model(_EntryModel, widget=SimpleRawIdWidget(_EntryModel))

    return _EntryModel
예제 #2
0
def _register_anyurlfield_type():
    try:
        from any_urlfield.models import AnyUrlField
        from any_urlfield.forms.widgets import SimpleRawIdWidget
    except ImportError:
        pass
    else:
        AnyUrlField.register_model(FaqQuestion, widget=SimpleRawIdWidget(FaqQuestion))
예제 #3
0
def _register_anyurlfield_type():
    try:
        from any_urlfield.models import AnyUrlField
        from any_urlfield.forms.widgets import SimpleRawIdWidget
    except ImportError:
        pass
    else:
        AnyUrlField.register_model(FaqQuestion, widget=SimpleRawIdWidget(FaqQuestion))
예제 #4
0
def _register_cmsfield_url_type():
    try:
        from any_urlfield.models import AnyUrlField
    except ImportError:
        pass
    else:
        from django import forms
        from any_urlfield.forms.widgets import SimpleRawIdWidget
        AnyUrlField.register_model(Page, form_field=PageChoiceField(widget=SimpleRawIdWidget(Page)))
예제 #5
0
def _register_cmsfield_url_type():
    try:
        from any_urlfield.models import AnyUrlField
    except ImportError:
        pass
    else:
        from django import forms
        from any_urlfield.forms.widgets import SimpleRawIdWidget
        AnyUrlField.register_model(Page, form_field=PageChoiceField(queryset=UrlNode.objects.published().non_polymorphic(), widget=SimpleRawIdWidget(Page)))
예제 #6
0
def _register_cmsfield_url_type():
    try:
        from any_urlfield.models import AnyUrlField
    except ImportError:
        pass
    else:
        from django import forms
        from any_urlfield.forms.widgets import SimpleRawIdWidget
        AnyUrlField.register_model(
            Page, form_field=PageChoiceField(widget=SimpleRawIdWidget(Page)))
예제 #7
0
def get_entry_model():
    """
    Return the actual entry model that is in use.

    This function reads the :ref:`FLUENT_BLOGS_ENTRY_MODEL` setting to find the model.
    The model is automatically registered with *django-fluent-comments*
    and *django-any-urlfield* when it's installed.
    """
    global _EntryModel

    if _EntryModel is None:
        # This method is likely called the first time when the admin initializes, the sitemaps module is imported, or BaseBlogMixin is used.
        # Either way, it needs to happen after all apps have initialized, to make sure the model can be imported.
        if not appsettings.FLUENT_BLOGS_ENTRY_MODEL:
            _EntryModel = Entry
        else:
            app_label, model_name = appsettings.FLUENT_BLOGS_ENTRY_MODEL.rsplit(
                '.', 1)
            if django.VERSION < (1, 7):
                _EntryModel = get_model(app_label,
                                        model_name,
                                        only_installed=False)
            else:
                _EntryModel = get_model(app_label, model_name)

            if _EntryModel is None:
                raise ImportError(
                    "{app_label}.{model_name} could not be imported.".format(
                        app_label=app_label, model_name=model_name))

        # Auto-register with django-fluent-comments moderation
        if 'fluent_comments' in settings.INSTALLED_APPS and issubclass(
                _EntryModel, CommentsEntryMixin):
            from fluent_comments.moderation import moderate_model
            moderate_model(
                _EntryModel,
                publication_date_field='publication_date',
                enable_comments_field='enable_comments',
            )

        # Auto-register with django-any-urlfield
        if 'any_urlfield' in settings.INSTALLED_APPS:
            from any_urlfield.models import AnyUrlField
            from any_urlfield.forms.widgets import SimpleRawIdWidget
            AnyUrlField.register_model(_EntryModel,
                                       widget=SimpleRawIdWidget(_EntryModel))

    return _EntryModel
예제 #8
0
def _register_cmsfield_url_type():
    try:
        from any_urlfield.models import AnyUrlField
    except ImportError:
        pass
    else:
        import any_urlfield
        from distutils.version import StrictVersion
        from any_urlfield.forms.widgets import SimpleRawIdWidget

        if StrictVersion(any_urlfield.__version__) >= StrictVersion('2.0a1'):
            # Allow lambda parameter for late evaluation.
            AnyUrlField.register_model(Page, form_field=lambda: PageChoiceField(widget=SimpleRawIdWidget(Page)))
        else:
            # This will run a query at import time!
            AnyUrlField.register_model(Page, form_field=PageChoiceField(widget=SimpleRawIdWidget(Page)))
예제 #9
0
class UrlModel(models.Model):
    """
    Example model for testing AnyUrlField
    """
    url = AnyUrlField()

    def get_absolute_url(self):
        return str(self.url)
예제 #10
0
    def test_resolve_objects(self):
        """
        Make sure ID values are properly stored and serialized.
        """
        page3 = RegPageModel.objects.create(slug='foo3')
        UrlModel.objects.create(url=AnyUrlValue.from_model(page3))
        UrlModel.objects.create(url=AnyUrlValue.from_model(page3))

        qs = list(UrlModel.objects.all())
        with self.assertNumQueries(1):
            AnyUrlField.resolve_objects(qs)
        self.assertTrue(qs[0].url._resolved_objects)
        self.assertTrue(qs[1].url._resolved_objects)

        with self.assertNumQueries(0):
            for obj in qs:
                self.assertEqual(str(obj.url), '/modelform/')
                self.assertTrue(obj.url.exists())
                self.assertEqual(obj.url.get_object(), page3)
예제 #11
0
def _register_cmsfield_url_type():
    try:
        from any_urlfield.models import AnyUrlField
    except ImportError:
        pass
    else:
        import any_urlfield
        from distutils.version import StrictVersion
        from any_urlfield.forms.widgets import SimpleRawIdWidget

        if StrictVersion(any_urlfield.__version__) >= StrictVersion('2.0a1'):
            # Allow lambda parameter for late evaluation.
            AnyUrlField.register_model(Page,
                                       form_field=lambda: PageChoiceField(
                                           widget=SimpleRawIdWidget(Page)))
        else:
            # This will run a query at import time!
            AnyUrlField.register_model(
                Page,
                form_field=PageChoiceField(widget=SimpleRawIdWidget(Page)))
예제 #12
0
class EventPhotos(models.Model):
    event = models.ForeignKey(Event, on_delete=models.CASCADE)
    url = AnyUrlField("URL", max_length=1000)
    time = models.DateTimeField(auto_now=False, auto_now_add=True)

    def __str__(self):
        return self.event.title

    class Meta:
        ordering = ('event', 'time')
        verbose_name_plural = 'Event Photos'
예제 #13
0
class Form(without(AbstractForm, 'redirect_url')):

    redirect_url = AnyUrlField(
        _("Redirect url"),
        max_length=200,
        blank=True, null=True,
        help_text=_("An alternate URL to redirect to after form submission"),
    )

    def get_absolute_url(self):
        raise NotImplementedError

    def admin_links(self):
        kw = {"args": (self.id,)}
        links = [
            (_("Filter entries"), reverse("admin:form_entries", **kw)),
            (_("View all entries"), reverse("admin:form_entries_show", **kw)),
            (_("Export all entries"), reverse("admin:form_entries_export", **kw)),
        ]
        for i, (text, url) in enumerate(links):
            links[i] = "<a href='%s'>%s</a>" % (url, ugettext(text))
        return "<br>".join(links)
    admin_links.allow_tags = True
    admin_links.short_description = ""
예제 #14
0
    def get_absolute_url(self):
        return str(self.url)


class PageModel(models.Model):
    """
    Example model to be linking to.
    """
    slug = models.SlugField()

    def __str__(self):
        return self.slug

    def get_absolute_url(self):
        return '/{0}/'.format(self.slug)


class RegPageModel(models.Model):
    slug = models.SlugField()

    def __str__(self):
        return self.slug

    def get_absolute_url(self):
        return '/{0}/'.format(self.slug)


AnyUrlField.register_model(RegPageModel,
                           widget=SimpleRawIdWidget(RegPageModel))
admin.site.register(RegPageModel)  # Needed for SimpleRawIdWidget to render
예제 #15
0
class TestModel(models.Model):
    url = AnyUrlField()
예제 #16
0
    def get_absolute_url(self):
        return str(self.url)


class PageModel(models.Model):
    """
    Example model to be linking to.
    """
    slug = models.SlugField()

    def __str__(self):
        return self.slug

    def get_absolute_url(self):
        return '/{0}/'.format(self.slug)


class RegPageModel(models.Model):
    slug = models.SlugField()

    def __str__(self):
        return self.slug

    def get_absolute_url(self):
        return '/{0}/'.format(self.slug)


AnyUrlField.register_model(RegPageModel, widget=SimpleRawIdWidget(RegPageModel))
admin.site.register(RegPageModel)  # Needed for SimpleRawIdWidget to render
예제 #17
0
class PageModel(models.Model):
    """
    Example model to be linking to.
    """
    slug = models.SlugField()

    def get_absolute_url(self):
        return '/{0}/'.format(self.slug)

class RegPageModel(models.Model):
    slug = models.SlugField()

    def get_absolute_url(self):
        return '/{0}/'.format(self.slug)

AnyUrlField.register_model(RegPageModel)


class AnyUrlTests(TestCase):

    def test_registry(self):
        reg = UrlTypeRegistry()
        self.assertIsNotNone(reg['http'])
        self.assertIsNotNone(reg['https'])


    def test_from_model(self):
        page2 = RegPageModel.objects.create(pk=1, slug='foo2')
        v = AnyUrlValue.from_model(page2)

        self.assertEqual(v.url_type.prefix, 'any_urlfield.regpagemodel')   # app_label.modelname