Ejemplo n.º 1
0
    def handle(self, readfrom, update_lm=True, base="", owner="", **options):
        contentxml = os.path.join(readfrom, "content.xml")
        mediadir = os.path.join(readfrom, "media")

        if not os.access(settings.MEDIA_ROOT, os.W_OK):
            print "%s may not be writable. Continue (y/n)?" % settings.MEDIA_ROOT
            if raw_input().lower().strip() != "y":
                print "Exiting"
                return

        data = open(contentxml).read()
        tree = ElementTree.fromstring(data)
        basenode = Node.get(base)
        if basenode is None:
            basenode = Node.root()
            for part in base.strip("/").split("/"):
                sub = basenode.child(part)
                if sub is None:
                    sub = basenode.add(part)
                basenode = sub

        Importer(basenode, update_lm=update_lm).run(tree)

        ## check writability
        if os.path.exists(mediadir):
            copy_tree(mediadir, settings.MEDIA_ROOT)
Ejemplo n.º 2
0
    def handle(self, writeto=None, path="", *args, **options):
        if writeto is None:
            raise CommandError("You must specificy a writable directory where the export can be written to")

        verbose = options.get('verbose', True)

        mediadir = os.path.join(writeto, "media")
        if not os.path.exists(mediadir):
            os.makedirs(mediadir)

        base = path # "" # /sub5_2/sub4_2/sub3_2"
        root = Node.get(base)
        xml, files = Exporter().run(root, base)
        open(os.path.join(writeto, "content.xml"), "w"
            ).write(prettify(xml).encode("utf8"))
        for file in set(files):
            dirname = os.path.dirname(file)
            if dirname:
                dir = os.path.join(mediadir, dirname)
                if not os.path.exists(dir):
                    os.makedirs(dir)
            dest = os.path.join(mediadir, file)
            source = os.path.join(settings.MEDIA_ROOT, file)

            if verbose:
                print "Copy %s to %s" % (source, dest)
            shutil.copy(source, dest)

        if verbose:
            print files
Ejemplo n.º 3
0
    def test_create_post(self, client):
        request = superuser_request("/create", method="POST",
                                      title="Test",
                                      slug="test",
                                      language="en")
        root = Node.root()
        handler = MainHandler(request=request, post=True,
                              instance=dict(instance=root))
        pytest.raises(Redirect, handler.create, type=Type1.get_name())

        node = Node.get("/test")
        assert node.content().title == "Test"
Ejemplo n.º 4
0
    def test_create_post_unicode(self, client, root):
        """ issue #693 - unicode enoding issue """
        request = superuser_request("/create", method="POST",
                           title=u"Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!",
                           slug="test",
                           language="en",
                           type=Type1.get_name())
        handler = MainHandlerTestable()
        res = handler.dispatch(request, nodepath="", handlerpath="create")

        assert res.status_code == 302
        node = Node.get("/test")
        assert node.content().title == u"Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!"
Ejemplo n.º 5
0
    def test_create_post_unicode(self, client):
        """ issue #693 - unicode enoding issue """
        request = superuser_request("/create", method="POST",
                           title=u"Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!",
                           slug="test",
                           language="en")
        root = Node.root()
        handler = MainHandler(request=request, post=True,
                              instance=dict(instance=root))
        pytest.raises(Redirect, handler.create, type=Type1.get_name())

        node = Node.get("/test")
        assert node.content().title == u"Testing «ταБЬℓσ»: 1<2 & 4+1>3, now 20% off!"
Ejemplo n.º 6
0
    def test_create_post(self, client, root):
        request = superuser_request("/create", method="POST",
                                      title="Test",
                                      slug="test",
                                      language="en",
                                      type=Type1.get_name())
        handler = MainHandlerTestable()

        res = handler.dispatch(request, nodepath="", handlerpath="create")
        assert res.status_code == 302


        node = Node.get("/test")
        assert node.content().title == "Test"
Ejemplo n.º 7
0
    def test_create_image(self, client):
        request = superuser_request("/create", method="POST",
                                      title="Test",
                                      slug="test",
                                      language="en",
                                      storage=filedata)
        root = Node.root()
        handler = MainHandler(request=request, post=True,
                              instance=dict(instance=root))
        pytest.raises(Redirect, handler.create, type=TestImage.get_name())

        node = Node.get("/test")
        filedata.seek(0)
        assert node.content().storage.read() == filedata.read()
Ejemplo n.º 8
0
    def test_create_image(self, client, root):
        request = superuser_request("/create", method="POST",
                                      title="Test",
                                      slug="test",
                                      language="en",
                                      storage=filedata,
                                      type=TestImage.get_name())
        handler = MainHandlerTestable()
        res = handler.dispatch(request, nodepath="", handlerpath="create")

        assert res.status_code == 302

        node = Node.get("/test")
        filedata.seek(0)
        assert node.content().storage.read() == filedata.read()
Ejemplo n.º 9
0
    def test_update_image(self, client):
        root = Node.root()
        node = root.add("test")
        TestImage(node=node, title="image", storage=filedata).save()
        request = superuser_request("/test/edit", method="POST",
                                      title="Test",
                                      slug="",
                                      language="en",
                                      storage=filedata2)
        handler = MainHandler(request=request, post=True, instance=node)
        pytest.raises(Redirect, handler.update)

        node = Node.get("/test")
        filedata2.seek(0)
        assert node.content().storage.read() == filedata2.read()
Ejemplo n.º 10
0
    def test_handler_create(self, superuser, client):
        """ The handler *can* set the user """
        request = create_request("POST", "/create",
                                 data=dict(title="Test",
                                           slug="test",
                                           language="en",
                                           type=Type1.get_name()))
        request.user = superuser

        handler = MainHandler()
        res = handler.dispatch(request, nodepath="", handlerpath="create")
        assert res.status_code == 302

        node = Node.get("/test")
        assert node.content().title == "Test"
        assert node.content().owner == superuser
Ejemplo n.º 11
0
    def test_update_image(self, client, root):
        node = root.add("test")
        TestImage(node=node, title="image", storage=filedata).save()
        request = superuser_request("/test/edit", method="POST",
                                      title="Test",
                                      slug="",
                                      language="en",
                                      storage=filedata2)
        handler = MainHandlerTestable()
        res = handler.dispatch(request, nodepath="/test", handlerpath="edit")

        assert res.status_code == 302

        node = Node.get("/test")
        filedata2.seek(0)
        assert node.content().storage.read() == filedata2.read()
Ejemplo n.º 12
0
    def test_handler_create(self, client):
        """ The handler *can* set the user """
        request = create_request("POST", "/create",
                                 data=dict(title="Test",
                                           slug="test",
                                           language="en"))
        request.user = self.user

        root = Node.root()
        handler = MainHandler(request=request, post=True,
                              instance=dict(parent=root))
        pytest.raises(Redirect, handler.create, type=Type1.get_name())

        node = Node.get("/test")
        assert node.content().title == "Test"
        assert node.content().owner == self.user