示例#1
0
文件: shop.py 项目: alikzao/tao1
def list_orders(request):
	from libs.sites.sites import get_full_docs
	db = request.db
	# web_order = db.doc.find({'doc_type':'web_order'})
	# web_order_ware = db.doc.find({'doc_type':'web_order_ware'})
	web_order = get_full_docs(db.doc.find({'doc_type':'des:web_order'}).limit(60).sort('doc.date', -1))
	web_order_ware = get_full_docs(db.doc.find({'doc_type':'des:web_order_ware'}).limit(60).sort('doc.date', -1))
	ware = get_full_docs(db.doc.find({'doc_type':'des:ware'}).limit(60).sort('doc.date', -1))
	return templ('libs.shop:list_orders', request, dict(web_order = web_order, web_order_ware = web_order_ware, ware=ware))
示例#2
0
文件: shop.py 项目: snjypl/tao1
def ware_page(request, doc_id):
    u = urlparse(request.url)
    url = u.scheme + '://' + u.hostname + u.path
    data_tree = []
    from libs.sites.sites import get_pagination, get_full_doc, get_full_docs
    db = request.db
    doc = get_full_doc(doc_id, img_ctr=4)

    req_attr = db.doc.find({'doc_type': 'des:ware_attr', 'owner': doc['_id']})
    ware_attr = get_full_docs(
        db.doc.find({
            'doc_type': 'des:ware_attr',
            'owner': doc['_id']
        }))

    proc_id = doc['proc_id']
    title = ct(doc['doc']['title']) if 'title' in doc['doc'] else ''
    cls = doc['doc']['class']
    req = db.doc.find({
        'doc_type': 'des:ware',
        '_id': {
            '$ne': doc['_id']
        },
        'doc.class': cls
    }).limit(6)
    similar = get_full_docs(req)
    url1 = url
    seo = db.doc.find_one({'doc.alias': 'ware_page_seo'}, {
        'doc.description': 1,
        'doc.tags': 1,
        'doc.body': 1,
        'doc.footer': 1,
        'doc.add_title': 1
    })
    # if seo:
    # 	seo = seo
    # else: seo = ''
    return templ(
        'ware_page', request,
        dict(doc=doc,
             url=url1,
             doc_id=doc_id,
             proc_id=proc_id,
             similar=similar,
             seo=seo,
             tree=data_tree,
             page_title=title,
             ware_attr=ware_attr))  #news_map=news_map, captcha=raw, hash=hash,
示例#3
0
文件: shop.py 项目: alikzao/tao1
def list_class(request, cls):
	""" показывает список вложеных категорий и товаров для категорий
	"""
	from libs.sites.sites import get_pagination, get_full_docs, get_curr_img, get_full_doc
	from libs.files.files import get_nf
	db = request.db; clss = []
	parent_id = db.doc.find_one({'doc_type':'des:ware_class', 'doc.alias':cls})
	for doc in db.doc.find({'doc_type':'des:ware_class', 'parent':parent_id['_id']}).sort('doc.date', -1):
		proc_id = doc['doc_type']
		d_img = doc['default_img'] if 'default_img' in doc and doc['default_img'] else None
		attachment = get_nf(proc_id, doc['_id'], 1)
		data = doc['doc']
		try:
			count = count_ware(doc['_id'])
		except: count='1'
		full_doc = {"_id":doc['_id'], "id": doc['_id'],
		            'count':count,
		            "doc": data,
		            "att": attachment, "img":get_curr_img(doc, attachment), 'default_img':d_img, 'proc_id':proc_id}
		clss.append(full_doc)
	pages= ''
	docs = get_full_docs(db.doc.find({'doc_type':'des:ware', 'doc.class':parent_id['_id']}).sort('doc.date', -1))
	# docs = get_full_docs(req).sort('doc.date', -1)
	filter = get_filters(parent_id['_id'])
	# filter = get_ware_cls(cls)
	parent_doc = get_full_doc(parent_id['_id'])
	# seo = db.doc.find_one({'doc.alias':'class_seo'}, {'doc.title':1, 'doc.tags':1, 'doc.body':1, 'doc.footer':1, 'doc.add_title':1 })
	seo = db.doc.find_one({'_id':parent_id['_id']}, {'doc.description':1, 'doc.tags':1, 'doc.footer':1 })
	# seo = seo if 'doc' in seo else ''
	return templ('list_class', request, dict(cls_docs = clss, cls=cls, docs = docs, proc_id='des:ware', pages = pages,
	                                         path=get_navigate(parent_id['_id']), parent_doc=parent_doc, filter=filter, seo=seo) )
