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
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))
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)))
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)))
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)))
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
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)))
class UrlModel(models.Model): """ Example model for testing AnyUrlField """ url = AnyUrlField() def get_absolute_url(self): return str(self.url)
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)
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)))
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'
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 = ""
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
class TestModel(models.Model): url = AnyUrlField()
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