예제 #1
0
    def post(self, request):
        form = ExternalLinksForm(request.POST)
        if not form.is_valid():
            return render(request, self.template_name, {'form': form})
        url = form.cleaned_data['url']
        pages = []

        for cls in get_page_models():
            pages += list(cls.objects.search(url))

        pages = self.remove_duplicates(pages)
        pages = sorted(pages, key=lambda k: k.title)

        contacts = list(Contact.objects.filter(body__contains=url))
        resources = sorted(
            list(Resource.objects.filter(link__contains=url)) +
            list(Resource.objects.filter(alternate_link__contains=url)),
            key=lambda k: k.title)
        reusable_texts = list(
            ReusableText.objects.filter(text__contains=url).order_by('title'))

        num_page_results = len(pages)
        num_snippet_results = len(contacts + resources + reusable_texts)

        return render(
            request, self.template_name, {
                'form': form,
                'pages': pages,
                'contacts': contacts,
                'resources': resources,
                'reusable_texts': reusable_texts,
                'num_page_results': num_page_results,
                'num_snippet_results': num_snippet_results,
            })
예제 #2
0
def get_form_types():
    global _FORM_CONTENT_TYPES
    if _FORM_CONTENT_TYPES is None:
        form_models = [model for model in get_page_models() if issubclass(model, AbstractForm)]

        _FORM_CONTENT_TYPES = list(ContentType.objects.get_for_models(*form_models).values())
    return _FORM_CONTENT_TYPES
예제 #3
0
    def handle(self, *args, **options):
        from_text = options['from_text']
        to_text = options['to_text']

        for revision in PageRevision.objects.filter(
                content_json__contains=from_text):
            revision.content_json = revision.content_json.replace(
                from_text, to_text)
            revision.save(update_fields=['content_json'])

        for page_class in get_page_models():
            self.stdout.write("scanning %s" % page_class._meta.verbose_name)

            child_relation_names = [
                rel.get_accessor_name()
                for rel in get_all_child_relations(page_class)
            ]

            # Find all pages of this exact type; exclude subclasses, as they will
            # appear in the get_page_models() list in their own right, and this
            # ensures that replacement happens only once
            for page in page_class.objects.exact_type(page_class):
                replace_in_model(page, from_text, to_text)
                for child_rel in child_relation_names:
                    for child in getattr(page, child_rel).all():
                        replace_in_model(child, from_text, to_text)
예제 #4
0
 def test_is_creatable_not_inherited(self):
     """
     is_creatable should not be inherited in the normal manner, and should
     default to True unless set otherwise
     """
     self.assertTrue(MTIChildPage.is_creatable)
     self.assertIn(MTIChildPage, get_page_models())
예제 #5
0
 def test_is_creatable_not_inherited(self):
     """
     is_creatable should not be inherited in the normal manner, and should
     default to True unless set otherwise
     """
     self.assertTrue(MTIChildPage.is_creatable)
     self.assertIn(MTIChildPage, get_page_models())
예제 #6
0
def unregister_signal_handlers():
    Image = get_image_model()

    for model in get_page_models():
        page_published.disconnect(purge_page_from_cache, sender=model)
        page_unpublished.disconnect(purge_page_from_cache, sender=model)

    post_save.disconnect(purge_image_from_cache, sender=Image)
    post_delete.disconnect(purge_image_from_cache, sender=Image)
    post_save.disconnect(purge_document_from_cache, sender=Document)
    post_delete.disconnect(purge_document_from_cache, sender=Document)
예제 #7
0
def get_form_types():
    global _FORM_CONTENT_TYPES
    if _FORM_CONTENT_TYPES is None:
        form_models = [
            model for model in get_page_models()
            if issubclass(model, AbstractForm)
        ]

        _FORM_CONTENT_TYPES = list(
            ContentType.objects.get_for_models(*form_models).values())
    return _FORM_CONTENT_TYPES
예제 #8
0
def unregister_signal_handlers():
    Image = get_image_model()

    for model in get_page_models():
        page_published.disconnect(purge_page_from_cache, sender=model)
        page_unpublished.disconnect(purge_page_from_cache, sender=model)

    post_save.disconnect(purge_image_from_cache, sender=Image)
    post_delete.disconnect(purge_image_from_cache, sender=Image)
    post_save.disconnect(purge_document_from_cache, sender=Document)
    post_delete.disconnect(purge_document_from_cache, sender=Document)