示例#4
0
文件: shop.py 项目: snjypl/tao1
def list_ware_cls(request, full=False):
    """
	получение колва докуентов
	 Для каждого класса находим сколько в нем документов
	 Назначаем их кол-во всем его родителям приплюсовыванием
	 :param выводить с дополнительной информацией типа картинок или просто названия, с доп. информацией выводится олько для главной
	"""
    db = request.db
    docs = [
        res for res in db.doc.find({
            'doc_type': 'des:ware_class'
        }, {
            'doc.title.ru': 1,
            'doc.alias': 1,
            'parent': 1,
            'child': 1
        }).sort('doc.date', -1)
    ]
    # docs = [res for res in db.doc.find({'doc_type':'des:ware_class'}).sort('doc.date', -1) ]
    if full:
        docs = [
            res for res in db.doc.find({
                'doc_type': 'des:ware_class'
            }).sort('doc.date', -1)
        ]
        from libs.sites.sites import get_full_docs
        docs = get_full_docs(docs)
    return form_tree_(docs)
示例#5
0
文件: tree.py 项目: snjypl/tao1
def tree_data(request, proc_id, owner):
    """ Берет из базы данные формирует из них json и возвращает в нужный шаблон"""
    # proc_id = первый раз сom:des:obj
    doc = get_doc_tree(request, owner, proc_id)
    proc_id = doc['_id']

    def translate_(branch):
        new_children = []
        branch['title'] = ct(request, branch['title'])
        branch['descr'] = ct(request,
                             branch['descr']) if 'descr' in branch else ''
        for child in branch['children']:
            new_children.append(translate_(child))
        branch['children'] = new_children
        return branch

    docs = [
        res for res in request.db.doc.find({
            'doc_type': 'des:comments',
            'doc.owner': owner
        }).sort('doc.date', -1)
    ]
    from libs.sites.sites import get_full_docs
    docs = get_full_docs(request, docs)
    value = form_tree_comm(request, docs)
    # value = translate_(form_tree(db.tree.find_one({'_id':proc_id})))
    return response_json(request, {
        "result": "ok",
        "content": value,
        "proc_id": proc_id
    })
示例#6
0
文件: shop.py 项目: alikzao/tao1
def set_filters(request, cls, filters):
	db = request.db
	url = filters[1:]
	url = url.split(';')
	docs=[]; cond=[]; ds = {}; attr = []; data = []

	for res in url:
		res = res.replace('%20', ' ')
		aaa = res.split('=');

		key = aaa[0]; val = aaa[1]
		if key in ds:
			if type(ds[key]) == list: ds[key].append(val)
			else: ds[key] = [ds[key], val]
		else: ds.update({key:val})
	for res in ds:
		attr.append(res)
	for res in ds.items():
		if type(res[1]) == list:  pr = {'doc.title.ru':res[0], 'doc.attr_val.ru':{'$in':res[1]}}
		else: pr = {'doc.title.ru':res[0], 'doc.attr_val.ru':res[1]}
		docs.append(pr)
	cursor = db.doc.aggregate([
		{ '$match'  : { 'doc_type' : "des:ware_attr", 'doc.class':cls, '$or': docs} },
		{ '$group'  : { '_id': "$owner", "attr": { '$push': "$doc.title.ru" } } },
		{ '$match'  : { "attr": { '$all': attr } } },
		{ '$project': {"_id":1 } }
	])
	for res in cursor:
		cond.append(res)
	if not len(cond): return None
	from libs.sites.sites import get_full_docs
	docs = get_full_docs(db.doc.find({ '$or':cond }).sort('doc.date', -1))
	return docs
