Exemplo n.º 1
0
    def test_flow(self):
        # Export
        page1 = self.new_page(content={'title': 'page1', 'slug': 'slug1'})
        tag1 = Tag.objects.create(name="t1")
        page1.tags.add(tag1)

        page2 = self.new_page(content={'title': 'page2', 'slug': 'slug2'})
        tag2 = Tag.objects.create(name="t2")
        page2.tags.add(tag2)

        data = pages_to_json(Page.objects.all())

        # Clear
        Page.objects.all().delete()
        Tag.objects.all().delete()

        # Import
        user = User.objects.create()
        json_to_pages(data, user)
        pages = Page.objects.all()
        self.assertEqual(pages.count(), 2)

        page1 = Page.objects.from_slug('slug1')
        self.assertEqual(page1.title(), 'page1')
        self.assertEqual([t.name for t in page1.tags.all()], ['t1'])

        page1 = Page.objects.from_slug('slug2')
        self.assertEqual(page1.title(), 'page2')
        self.assertEqual([t.name for t in page1.tags.all()], ['t2'])
Exemplo n.º 2
0
    def test_flow(self):
        # Export
        page1 = self.new_page(content={'title': 'page1', 'slug': 'slug1'})
        tag1 = Tag.objects.create(name="t1")
        page1.tags.add(tag1)

        page2 = self.new_page(content={'title': 'page2', 'slug': 'slug2'})
        tag2 = Tag.objects.create(name="t2")
        page2.tags.add(tag2)

        data = pages_to_json(Page.objects.all())

        # Clear
        Page.objects.all().delete()
        Tag.objects.all().delete()

        # Import
        user = User.objects.create()
        json_to_pages(data, user)
        pages = Page.objects.all()
        self.assertEqual(pages.count(), 2)

        page1 = Page.objects.from_slug('slug1')
        self.assertEqual(page1.title(), 'page1')
        self.assertEqual([t.name for t in page1.tags.all()], ['t1'])

        page1 = Page.objects.from_slug('slug2')
        self.assertEqual(page1.title(), 'page2')
        self.assertEqual([t.name for t in page1.tags.all()], ['t2'])
Exemplo n.º 3
0
    def handle(self, user, **options):
        """
        Import pages in JSON format.  When creating a page and the original
        author does not exist, use user as the new author.  User may be
        specified by username, id or email address.
        """
        monkeypatch_remove_pages_site_restrictions()
        user_model = get_user_model()
        for match in ('username', 'pk', 'email'):
            try:
                u = user_model.objects.get(**{match: user})
                break
            except (user_model.DoesNotExist, ValueError):
                continue
        else:
            raise CommandError(
                _("User with username/id/email = '%s' not found") % user)

        json = sys.stdin.read()
        errors, pages_created = json_to_pages(json, u)
        if errors:
            for e in errors:
                sys.stderr.write(e + '\n')
            raise CommandError(_("Errors encountered while importing JSON"))
        for page, created, messages in pages_created:
            print((_("%s created.") if created else _("%s modified.")) %
                  (page.get_complete_slug()))
            for m in messages:
                print(" - " + m)
Exemplo n.º 4
0
    def handle(self, user, **options):
        """
        Import pages in JSON format.  When creating a page and the original
        author does not exist, use user as the new author.  User may be
        specified by username, id or email address.
        """
        monkeypatch_remove_pages_site_restrictions()
        user_model = get_user_model()
        for match in ('username', 'pk', 'email'):
            try:
                u = user_model.objects.get(**{match: user})
                break
            except (user_model.DoesNotExist, ValueError):
                continue
        else:
            raise CommandError(_("User with username/id/email = '%s' not found")
                % user)

        json = sys.stdin.read()
        errors, pages_created = json_to_pages(json, u)
        if errors:
            for e in errors:
                sys.stderr.write(e + '\n')
            raise CommandError(_("Errors encountered while importing JSON"))
        for page, created, messages in pages_created:
            print((_("%s created.") if created else _("%s modified.")) % (
                page.get_complete_slug()))
            for m in messages:
                print(" - " + m)
Exemplo n.º 5
0
def import_pages_from_json(modeladmin, request, queryset, template_name="admin/pages/page/import_pages.html"):

    try:
        j = request.FILES["json"]
    except KeyError:
        return render_to_response(
            template_name, {"nofile": True, "app_label": "pages", "opts": Page._meta}, RequestContext(request)
        )

    errors, pages_created = json_to_pages(j.read(), request.user, get_language_from_request(request))

    return render_to_response(
        template_name,
        {"errors": errors, "pages_created": pages_created, "app_label": "pages", "opts": Page._meta},
        RequestContext(request),
    )
Exemplo n.º 6
0
def import_pages_from_json(modeladmin, request, queryset,
        template_name='admin/pages/page/import_pages.html'):

    try:
        j = request.FILES['json']
    except KeyError:
        return render(request, template_name, {
            'nofile': True,
            'app_label': 'pages',
            'opts': Page._meta,
        }, RequestContext(request))

    errors, pages_created = json_to_pages(j.read(), request.user,
        get_language_from_request(request))

    return render(request, template_name, {
        'errors': errors,
        'pages_created': pages_created,
        'app_label': 'pages',
        'opts': Page._meta,
    }, RequestContext(request))
Exemplo n.º 7
0
def import_pages_from_json(modeladmin,
                           request,
                           queryset,
                           template_name='admin/pages/page/import_pages.html'):

    try:
        j = request.FILES['json']
    except KeyError:
        return render_to_response(template_name, {
            'nofile': True,
            'app_label': 'pages',
            'opts': Page._meta,
        }, RequestContext(request))

    errors, pages_created = json_to_pages(j.read(), request.user,
                                          get_language_from_request(request))

    return render_to_response(
        template_name, {
            'errors': errors,
            'pages_created': pages_created,
            'app_label': 'pages',
            'opts': Page._meta,
        }, RequestContext(request))