def myheart(db): """ 列出全部含有心的收藏,同时可以进行编辑了. """ def buildtagurl(cid, tag): url = "/my/" v = [] if cid: v.append("cid=%s" % cid) if tag: v.append("tag=%s" % urllib.quote(tag)) if v: return url + "?" + "&".join(v) return url data = [] alltags = set() for urlid, cid, url, title, tags, notes, pt, thisarchive, isheart in getUrls(db): for x in tags: alltags.add('"%s"' % x.replace('"', '\\"')) if isheart != 1: continue thistags = [] for t in tags: thistags.append((t, buildtagurl(0, t))) # 全局的Tag data.append((urlid, url, title, cid, tags, notes, pt, thistags, isheart, thisarchive)) allcats = dict([(cid, title) for cid, title in getCategory(db)]) ret = template("myheart", allcategorys=allcats, bookmarks=data, tags=",".join(list(alltags)), count=len(data)) return compressit(ret)
def myheart(db): """ 列出全部含有心的收藏,同时可以进行编辑了. """ def buildtagurl(cid, tag): url = '/my/' v = [] if cid: v.append('cid=%s' % cid) if tag: v.append('tag=%s' % urllib.quote(tag)) if v: return url + '?' + '&'.join(v) return url data = [] alltags = set() for urlid, cid, url, title, tags, notes, pt, thisarchive, isheart in getUrls( db): for x in tags: alltags.add('"%s"' % x.replace('"', '\\"')) if isheart != 1: continue thistags = [] for t in tags: thistags.append((t, buildtagurl(0, t))) #全局的Tag data.append((urlid, url, title, cid, tags, notes, pt, thistags, isheart, thisarchive)) allcats = dict([(cid, title) for cid, title in getCategory(db)]) ret = template('myheart', allcategorys=allcats, bookmarks=data, tags=','.join(list(alltags)), count=len(data)) return compressit(ret)
def my(db): def getparams(): #返回catid(str),pageno cid = int(request.GET.get('cid','0')) pn = int(request.GET.get('pn','1')) tag = request.GET.get('tag','').lower() return cid,pn,tag def buildurl(cid,tag,pn): url = '/my/' v = [] if cid: v.append('cid=%s' % cid) if tag: v.append('tag=%s' % tag) if pn != 0: v.append('pn=%s' % pn) if v: return url+'?'+'&'.join(v) return url def buildtagurl(cid,tag): url = '/my/' v = [] if cid: v.append('cid=%s' % cid) if tag: v.append('tag=%s' % urllib.quote(tag)) if v: return url+'?'+'&'.join(v) return url updatemsg = versionupdated(db) curcid,curpn,curtag = getparams() #当前的catid,当前的curpn,当前的书签. #---列出全部的类目信息以及书签--- data = [] cats = defaultdict(int) #已经被使用的Category{id:count} alltags = set() for urlid,cid,url,title,tags,notes,pt,thisarchive,isheart in getUrls(db): cats[cid] += 1 for x in tags: alltags.add('"%s"' % x.replace('"','\\"')) #选择了类目的 if curcid and curcid != cid: continue #选择了Tag if curtag and (curtag not in tags): continue thistags = [] for t in tags: thistags.append( (t,buildtagurl(0,t)) ) #全局的Tag data.append( (urlid,url,title,cid,tags,notes,pt,thistags,isheart,thisarchive) ) if not data: #没有数据 if curcid or curtag: #可能是这个目录/Tag下没了(最后一条) redirect("/my/") categorys = [] #[ [(url,title,count)] ] #全部有数据的Category的信息. allcats = {} #全部的Category信息. emptycats = {} #空的Category信息 if cats: #用户全部的有效目录信息. defaultcatid = 0 for cid,title in getCategory(db): defaultcatid = cid allcats[cid]=title if cid not in cats: #有收藏的 emptycats[cid]=title #这里按照真正的categoryid排下,免得出现不断位置排列的问题. v = [(count,catid) for catid,count in cats.iteritems()] v.sort(reverse=True) tmp = [] for count,catid in v: if catid not in allcats: continue #有这个发生,就说明用户删除了含有收藏的收藏夹. tmp.append( (buildurl(catid,'',0),allcats[catid],count) ) if len(tmp) == 6: categorys.append(tmp) tmp = [] if tmp: cnt = 6 - len(tmp) for x in xrange(cnt): tmp.append( ('',0,0) ) categorys.append(tmp) #--禁止删除默认收藏夹-- if defaultcatid in emptycats: del emptycats[defaultcatid] #计算pagecount pagecount = 1+(len(data)-1)/RECORD_PER_PAGE prevurl = buildurl(curcid,curtag,curpn-1) nexturl = buildurl(curcid,curtag,curpn+1) pages = (curpn,pagecount,prevurl,nexturl) s = RECORD_PER_PAGE*(curpn-1) bookmarks = data[s:s+RECORD_PER_PAGE] ret = template('my', categorys=categorys, #当前已经有收藏的收藏夹 curcatinfo=(allcats.get(curcid,''),len(data)), allcategorys=allcats, emptycategorys=emptycats, bookmarks=bookmarks, pages=pages, updatemsg=updatemsg, disabled = not needarchive(db), tags=','.join(list(alltags))) return ret