示例#7
0
文件: shop.py 项目: snjypl/tao1
def set_filters(request, cls, filters):
    db = request.db
    url = filters[1:]
    url = url.split(';')
    docs = []
    cond = []
    ds = {}
    attr = []
    data = []

    for res in url:
        res = res.replace('%20', ' ')
        aaa = res.split('=')

        key = aaa[0]
        val = aaa[1]
        if key in ds:
            if type(ds[key]) == list: ds[key].append(val)
            else: ds[key] = [ds[key], val]
        else: ds.update({key: val})
    for res in ds:
        attr.append(res)
    for res in ds.items():
        if type(res[1]) == list:
            pr = {'doc.title.ru': res[0], 'doc.attr_val.ru': {'$in': res[1]}}
        else:
            pr = {'doc.title.ru': res[0], 'doc.attr_val.ru': res[1]}
        docs.append(pr)
    cursor = db.doc.aggregate([{
        '$match': {
            'doc_type': "des:ware_attr",
            'doc.class': cls,
            '$or': docs
        }
    }, {
        '$group': {
            '_id': "$owner",
            "attr": {
                '$push': "$doc.title.ru"
            }
        }
    }, {
        '$match': {
            "attr": {
                '$all': attr
            }
        }
    }, {
        '$project': {
            "_id": 1
        }
    }])
    for res in cursor:
        cond.append(res)
    if not len(cond): return None
    from libs.sites.sites import get_full_docs
    docs = get_full_docs(db.doc.find({'$or': cond}).sort('doc.date', -1))
    return docs
示例#8
0
文件: clip.py 项目: snjypl/tao1
def list_clips(request):
	""" show list clips
	"""
	if not user_has_permission('des:clips', 'edit') and not 'daoerp' in get_host():
		return 'ERROR 404'
	db = request.db
	req = db.doc.find({'doc_type':'des:clips', 'head_field.user': get_current_user(True)})
	from libs.sites.sites import get_full_docs
	dv = get_full_docs(req)
	return templ('libs.clip:list_clips.tpl', request, dict(docs=dv))
示例#9
0
文件: shop.py 项目: snjypl/tao1
def list_orders(request):
    from libs.sites.sites import get_full_docs
    db = request.db
    # web_order = db.doc.find({'doc_type':'web_order'})
    # web_order_ware = db.doc.find({'doc_type':'web_order_ware'})
    web_order = get_full_docs(
        db.doc.find({
            'doc_type': 'des:web_order'
        }).limit(60).sort('doc.date', -1))
    web_order_ware = get_full_docs(
        db.doc.find({
            'doc_type': 'des:web_order_ware'
        }).limit(60).sort('doc.date', -1))
    ware = get_full_docs(
        db.doc.find({
            'doc_type': 'des:ware'
        }).limit(60).sort('doc.date', -1))
    return templ(
        'libs.shop:list_orders', request,
        dict(web_order=web_order, web_order_ware=web_order_ware, ware=ware))
示例#10
0
文件: shop.py 项目: alikzao/tao1
def list_ware(request, cls):
	""" вызывается для показа списка товаров """
	#ware_class_cat-справочник где хранятся категории которые относятся к классу ( класс-смартфон у него категория диагональ экрана )
	# cats = [res['_id'] for res in db.doc.find({'doc_type':'ware_class_cat'})]
	cond = {'doc_type':'des:ware', 'doc.class': cls, 'doc.pub':'true'}
	if request.method == 'POST':
		cond.update(ware_filter(get_post('cat', [])))   # cond = {'attr.diagonal: {$in: [15, 17]}}
	from libs.sites.sites import get_pagination, get_full_docs
	pages, req = get_pagination(cond)
	sort = ('doc.date', -1)
	if sort: req.sort(*sort)
	dv = get_full_docs(req)
	filter = get_ware_cls(cls)
	return templ('libs.shop:list_ware', request, dict(cls = cls, docs = dv, proc_id='des:ware', pages = pages, filter=filter) )
