Пример #1
0
    def query(self):
        # parse Query parameters
        pattern =  drink.request.params.get('pattern')
        query_type = drink.request.params.get('qtype')
        page_nr = int(drink.request.params.get('page', 1))
        results = int(drink.request.params.get('results', 10))
        fmt = drink.request.params.get('fmt', 'html')
        if pattern:
            pattern = pattern.decode('utf-8')
        else:
            return 'Give me a pattern please !'

        # Let's compute

        pages, matches = self._query(pattern, query_type, page_nr, results)

        if fmt == 'js':
            return dict(pages=pages, items=matches)

        # make html
        html = ['<ul class="results">']
        for item in matches:
            if isinstance(item, basestring):
                continue
            html.append('<li class="entry"><a href="%(path)s">%(hi_title)s'%item)
            if item.get('hi', None):
                html.append('<div class="minipage">%s</div></a></li>'%(item['hi'].replace('\n', '<br/>')))
            else:
                html.append('</a></li>')

        if pages > 1:
            html.append('</ul><br/>pages:&nbsp;')

            for page in xrange(1, 1+pages):
                if page == page_nr:
                    html.append( '<span class="page_nr_cur">%s</span>'%page )
                else:
                    html.append( '<a href="%s"><span class="page_nr">%s</span></a>'%("%squery?pattern=%s&qtype=%s&page=%s"%(self.path, pattern, query_type, page), page ) )
        elif pages == 1:
            html.append('</ul>')
        elif not pages:
            html.append('</ul><br/>No matching documents!')

        # save log
        self.lastlog[drink.request.identity.id] = (pattern, matches)

        # render
        return drink.default_view(self, html='\n'.join(html))
Пример #2
0
    def view(self, *a, **kw):
        if self.mime == "folder":
            if "index.html" in self.keys():
                return self["index.html"].view(*a, **kw)
            return drink.default_view(self, html='<div id="main_list" class="sortable" />')
        else:
            mime = get_type(self.id)

            if mime.startswith("text"):
                mime += " ; charset=utf-8"
            else:
                drink.response.headers["Content-Disposition"] = 'attachment; filename="%s"' % self.id
            drink.response.headers["Content-Type"] = mime
            try:
                drink.response.headers["Content-Length"] = self.o.fd.getsize(self.realpath)
            except fs.errors.ResourceNotFoundError:
                return {"error": True, "code": 404, "message": "%r not found" % self.id}
            if mime.split("/", 1)[0] == "text":
                return self.o.fd.open(self.realpath, "rb").read()
            else:
                root, fname = "/".join((self.local_path, self.realpath)).rsplit("/", 1)
                return drink.static_file(fname, root, mimetype=mime, download=self.id)
Пример #3
0
 def list(self):
     return drink.default_view(self, 'main.html', html=u'<h1>%s</h1>\n<ul id="main_list" class="sortable" />'%self.title)
Пример #4
0
                    if factory.form_attr:
                        form_opts.append(factory.form_attr)
                    if factory.group != current_group:
                        old_group = current_group
                        current_group = factory.group
                        if old_group:
                            form.append('</div>')
                        form.append('<div class="%s_grp">'%current_group)
                    val = getattr(self, field, '')
                    form.append('<li class="entry"><div class="input">%s</div></li>'%factory.html(field, val))
                form.append('''</li></div></ul>
                <input class="submit" type="submit" value="Save changes please"/>
                </form>''')
                form.insert(0, '''<form
                 class="auto_edit_form" id="auto_edit_form" action="edit" %s method="post"><ul class="editable_fields">'''%(' '.join(form_opts)))
            return drink.default_view(self, html='\n'.join(form))

    def _upload(self, obj):
        self.editable_fields['content'].set(self, 'content', obj)

    def upload(self):
        if 'w' not in request.identity.access(self):
            return drink.unauthorized()

        try:
            filename = request.GET.get('qqfile', '').decode('utf-8')
        except UnicodeError:
            filename = request.GET['qqfile'].decode('latin1')
        if not filename:
            return {'error': True, 'code': 400, 'message': 'Incorrect parameters. Action aborted.'}