def main(wfile, req):
    # this is called from the controller weblib

    # if rid is defined, make sure it is valid
    if req.rid > 0:
        if not store.getWeblib().webpages.getById(req.rid):
            wfile.write('404 not found\r\n\r\n')
            wfile.write('rid %s not found' % req.rid)

    if req.method == 'PUT':
        bean = Bean(req)
        doPutResource(wfile, req, bean)

    elif req.method == 'POST':
        wfile.write('404 Method Not Allowed\r\n\r\n')
        wfile.write('Use PUT to update the item.')

    elif req.method == 'DELETE':
        doDeleteResource(wfile, req)

    else: # otherwise it is GET
        bean = Bean(req)
        if req.rid == -1 and bean.oldItem:
            # if bookmarklet to an existing item, redirect to the appropiate rid
            url = '%s?%s' % (request.rid_url(bean.item.id), req.env.get('QUERY_STRING',''))
            response.redirect(wfile, url)

        else:
            doGetResource(wfile, req, bean)
    def render(self, node, bean, tags):

        item = bean.item
        wlib = store.getWeblib()

        if item.id == -1:
            node.form_title.content %= 'Add Entry'
            node.edit_header.omit()
        else:
            node.form_title.content %= 'Edit Entry'
            node.add_header.omit()

        form = node.form
        id = item.id < 0 and '_' or str(item.id)
        form.atts['action'] = request.rid_url(id)

        if bean.errors:
            escaped_errors = map(saxutils.escape, bean.errors)
            form.error.message.raw = '<br />'.join(escaped_errors)
        else:
            form.error.omit()

        if item:
            form.name       .atts['value'] = item.name
            form.created    .atts['value'] = item.created
            form.url        .atts['value'] = item.url
            form.description.content       = item.description
            form.tags       .atts['value'] = bean.item.tags_description
            form.nickname   .atts['value'] = item.nickname

            if weblib_util.isFileURL(item.url):
                scheme, netloc, url_path, _, _, _ = urlparse.urlparse(item.url)
                pathname = weblib_util.nt_url2pathname(url_path)
                form.url_link.atts['href']  = '/weblib/%s/url#%s' % (item.id, item.url)
                form.filename.content = pathname
            else:
                form.url_link.atts['href']  = item.url
                form.filename.omit()

#            if item.modified:
#                form.modified_txt.content = item.modified
#            if item.fetched:
#                form.snapshot_txt.content = item.fetched

        tags_strings = [u'        "%s"' % response.jsEscapeString(unicode(tag)) for tag in tags]
        node.form.tags_array.raw = node.form.tags_array.raw % ',\n'.join(tags_strings)

        new_tags = bean.newTags and u', '.join(bean.newTags) or ''
        encoded_tags = response.jsEscapeString(new_tags)
        node.form.new_tags_js_var.raw = node.form.new_tags_js_var.raw % encoded_tags

# weblibForm get invoked from CGI weblib.py

#if __name__ == "__main__":
#    main(sys.stdin, sys.stdout, os.environ)