예제 #9
0
    def _clear_edit_handler_cache(self):
        """
        These tests generate new EditHandlers with different settings. The
        cached edit handlers should be cleared before and after each test run
        to ensure that no changes leak through to other tests.
        """
        from wagtail.tests.testapp.models import DefaultRichBlockFieldPage

        block_page_edit_handler = DefaultRichBlockFieldPage.get_edit_handler()
        if block_page_edit_handler._form_class:
            rich_text_block = block_page_edit_handler._form_class.base_fields['body'].block.child_blocks['rich_text']
            if hasattr(rich_text_block, 'field'):
                del rich_text_block.field

        for page_class in get_page_models():
            page_class.get_edit_handler.cache_clear()
예제 #10
0
    def _clear_edit_handler_cache(self):
        """
        These tests generate new EditHandlers with different settings. The
        cached edit handlers should be cleared before and after each test run
        to ensure that no changes leak through to other tests.
        """
        from wagtail.tests.testapp.models import DefaultRichBlockFieldPage

        block_page_edit_handler = DefaultRichBlockFieldPage.get_edit_handler()
        if block_page_edit_handler._form_class:
            rich_text_block = block_page_edit_handler._form_class.base_fields['body'].block.child_blocks['rich_text']
            if hasattr(rich_text_block, 'field'):
                del rich_text_block.field

        for page_class in get_page_models():
            page_class.get_edit_handler.cache_clear()
예제 #11
0
    def handle(self, from_text, to_text, **options):
        for revision in PageRevision.objects.filter(content_json__contains=from_text):
            revision.content_json = revision.content_json.replace(from_text, to_text)
            revision.save(update_fields=['content_json'])

        for page_class in get_page_models():
            self.stdout.write("scanning %s" % page_class._meta.verbose_name)

            child_relation_names = [rel.get_accessor_name() for rel in get_all_child_relations(page_class)]

            # Find all pages of this exact type; exclude subclasses, as they will
            # appear in the get_page_models() list in their own right, and this
            # ensures that replacement happens only once
            for page in page_class.objects.exact_type(page_class):
                replace_in_model(page, from_text, to_text)
                for child_rel in child_relation_names:
                    for child in getattr(page, child_rel).all():
                        replace_in_model(child, from_text, to_text)
예제 #12
0
파일: checks.py 프로젝트: DimiC/wagtail
def get_form_class_check(app_configs, **kwargs):
    from wagtail.wagtailadmin.forms import WagtailAdminPageForm
    from wagtail.wagtailcore.models import get_page_models

    errors = []

    for cls in get_page_models():
        edit_handler = cls.get_edit_handler()
        if not issubclass(edit_handler.get_form_class(cls), WagtailAdminPageForm):
            errors.append(Error(
                "{cls}.get_edit_handler().get_form_class({cls}) does not extend WagtailAdminPageForm".format(
                    cls=cls.__name__),
                hint="Ensure that the EditHandler for {cls} creates a subclass of WagtailAdminPageForm".format(
                    cls=cls.__name__),
                obj=cls,
                id='wagtailadmin.E002'))

    return errors
예제 #13
0
파일: checks.py 프로젝트: DimiC/wagtail
def base_form_class_check(app_configs, **kwargs):
    from wagtail.wagtailadmin.forms import WagtailAdminPageForm
    from wagtail.wagtailcore.models import get_page_models

    errors = []

    for cls in get_page_models():
        if not issubclass(cls.base_form_class, WagtailAdminPageForm):
            errors.append(Error(
                "{}.base_form_class does not extend WagtailAdminPageForm".format(
                    cls.__name__),
                hint="Ensure that {}.{} extends WagtailAdminPageForm".format(
                    cls.base_form_class.__module__,
                    cls.base_form_class.__name__),
                obj=cls,
                id='wagtailadmin.E001'))

    return errors
예제 #14
0
def base_form_class_check(app_configs, **kwargs):
    from wagtail.wagtailadmin.forms import WagtailAdminPageForm
    from wagtail.wagtailcore.models import get_page_models

    errors = []

    for cls in get_page_models():
        if not issubclass(cls.base_form_class, WagtailAdminPageForm):
            errors.append(
                Error(
                    "{}.base_form_class does not extend WagtailAdminPageForm".
                    format(cls.__name__),
                    hint="Ensure that {}.{} extends WagtailAdminPageForm".
                    format(cls.base_form_class.__module__,
                           cls.base_form_class.__name__),
                    obj=cls,
                    id='wagtailadmin.E001'))

    return errors