示例#11
0
文件: shop.py 项目: alikzao/tao1
def ware_page(request, doc_id):
	u = urlparse(request.url)
	url = u.scheme + '://' + u.hostname + u.path
	data_tree = []
	from libs.sites.sites import get_pagination, get_full_doc, get_full_docs
	db = request.db
	doc = get_full_doc(doc_id, img_ctr=4)

	req_attr = db.doc.find({'doc_type':'des:ware_attr', 'owner':doc['_id']})
	ware_attr = get_full_docs( db.doc.find({'doc_type':'des:ware_attr', 'owner':doc['_id']}) )


	proc_id = doc['proc_id']
	title = ct(doc['doc']['title']) if 'title' in doc['doc'] else ''
	cls = doc['doc']['class']
	req = db.doc.find( {'doc_type':'des:ware', '_id':{'$ne':doc['_id']}, 'doc.class':cls} ).limit(6)
	similar = get_full_docs( req )
	url1 = url
	seo = db.doc.find_one({'doc.alias':'ware_page_seo'}, {'doc.description':1, 'doc.tags':1, 'doc.body':1, 'doc.footer':1, 'doc.add_title':1})
	# if seo:
	# 	seo = seo
	# else: seo = ''
	return templ('ware_page', request, dict(doc = doc, url = url1, doc_id=doc_id, proc_id=proc_id, similar = similar, seo=seo,
		tree = data_tree, page_title=title, ware_attr=ware_attr)) #news_map=news_map, captcha=raw, hash=hash,
示例#12
0
文件: shop.py 项目: alikzao/tao1
def list_ware_cls(request, full=False):
	"""
	получение колва докуентов
	 Для каждого класса находим сколько в нем документов
	 Назначаем их кол-во всем его родителям приплюсовыванием
	 :param выводить с дополнительной информацией типа картинок или просто названия, с доп. информацией выводится олько для главной
	"""
	db = request.db
	docs = [res for res in db.doc.find({'doc_type':'des:ware_class'}, {'doc.title.ru':1, 'doc.alias':1, 'parent':1, 'child':1 }).sort('doc.date', -1) ]
	# docs = [res for res in db.doc.find({'doc_type':'des:ware_class'}).sort('doc.date', -1) ]
	if full:
		docs = [res for res in db.doc.find({'doc_type':'des:ware_class'}).sort('doc.date', -1) ]
		from libs.sites.sites import get_full_docs
		docs = get_full_docs(docs)
	return form_tree_( docs )
示例#13
0
文件: shop.py 项目: snjypl/tao1
def list_ware(request, cls):
    """ вызывается для показа списка товаров """
    #ware_class_cat-справочник где хранятся категории которые относятся к классу ( класс-смартфон у него категория диагональ экрана )
    # cats = [res['_id'] for res in db.doc.find({'doc_type':'ware_class_cat'})]
    cond = {'doc_type': 'des:ware', 'doc.class': cls, 'doc.pub': 'true'}
    if request.method == 'POST':
        cond.update(ware_filter(get_post(
            'cat', [])))  # cond = {'attr.diagonal: {$in: [15, 17]}}
    from libs.sites.sites import get_pagination, get_full_docs
    pages, req = get_pagination(cond)
    sort = ('doc.date', -1)
    if sort: req.sort(*sort)
    dv = get_full_docs(req)
    filter = get_ware_cls(cls)
    return templ(
        'libs.shop:list_ware', request,
        dict(cls=cls, docs=dv, proc_id='des:ware', pages=pages, filter=filter))
示例#14
0
文件: tree.py 项目: alikzao/tao1
def tree_data(request, proc_id, owner):
	""" Берет из базы данные формирует из них json и возвращает в нужный шаблон"""
	# proc_id = первый раз сom:des:obj
	doc = get_doc_tree(request, owner, proc_id)
	proc_id = doc['_id']
	def translate_(branch):
		new_children = []
		branch['title'] = ct(request, branch['title'])
		branch['descr'] = ct(request, branch['descr'] )if 'descr' in branch else ''
		for child in branch['children']:
			new_children.append(translate_(child))
		branch['children'] = new_children
		return branch

	docs = [res for res in request.db.doc.find({'doc_type':'des:comments', 'doc.owner':owner}).sort('doc.date', -1) ]
	from libs.sites.sites import get_full_docs
	docs = get_full_docs(request, docs)
	value = form_tree_comm(request, docs )
	# value = translate_(form_tree(db.tree.find_one({'_id':proc_id})))
	return response_json(request, {"result":"ok", "content":value, "proc_id":proc_id})
