コード例 #1
0
ファイル: views.py プロジェクト: dmdm/PySite
 def __init__(self, context, request):
     self.context = context
     self.request = request
     #dsn = ':memory:'
     dsn = os.path.join(context.dir_, 'cache', 'blog', 'cache.sqlite3')
     self.cache = Cache(dsn, {})
     self.blog = Blog(self.cache, {
         'site_dir': context.dir_
     })
コード例 #2
0
ファイル: views.py プロジェクト: dmdm/PySite
class FileMgrView(object):

    def __init__(self, context, request):
        self.context = context
        self.request = request
        #dsn = ':memory:'
        dsn = os.path.join(context.dir_, 'cache', 'blog', 'cache.sqlite3')
        self.cache = Cache(dsn, {})
        self.blog = Blog(self.cache, {
            'site_dir': context.dir_
        })

    @view_config(
        name='filemgr',
        renderer='pysite:filemgr/templates/filemgr.mako',
    )
    def filemgr(self):
        logo_url = self.request.static_url('pysite:static/img/filemgr.png')
        logo_alt = 'FileManager'
        return dict(logo_url=logo_url, logo_alt=logo_alt)

    @view_config(
        name='xhr_filemgr',
        renderer='json',
    )
    def xhr_filemgr(self):
        cmd = ''
        cmd_args = dict()
        for k in self.request.params:
            if k == '_':
                continue
            if k == 'cmd':
                cmd = self.request.params[k]
            else:
                if k.endswith("[]"):
                    k2 = k.rstrip("[]")
                    cmd_args[k2] = self.request.params.getall(k)
                else:
                    cmd_args[k] = self.request.params[k]
        finder = create_finder(self.context, self.request)
        try:
            finder.run(cmd, cmd_args)
        except FinderError as e:
            L.exception(e)
            if e.status:
                self.request.response.status = e.status
        if 'file' in finder.response:
            resp = Response()
            resp.app_iter = finder.response['file']
            if finder.headers:
                for k, v in finder.headers.items():
                    resp.headers[k] = v
            return resp
        else:
            if finder.headers:
                for k, v in finder.headers.items():
                    self.request.response.headers[k] = v
            return finder.response

    @view_config(
        name='editor',
        renderer='pysite:filemgr/templates/editor.mako',
    )
    def editor(self):
        resp = dict(
            sassc_url=self.request.resource_url(
                self.context, '@@xhr_sassc'),
            blog_update_url=self.request.resource_url(
                self.context, '@@xhr_blog_update'),
            blog_rebuild_url=self.request.resource_url
                (self.context, '@@xhr_blog_rebuild')
        )
        return resp

    @view_config(
        name='xhr_blog_update',
        renderer='json',
    )
    def xhr_blog_update(self):
        resp = pysite.lib.JsonResp()
        self.blog.build(full=False)
        for e in self.blog.errors:
            resp.error(str(e))
        resp.ok('{0} file(s) updated.'.format(self.blog.done))
        return resp.resp

    @view_config(
        name='xhr_blog_rebuild',
        renderer='json',
    )
    def xhr_blog_rebuild(self):
        resp = pysite.lib.JsonResp()
        self.blog.build(full=True)
        for e in self.blog.errors:
            resp.error(str(e))
        resp.ok('{0} file(s) updated.'.format(self.blog.done))
        return resp.resp

    @view_config(
        name='xhr_sassc',
        renderer='json',
    )
    def xhr_sassc(self):
        # Context is Site
        site_dir = self.context.dir_
        rc = self.context.rc
        resp = pysite.lib.compile_sass(site_dir, rc)
        return resp.resp