Exemplo n.º 1
0
def get_form_types():
    global _FORM_CONTENT_TYPES
    if _FORM_CONTENT_TYPES is None:
        _FORM_CONTENT_TYPES = [
            ct for ct in get_page_types()
            if issubclass(ct.model_class(), AbstractForm)
        ]
    return _FORM_CONTENT_TYPES
Exemplo n.º 2
0
def get_form_types():
    global _FORM_CONTENT_TYPES
    if _FORM_CONTENT_TYPES is None:
        _FORM_CONTENT_TYPES = [
            ct for ct in get_page_types()
            if issubclass(ct.model_class(), AbstractForm)
        ]
    return _FORM_CONTENT_TYPES
Exemplo n.º 3
0
def add_subpage(request, parent_page_id):
    parent_page = get_object_or_404(Page, id=parent_page_id).specific
    if not parent_page.permissions_for_user(request.user).can_add_subpage():
        raise PermissionDenied

    page_types = sorted([ContentType.objects.get_for_model(model_class) for model_class in parent_page.clean_subpage_types()], key=lambda pagetype: pagetype.name.lower())
    all_page_types = sorted(get_page_types(), key=lambda pagetype: pagetype.name.lower())

    return render(request, 'wagtailadmin/pages/add_subpage.html', {
        'parent_page': parent_page,
        'page_types': page_types,
        'all_page_types': all_page_types,
    })
Exemplo n.º 4
0
def add_subpage(request, parent_page_id):
    parent_page = get_object_or_404(Page, id=parent_page_id).specific
    if not parent_page.permissions_for_user(request.user).can_add_subpage():
        raise PermissionDenied

    page_types = sorted([ContentType.objects.get_for_model(model_class) for model_class in parent_page.clean_subpage_types()], key=lambda pagetype: pagetype.name.lower())
    all_page_types = sorted(get_page_types(), key=lambda pagetype: pagetype.name.lower())

    return render(request, 'wagtailadmin/pages/add_subpage.html', {
        'parent_page': parent_page,
        'page_types': page_types,
        'all_page_types': all_page_types,
    })
Exemplo n.º 5
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 content_type in get_page_types():
            self.stdout.write("scanning %s" % content_type.name)
            page_class = content_type.model_class()

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

            for page in page_class.objects.all():
                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)
Exemplo n.º 6
0
def select_type(request):
    # Get the list of page types that can be created within the pages that currently exist
    existing_page_types = ContentType.objects.raw("""
        SELECT DISTINCT content_type_id AS id FROM wagtailcore_page
    """)

    all_page_types = sorted(get_page_types(), key=lambda pagetype: pagetype.name.lower())
    page_types = set()
    for content_type in existing_page_types:
        allowed_subpage_types = content_type.model_class().clean_subpage_types()
        for subpage_type in allowed_subpage_types:
            subpage_content_type = ContentType.objects.get_for_model(subpage_type)

            page_types.add(subpage_content_type)

    return render(request, 'wagtailadmin/pages/select_type.html', {
        'page_types': page_types,
        'all_page_types': all_page_types
    })
Exemplo n.º 7
0
def select_type(request):
    # Get the list of page types that can be created within the pages that currently exist
    existing_page_types = ContentType.objects.raw("""
        SELECT DISTINCT content_type_id AS id FROM wagtailcore_page
    """)

    all_page_types = sorted(get_page_types(), key=lambda pagetype: pagetype.name.lower())
    page_types = set()
    for content_type in existing_page_types:
        allowed_subpage_types = content_type.model_class().clean_subpage_types()
        for subpage_type in allowed_subpage_types:
            subpage_content_type = ContentType.objects.get_for_model(subpage_type)

            page_types.add(subpage_content_type)

    return render(request, 'wagtailadmin/pages/select_type.html', {
        'page_types': page_types,
        'all_page_types': all_page_types
    })
Exemplo n.º 8
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 content_type in get_page_types():
            print "scanning %s" % content_type.name
            page_class = content_type.model_class()

            try:
                child_relation_names = [rel.get_accessor_name() for rel in page_class._meta.child_relations]
            except AttributeError:
                child_relation_names = []

            for page in page_class.objects.all():
                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)
    def handle(self, fix=False, **options):
        for content_type in get_page_types():
            print "scanning %s" % content_type.name

            page_class = content_type.model_class()

            if not hasattr(page_class._meta, 'child_relations'):
                continue

            relations_by_name = {}
            for rel in page_class._meta.child_relations:
                relations_by_name[rel.get_accessor_name()] = rel

            for page in page_class.objects.all():
                revision = page.revisions.order_by('-created_at').first()
                if not revision:
                    continue

                revision_data = json.loads(revision.content_json)

                for (rel_name, rel) in relations_by_name.iteritems():
                    for child in revision_data.get(rel_name, []):
                        pk = child.get('pk')
                        if pk:
                            try:
                                rel.model.objects.get(pk=pk)
                            except rel.model.DoesNotExist:
                                print "No %s with ID %d found (linked from page %d)" % (rel.model.__name__, pk, page.id)

                                # Fix
                                if fix:
                                    obj = model_from_serializable_data(rel.model, child)
                                    obj._state.adding = True
                                    obj.save()

                                    print "Fixed"
Exemplo n.º 10
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 content_type in get_page_types():
            print "scanning %s" % content_type.name
            page_class = content_type.model_class()

            try:
                child_relation_names = [
                    rel.get_accessor_name()
                    for rel in page_class._meta.child_relations
                ]
            except AttributeError:
                child_relation_names = []

            for page in page_class.objects.all():
                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)