示例#15
0
def user(request, u):
	db = request.db
	uu = u
	u_id    = db.doc.find_one({'doc_type':'des:users', '_id':'user:'******'doc_type':'des:users', 'doc.nickname':uu})
	u_name  = db.doc.find_one({'doc_type':'des:users', 'doc.name.ru':uu})

	if u_id:      u = u_id
	elif u_alias: u = u_alias
	elif u_name:  u = u_name
	dv = get_full_doc( u['_id'] )

	req = db.doc.find({'doc_type':'des:obj', 'doc.user':u['_id']})
	docs = get_full_docs(req)

	friends = json.loads(json.dumps(u['friends'])) if 'friends' in u else []
	followers = json.loads(json.dumps(u['followers'])) if 'followers' in u else []

	js_friends = json.dumps(u['friends']) if 'friends' in u else []
	js_followers = json.dumps(u['followers']) if 'followers' in u else []


	return templ('user_page', request, dict( doc = dv, docs=docs, doc_id=u['_id'], user_name=ct( u['doc']['name'] ), proc_id='des:users',
	             friends=friends, followers=followers, js_friends=js_friends, js_followers=js_followers) )
示例#16
0
文件: shop.py 项目: snjypl/tao1
def list_class(request, cls):
    """ показывает список вложеных категорий и товаров для категорий
	"""
    from libs.sites.sites import get_pagination, get_full_docs, get_curr_img, get_full_doc
    from libs.files.files import get_nf
    db = request.db
    clss = []
    parent_id = db.doc.find_one({
        'doc_type': 'des:ware_class',
        'doc.alias': cls
    })
    for doc in db.doc.find({
            'doc_type': 'des:ware_class',
            'parent': parent_id['_id']
    }).sort('doc.date', -1):
        proc_id = doc['doc_type']
        d_img = doc['default_img'] if 'default_img' in doc and doc[
            'default_img'] else None
        attachment = get_nf(proc_id, doc['_id'], 1)
        data = doc['doc']
        try:
            count = count_ware(doc['_id'])
        except:
            count = '1'
        full_doc = {
            "_id": doc['_id'],
            "id": doc['_id'],
            'count': count,
            "doc": data,
            "att": attachment,
            "img": get_curr_img(doc, attachment),
            'default_img': d_img,
            'proc_id': proc_id
        }
        clss.append(full_doc)
    pages = ''
    docs = get_full_docs(
        db.doc.find({
            'doc_type': 'des:ware',
            'doc.class': parent_id['_id']
        }).sort('doc.date', -1))
    # docs = get_full_docs(req).sort('doc.date', -1)
    filter = get_filters(parent_id['_id'])
    # filter = get_ware_cls(cls)
    parent_doc = get_full_doc(parent_id['_id'])
    # seo = db.doc.find_one({'doc.alias':'class_seo'}, {'doc.title':1, 'doc.tags':1, 'doc.body':1, 'doc.footer':1, 'doc.add_title':1 })
    seo = db.doc.find_one({'_id': parent_id['_id']}, {
        'doc.description': 1,
        'doc.tags': 1,
        'doc.footer': 1
    })
    # seo = seo if 'doc' in seo else ''
    return templ(
        'list_class', request,
        dict(cls_docs=clss,
             cls=cls,
             docs=docs,
             proc_id='des:ware',
             pages=pages,
             path=get_navigate(parent_id['_id']),
             parent_doc=parent_doc,
             filter=filter,
             seo=seo))
示例#17
0
def list_users(request):
	req = request.db.doc.find({'doc_type':'des:users'})
	docs = get_full_docs(req)
	return templ('list_users', request, dict(docs=docs))