예제 #15
0
def get_form_class_check(app_configs, **kwargs):
    from wagtail.wagtailadmin.forms import WagtailAdminPageForm
    from wagtail.wagtailcore.models import get_page_models

    errors = []

    for cls in get_page_models():
        edit_handler = cls.get_edit_handler()
        if not issubclass(edit_handler.get_form_class(cls),
                          WagtailAdminPageForm):
            errors.append(
                Error(
                    "{cls}.get_edit_handler().get_form_class({cls}) does not extend WagtailAdminPageForm"
                    .format(cls=cls.__name__),
                    hint=
                    "Ensure that the EditHandler for {cls} creates a subclass of WagtailAdminPageForm"
                    .format(cls=cls.__name__),
                    obj=cls,
                    id='wagtailadmin.E002'))

    return errors
예제 #16
0
def register_signal_handlers():
    """Registers signal handlers.

    To create a signal for TranslatablePage we have to use wagtails
    get_page_model.

    """
    post_save.connect(create_language_permissions_and_group, sender=Language)
    if get_wagtailtrans_setting('SYNC_TREE'):
        if get_wagtailtrans_setting('LANGUAGES_PER_SITE'):
            m2m_changed.connect(update_language_trees_for_site,
                                sender=SiteLanguages.other_languages.through)
        else:
            post_save.connect(create_new_language_tree, sender=Language)

        init_new_page.connect(force_parent_language)
        for model in get_page_models():
            if hasattr(model, 'create_translation'):
                post_save.connect(synchronize_trees, sender=model)

            if hasattr(model, 'get_translations'):
                pre_delete.connect(synchronize_deletions, sender=model)
예제 #17
0
파일: views.py 프로젝트: cfpb/cfgov-refresh
    def post(self, request):
        form = ExternalLinksForm(request.POST)
        if not form.is_valid():
            return render(request, self.template_name, {
                'form': form
            })
        url = form.cleaned_data['url']
        pages = []

        for cls in get_page_models():
            pages += list(cls.objects.search(url))

        pages = self.remove_duplicates(pages)
        pages = sorted(pages, key=lambda k: k.title)

        contacts = list(
            Contact.objects.filter(body__contains=url).order_by('heading'))
        resources = sorted(list(
            Resource.objects.filter(link__contains=url)) + list(
            Resource.objects.filter(alternate_link__contains=url)),
            key=lambda k: k.title)
        reusable_texts = list(
            ReusableText.objects.filter(text__contains=url).order_by('title'))

        num_page_results = len(pages)
        num_snippet_results = len(contacts + resources + reusable_texts)

        return render(request, self.template_name, {
            'form': form,
            'pages': pages,
            'contacts': contacts,
            'resources': resources,
            'reusable_texts': reusable_texts,
            'num_page_results': num_page_results,
            'num_snippet_results': num_snippet_results,
        })
예제 #18
0
 def test_abstract_pages(self):
     """
     Abstract models should not be creatable
     """
     self.assertFalse(AbstractPage.is_creatable)
     self.assertNotIn(AbstractPage, get_page_models())
예제 #19
0
 def test_is_creatable_false(self):
     """Page types should be able to disable their creation"""
     self.assertFalse(MTIBasePage.is_creatable)
     # non-creatable pages should still appear in the get_page_models list
     self.assertIn(MTIBasePage, get_page_models())
예제 #20
0
 def test_is_creatable_default(self):
     """By default, pages should be creatable"""
     self.assertTrue(SimplePage.is_creatable)
     self.assertIn(SimplePage, get_page_models())
예제 #21
0
 def test_abstract_pages(self):
     """
     Abstract models should not be creatable
     """
     self.assertFalse(AbstractPage.is_creatable)
     self.assertNotIn(AbstractPage, get_page_models())
예제 #22
0
 def test_is_creatable_default(self):
     """By default, pages should be creatable"""
     self.assertTrue(SimplePage.is_creatable)
     self.assertIn(SimplePage, get_page_models())
예제 #23
0
 def test_is_creatable_false(self):
     """Page types should be able to disable their creation"""
     self.assertFalse(MTIBasePage.is_creatable)
     # non-creatable pages should still appear in the get_page_models list
     self.assertIn(MTIBasePage, get_page_models())