Пример #1
0
def njs(db):
	"""
		新的JS模版.
		未登陆的返回一个错误的Token好了。
		这样用户选择的时候会出现需要登陆的提示。
		模版:
			{{tags}},{{categorys}}
		输入:
			url,title
	"""
	existed = False
	lasttime = ''
	tips = ''
	url = request.GET.get('url','') #可以用来进行判断预分配的,暂时还没用上
	if url:
		cleanurl = normaliseurl(url)
		shortid = getshorturlid(url)
		db.execute('SELECT URL,TIE_TIME FROM URLS WHERE SHORT_URL_ID=%s',(shortid))
		for url,tietime in db.getall(): #怕不同URL得到相同的SHORT_URL_ID
			u = normaliseurl(url)
			if u == cleanurl:
				existed = True
				lasttime = tietime
				break
	cats = []
	for cid,title in getCategory(db):
		cats.append('<option value="%s">%s</option>' % (cid,html_escape(title)))
	#@todo: 尝试去获取最可能的Categorys和Tags.
	ret = template('jsp',tags="",categorys=''.join(cats),httpdomain=CFG.domain,existed=existed,lasttime=lasttime,tips=tips)
	response['Content-Type'] = 'application/javascript'
	return ret
Пример #2
0
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)
Пример #3
0
def apinewcat(db):
	"""
		api的新建目录
	"""
	title = request.POST.get('title','').strip()
	if not title: return {'error' : '收藏夹的名称总是不可少的'}
	if ulen(title) > 128: return {'error' : '收藏夹的名称太长了'}

	curid = 0
	ret = getCategory(db)
	for cid,t in ret:
		if t.lower() == title.lower():
			break
		curid += 1
	if curid == len(ret): #没有相同的
		db.execute('INSERT INTO CATEGORY(TITLE) VALUES(%s)',title)
		db.commit()
		ret = getCategory(db)
	else:
		ret[curid],ret[0] = ret[0],ret[curid]

	return {'content' : [ (cid,t) for cid,t in ret]}
Пример #4
0
def apinewcat(db):
    """
		api的新建目录
	"""
    title = request.POST.get('title', '').strip()
    if not title: return {'error': '收藏夹的名称总是不可少的'}
    if ulen(title) > 128: return {'error': '收藏夹的名称太长了'}

    curid = 0
    ret = getCategory(db)
    for cid, t in ret:
        if t.lower() == title.lower():
            break
        curid += 1
    if curid == len(ret):  #没有相同的
        db.execute('INSERT INTO CATEGORY(TITLE) VALUES(%s)', title)
        db.commit()
        ret = getCategory(db)
    else:
        ret[curid], ret[0] = ret[0], ret[curid]

    return {'content': [(cid, t) for cid, t in ret]}
Пример #5
0
def njs(db):
    """
		新的JS模版.
		未登陆的返回一个错误的Token好了。
		这样用户选择的时候会出现需要登陆的提示。
		模版:
			{{tags}},{{categorys}}
		输入:
			url,title
	"""
    existed = False
    lasttime = ''
    tips = ''
    url = request.GET.get('url', '')  #可以用来进行判断预分配的,暂时还没用上
    if url:
        cleanurl = normaliseurl(url)
        shortid = getshorturlid(url)
        db.execute('SELECT URL,TIE_TIME FROM URLS WHERE SHORT_URL_ID=%s',
                   (shortid))
        for url, tietime in db.getall():  #怕不同URL得到相同的SHORT_URL_ID
            u = normaliseurl(url)
            if u == cleanurl:
                existed = True
                lasttime = tietime
                break
    cats = []
    for cid, title in getCategory(db):
        cats.append('<option value="%s">%s</option>' %
                    (cid, html_escape(title)))
    #@todo: 尝试去获取最可能的Categorys和Tags.
    ret = template('jsp',
                   tags="",
                   categorys=''.join(cats),
                   httpdomain=CFG.domain,
                   existed=existed,
                   lasttime=lasttime,
                   tips=tips)
    response['Content-Type'] = 'application/javascript'
    return ret
Пример #6
0
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)
Пример #7
0
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