def h_category_items_link(self, m):
     res = ["<ul>"]
     for i in Items.getitems("tmp/" + self.params["category"]):
         item = dict(map(None, Items.fields, i))
         res.append(
             '<li><a href="http://'
             + self.params["name"]
             + "/"
             + self.params["category"]
             + "/"
             + getname(item["name"], self.params["ext"])
             + '">'
             + item["name"]
             + "</a><br><span>"
             + item["uploader_notes"]
             + "</span></li>"
         )
     res.append("</ul>")
     return "\n".join(res)
def process_site(rec):
    params = dict(map(None, ["name", "num", "output", "map", "ext"], rec.split("|")))
    params["num"] = int(params["num"])
    params["topitems"] = 250

    os.system("rm -f -r " + params["output"] + "/*")
    try:
        os.makedirs(params["output"])
    except:
        pass
    os.system("cp -r tmp/* " + params["output"])

    templater = PageTemplater()
    tparams = copy.copy(params)

    print "Generate index"
    fname = TEMPLATES_DIR + params["name"] + "/index.tpl"
    X.File.save(
        params["output"] + "/" + os.path.splitext(os.path.basename(fname))[0] + "." + params["ext"],
        templater.process(X.File.load(fname), params),
    )

    print "Generate top downloads"
    fname = TEMPLATES_DIR + params["name"] + "/top-downloads.tpl"
    X.File.save(
        params["output"] + "/" + os.path.splitext(os.path.basename(fname))[0] + "." + params["ext"],
        templater.process(X.File.load(fname), params),
    )
    print "Generate partners"
    fname = TEMPLATES_DIR + params["name"] + "/partners.tpl"
    X.File.save(
        params["output"] + "/" + os.path.splitext(os.path.basename(fname))[0] + "." + params["ext"],
        templater.process(X.File.load(fname), params),
    )

    print "Generate letters"
    fname = TEMPLATES_DIR + params["name"] + "/letter.tpl"
    templateCode = X.File.load(fname)
    for letter in CurrentLetters:
        print "Generate for '" + letter + "'"
        itemsNum = Items.getnumletteritems(letter)
        pagesNum = int(math.ceil(float(itemsNum) / tparams["num"]))
        print "Pages count: " + str(pagesNum) + "\tItems count: " + str(itemsNum)
        tparams["letter"] = letter
        tparams["pages"] = pagesNum
        for i in xrange(pagesNum):
            tparams["page"] = i
            if i == 0:
                s = ""
            else:
                s = str(i)
            X.File.save(
                params["output"] + "/" + letter + s + "." + params["ext"], templater.process(templateCode, tparams)
            )

    f = open("tmp/categories.txt", "r")
    for category in f:
        try:
            print "Subcategory: " + params["output"] + "/" + category.strip()
            fname = TEMPLATES_DIR + params["name"] + "/item.tpl"
            tparams["category"] = category.strip()
            for i in Items.getitems("tmp/" + category.strip()):
                tparams["item"] = dict(map(None, Items.fields, i))
                X.File.save(
                    params["output"] + "/" + category.strip() + "/" + getname(tparams["item"]["name"], params["ext"]),
                    templater.process(X.File.load(fname), tparams),
                )
            fname = TEMPLATES_DIR + params["name"] + "/category.tpl"
            X.File.save(
                params["output"] + "/" + category.strip() + "/index." + params["ext"],
                templater.process(X.File.load(fname), tparams),
            )
        except:
            print sys.exc_info()[0]
            print sys.exc_info()[1]

    print "Generate categories"
    fname = TEMPLATES_DIR + params["name"] + "/categories.tpl"
    for root, dirs, files in os.walk("tmp"):
        if not os.path.isfile(root + "/data.txt") and root != "tmp":
            tparams["category"] = root[4:]
            X.File.save(
                params["output"] + "/" + tparams["category"] + "/index." + params["ext"],
                templater.process(X.File.load(fname), tparams),
            )