Ejemplo n.º 1
0
Archivo: tree.py Proyecto: snjypl/tao1
async def del_comm_post(request):
    """ doc_id - id самого коментария """
    data = await request.post()
    print(data)
    comm_id = data.get('comm_id')
    doc = get_doc(request, comm_id)

    if is_admin(request) or user_has_permission(request, 'des:obj',
                                                'del_comm'):
        # добавление подсчета коментариев в отдельном документе
        request.db.doc.update({"_id": doc['doc']['owner']},
                              {"$inc": {
                                  "count_branch": -1
                              }})
        if 'child' in doc:
            if len(doc['child']):
                request.db.doc.update({"_id": comm_id},
                                      {"$set": {
                                          'doc.is_del': 'true'
                                      }})
                return response_json(request, {
                    "result": "ok",
                    "action": "del_dom",
                    "id": comm_id
                })
        else:
            del_row(request, 'des:comments', {comm_id: comm_id})
            return response_json(request, {"result": "ok", "id": comm_id})

    else:
        return response_json(request, {
            "result": "fail",
            "error": "error sequrity"
        })
Ejemplo n.º 2
0
Archivo: tree.py Proyecto: snjypl/tao1
def ban_comm_post(request):
    if not is_admin(request):
        return response_json(request, {"result": "fail", "error": "no ban"})
    if not user_is_logged_in(request):
        return response_json(request, {
            "result": "fail",
            "error": "no comment"
        })
    data = request.post()
    proc_id = data.get('proc_id')
    id_comm = data.get('branch_id')
    doc = request.db.doc.find_one({'_id': id_comm})

    doc = doc['doc']
    ip = doc['ip'] if 'ip' in doc else ''
    # try:
    lst = [
        x.strip() for x in get_const_value(request, 'ban_comm', '').split(',')
    ]
    # die([lst, ip, branch])
    if not ip in lst:
        lst.append(ip)
    set_const_value(request, 'ban_comm', ','.join(lst))

    user_name = ct(request, doc['user'])
    user = get_doc(request, 'user:'******'doc']['ban'] = 'true'
        request.db.doc.save(user)
    return response_json(request, {"result": "ok", "user": user_name})
Ejemplo n.º 3
0
def add_field(request, proc_id, data, field_id=None): #field_id=None индекс поля которое нужно поменять при редактировании
	if not user_has_permission(request, proc_id, 'create'):
		return response_json(request, {"result": "fail", "error": "You have no permission."})
	print('data===================================================================================================')
	print('data', data)
	if 'relation' in data: relation = data['relation']
	else: relation = ''
	if 'relation_field' in data: relation_field = data['relation_field']
	else: relation_field = ''
	for i in data:
		tp = data['type'] if 'type' in data else 'string'
		field = { "hint": {"ru":data['hint_ru'], "en":data['hint_en']}, 
				"title": {"ru":data['title_ru'],"en":data['title_en']}, "visible": data['visible'], "oncreate": data['oncreate'],
				"type": tp, "relation":relation, "relation_field":relation_field,
				"is_editable": data['is_editable'], "id": data['id'], "is_translate":data['is_translate']}
	doc = get_mt(request, proc_id)
	if not field_id:
		doc['doc'].append(field)
	else:
		for res in doc['doc']:
			if field_id == res['id']:
				cur = doc['doc'].index(res)
				doc['doc'].remove(res)
				doc['doc'].insert(cur, field)
	request.db.map.save(doc)
	return response_json(request, {"result":"ok"} )
Ejemplo n.º 4
0
async def get_doc_post(request):
	if is_admin(request):
		data = get_post(request)
		doc_id = data['doc_id']
		doc = request.db.doc.find_one({"_id":doc_id})['doc']
		return response_json(request,  {"result":"ok", "id":doc_id, "doc":doc})
	return response_json(request,  {"result":"fail", "doc":'bolt'})
Ejemplo n.º 5
0
Archivo: tree.py Proyecto: snjypl/tao1
async def edit_comm_post(request):
    if not user_has_permission(request, 'des:obj', 'add_com'):
        return {"result": "fail", "error": "no comment"}
    if not user_is_logged_in(request):
        return response_json(request, {
            "result": "fail",
            "error": "no comment"
        })
    data = await request.post()
    comm_id = data.get('comm_id')
    body = data.get('body')
    user = data.get('user')

    if user == get_current_user(request) or is_admin(request):
        if 'child' in get_doc(request, comm_id) and not is_admin(request):
            return response_json(request, {
                "result": "fail",
                "error": "comment already answered"
            })
        doc = request.db.doc.update(
            {'_id': comm_id},
            {"$set": {
                "doc.body." + cur_lang(request): body
            }})
        from core.union import invalidate_cache
        invalidate_cache('single_page')
        return response_json(request, {"result": "ok", "id": comm_id})
    else:
        return response_json(request, {
            "result": "fail",
            "error": "access denied"
        })
Ejemplo n.º 6
0
def table_del_field_post(request):
	data = get_post(request)
	proc_id = data['proc_id']
	field_id = data['field_id']
	doc = get_mt(request, proc_id)
	field = doc['doc']
	for i in field:
		if field_id in i['id']:
			field.remove(i) 
			request.db.map.save(doc)
			return response_json(request, {"result":"ok"})
	return response_json(request, {"result":"fail"})
Ejemplo n.º 7
0
Archivo: tree.py Proyecto: alikzao/tao1
def accept_comm_post(request):
	if not is_admin(request) and not user_has_permission(request, 'des:comments', 'edit'):
		return response_json(request, {"result":"fail", "error":"no has permission"})
	data = get_post(request)
	doc_id = data.get('doc_id')
	doc = request.db.doc.find_one({'_id':doc_id})
	doc['doc']['pre'] = 'false'
	request.db.doc.save(doc)
	owner = doc['doc']['doc_id']
	comm_id = str(doc['doc']['comm_id'])
	tree = request.db.tree.find_one({'_id': owner})
	# die(tree['tree'].keys())
	tree['tree'][comm_id]['pre'] = 'false'
	request.db.tree.save(tree)
	return response_json(request, {"result":"ok"})
Ejemplo n.º 8
0
async def table_get_field_post(request):
	data = get_post(request)
	field = data['field_id']
	proc_id = data['proc_id']
	doc = request.db.map.find_one({"_id":proc_id}, {"doc":1})
	res = []
#	res = list( filter( lambda x: x['id'] == field, doc['field_map']))
	for i in doc['doc']:
		if field == i['id']: 
			res.append(i)
	if len(res):
		# aaa = json.dumps(res[0])
		return response_json(request,  {"result":"ok", "val_field":res[0]})
	else:
		return response_json(request,  {"result":"fail", "error":field+" not this field."})
Ejemplo n.º 9
0
Archivo: perm.py Proyecto: snjypl/tao1
async def group_perm_post0(request): #@route('/permission', method='POST')
	""" Просто рисуем список всех справочников """
	if not user_is_logged_in(request):
		return response_json(request, {"result": "fail", "error": "Сеанс закончился зайдите в систему", "need_action":"login"})
	data = []
	roles = get_roles(request)
	rb_perm = ['view', 'edit', 'create', 'delete', 'move']
	condition = {'doc_type':{'$ne':'templ_comm'}}

	pages, req = await get_pagination2(request, condition, 'map')

	for res in req:  #находим все справочники
		data.append( build_row_report(title='<b>{}</b>'.format(res['_id']), results=[res['_id']], level=0, id=res['_id'], parent='_', child=rb_perm ) )

	return response_json(request, {"result":"ok", "head":report_cons_head([('title', 'Всего')]+[(i, i) for i in roles], 'checkbox', 'true'),
	        "data": data, "pages":pages })
Ejemplo n.º 10
0
Archivo: tree.py Proyecto: 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
    })
Ejemplo n.º 11
0
Archivo: perm.py Proyecto: snjypl/tao1
def group_perm_post1(request, parent):
	""" Draw права справочника and fields """
	data = []
	roles = get_roles(request)
	child0 = []
	rb_perm = ['view', 'edit', 'create', 'delete', 'move']
	if parent in ['des:obj', 'des:forum', 'des:wiki', 'des:news']: rb_perm += ['vote', 'vote_com', 'add_com','add_com_pre', 'del_comm', 'mod_accept', 'edit_tag']
	if parent in ['des:obj']: rb_perm += ['fb_import', 'edit_radio']
	# doc = request.db.map.find_one({'_id':parent}, {'field_map':1 })
	doc = request.db.map.find_one({'_id':parent}, {'doc':1 })
	for i in rb_perm:  # назначаем права на справочники    выводим права на справочники
		sub_id = parent+'/'+i; results = []
		for role in roles: #{u'role:simple_users': {u'des:users/phone': {u'edit': u'true', u'view': u'true'}, u'des:PM/title': {u'edit': u'true', u'view': u'true'}, u'des:PM/date': {u'edit': u'true', u'view': u'true'}}}
			val = parent in roles[role] and i in roles[role][parent] and roles[role][parent][i] == 'true'
			# role = simple_users
			# parent = des:obj
			# roles = список [role:admin, role:blogger и тд]
			results.append((role, ins_img(val), val))
		data.append( build_row_report_name(title=i, results=results, level=1, id=sub_id, parent=parent, child=[] ) )
		child0.append(sub_id)

	for rs in doc['doc']:    # находим выводим все поля справочников
		sub_id = parent+':'+rs['id']
		data.append( build_row_report(title='<b>%s</b>' % rs['id'], results=[rs['id']], level=1, id=sub_id, parent=parent, child=['2'] ) )
		child0.append(sub_id)


	# return response_json(request, {"result":"ok", "head":report_cons_head([('title', 'Название')], 'checkbox', 'true'), "data": json.dumps( data ), "page":1,"pagectr":1,"pages":""})
	return response_json(request, {"result":"ok", "head":report_cons_head([('title', 'Название')], 'checkbox', 'true'), "data": data, "page":1,"pagectr":1,"pages":""})
Ejemplo n.º 12
0
async def add_func_post(request):
	data = get_post(request)
	data = json.loads(data['data'])
	doc = request.db.conf.find_one({"_id":"default"})
	doc['func'].update({ data['name']: {'func': data['func'], 'descr': ''} })
	request.db.conf.save(doc)
	return response_json(request,  {"result":"ok"})
Ejemplo n.º 13
0
def table_sort_post(request):
	"""
	1) получаем нужный документ
	2) получаем его предыдущий документ
	3) берем дату предыдущего документа увеличиваем её на 1 секунду и сохраняем
	// снизу - некст, сверху - прев.  !!!!!!!!!
	"""
	data = get_post(request)
	doc_id = data['doc_id']
	prev = data['prev'] if 'prev' in data else ''
	next = data['next'] if 'next' in data else ''
	if next:
		old_date_id  = next
		delta = 1
	else:
		old_date_id  = prev
		delta = -1
	doc = request.db.doc.find_one({'_id':doc_id})
	old_date = request.db.doc.find_one({'_id':old_date_id})

	ddd = datetime.datetime.strptime(old_date['doc']['date'], "%Y-%m-%d %H:%M:%S")
	dd =  ddd + timedelta(seconds=delta)
	datef = datetime.datetime.strftime(dd, "%Y-%m-%d %H:%M:%S")
	datee =  datef
	doc['doc']['date'] = str(datef)
	request.db.doc.save(doc)
	return response_json(request, {"result":"ok", 'datee':datee})
Ejemplo n.º 14
0
def get_event_post(request):
	data = get_post(request)
	proc_id = data['proc_id']
	name_func = data['name_func']

	doc = request.db.map.find_one({'_id':proc_id}, {'events':1})
	e = doc['events'][name_func] if 'events' in doc else ''
	return response_json(request, {"result":"ok", "func_text":json.dumps(e)})
Ejemplo n.º 15
0
Archivo: tree.py Proyecto: alikzao/tao1
async def edit_comm_post(request):
	if not user_has_permission(request, 'des:obj', 'add_com'): return {"result":"fail", "error":"no comment"}
	if not user_is_logged_in(request): return response_json(request, {"result":"fail", "error":"no comment"})
	data = await request.post()
	comm_id = data.get('comm_id')
	body =    data.get('body')
	user =    data.get('user')

	if user == get_current_user(request) or is_admin(request):
		if 'child' in get_doc(request, comm_id) and not is_admin(request):
			return response_json(request, {"result":"fail", "error":"comment already answered"})
		doc = request.db.doc.update({'_id': comm_id}, {"$set": {"doc.body." + cur_lang(request): body}})
		from core.union import invalidate_cache
		invalidate_cache('single_page')
		return response_json(request, {"result":"ok", "id":comm_id})
	else:
		return response_json(request, {"result":"fail", "error":"access denied"})
Ejemplo n.º 16
0
def table_add_row_post(request):
	data      = get_post(request)
	proc_id   = data['proc_id']
	owner     = data.get('owner', None)
	# defaults  = json.loads(data['defaults'] if 'defaults' in data else {})

	auto_fill = data.get('auto_fill', False)

	if not user_has_permission(request, proc_id, 'create'):
		return response_json(request, {"result": "fail", "error": "You have no permission."})
	try:
		doc_id, updated = create_empty_row_(request, proc_id, owner, auto_fill)   # update_row_(proc_id, doc_id, {})
		if doc_id:
			return response_json(request, {"result":"ok", "id":doc_id, "updated": updated})
		else:
			return response_json(request, {"result":"fail", "descr":"not doc_id", "error":json.dumps(updated)})
	except Exception as e:
		return response_json(request, {"result":"fail", "descr":"exception", "error": e})
Ejemplo n.º 17
0
def table_update_cell_post(request):
	proc_id = request.match_info.get('proc_id')
	if not user_has_permission(request, proc_id, 'edit'):
		return {"result": "fail", "error": "You have no permission."}
	data = get_post(request)
	idd = data['id']
	field = data['field']
	value = unquote( data['value'] )
	return response_json(request, update_cell(request, idd, proc_id, field, value) )
Ejemplo n.º 18
0
async def sandbox_post(request):
	data = get_post(request)
	data = json.loads(data['data'])
#	proc_id = get_post(proc_id)
	meta = request.db.map.find_one({'_id':data['proc_id']})
	if not 'events' in meta: meta['events'] = {}
	meta['events'].update( { data['event'] : data['code'] })
	request.db.map.save(meta)
	return response_json(request,  {"result":"ok"})
Ejemplo n.º 19
0
def get_field_post(request):
	data = get_post(request)
	proc_id = data['proc_id']
	doc = get_mt(request, proc_id)
	field = doc['doc']
	list_field = []
	for l_field in field:
		list_field.append({"id":l_field['id'], "title":ct(request, l_field['title'])})
	return response_json(request,{"result":"ok", "list_field":list_field })
Ejemplo n.º 20
0
Archivo: tree.py Proyecto: alikzao/tao1
async def del_comm_post(request):
	""" doc_id - id самого коментария """
	data = await request.post()
	print(data)
	comm_id = data.get( 'comm_id')
	doc = get_doc(request, comm_id)

	if is_admin(request) or user_has_permission(request, 'des:obj', 'del_comm'):
		# добавление подсчета коментариев в отдельном документе
		request.db.doc.update({ "_id": doc['doc']['owner'] }, { "$inc": { "count_branch":-1 } } )
		if 'child' in doc:
			if len(doc['child']):
				request.db.doc.update({"_id":comm_id}, {"$set":{'doc.is_del':'true'}})
				return response_json(request, {"result":"ok", "action":"del_dom", "id":comm_id})
		else:
			del_row(request, 'des:comments', { comm_id:comm_id })
			return response_json(request, {"result":"ok", "id":comm_id})

	else: return response_json(request, {"result":"fail", "error":"error sequrity"})
Ejemplo n.º 21
0
def table_get_row_post(request):
	data = get_post(request)
	row_id = data['row_id']
	proc_id = data['proc_id']
	doc = get_doc(request, row_id)
	if not proc_id: proc_id = doc['doc_type']
	doc_id, updated = create_empty_row_(request, proc_id, False, False, defaults={}, clear_id=True)

	updated = make_updated(request, {}, doc['doc'], doc['doc_type'])
	return response_json(request, {"result":"ok", "updated":updated, "row_id": doc_id })
Ejemplo n.º 22
0
Archivo: tree.py Proyecto: snjypl/tao1
def accept_comm_post(request):
    if not is_admin(request) and not user_has_permission(
            request, 'des:comments', 'edit'):
        return response_json(request, {
            "result": "fail",
            "error": "no has permission"
        })
    data = get_post(request)
    doc_id = data.get('doc_id')
    doc = request.db.doc.find_one({'_id': doc_id})
    doc['doc']['pre'] = 'false'
    request.db.doc.save(doc)
    owner = doc['doc']['doc_id']
    comm_id = str(doc['doc']['comm_id'])
    tree = request.db.tree.find_one({'_id': owner})
    # die(tree['tree'].keys())
    tree['tree'][comm_id]['pre'] = 'false'
    request.db.tree.save(tree)
    return response_json(request, {"result": "ok"})
Ejemplo n.º 23
0
Archivo: tree.py Proyecto: alikzao/tao1
def tree_post(request, proc_id):
	if proc_id.startswith('tree:'):
		if not user_has_permission(request, proc_id[5:], 'view'):
			return response_json(request, {"result": "fail", "error": ct(request, "You have no permission.")})
		return tree_data(request, proc_id, False)
	else:
		data = request.post()
		owner =     data.get('owner', False)
		proc_id2 =  data.get('proc_id', False)
		return tree_data(request, proc_id, owner) if owner else tree_data(request, proc_id2, False)
Ejemplo n.º 24
0
def get_list_branch_post1(request):
	if not user_is_logged_in(request): return user_not_logged()
	proc_id = request.match_info.get('proc_id')
	branch = []
	doc = request.db.tree.find_one({'_id':'tree:'+proc_id})
	tree = doc['tree']
	branch.append({"id":"", "title":"-"})
	for res in tree:
		branch.append({"id":res, "title":ct(request, tree[res]['title'])})
	return response_json(request, {"result":"ok", "list_branch":branch })
Ejemplo n.º 25
0
Archivo: perm.py Proyecto: snjypl/tao1
def group_perm_post2(request, parent):
	""" Рисуем права на поля"""
	data = []; roles = get_roles(request);
	field_perm = ['view', 'edit']
	for perm in field_perm: # назначаем права на поля
		sub_sub_id = parent+'/' + perm; results = []
		for role in roles:
			val = parent in roles[role] and perm in roles[role][parent]
			results.append((role, ins_img(val), val))
		data.append( build_row_report_name(title=perm, results=results, level=2, id=sub_sub_id, parent=parent, child=[] ) )
		return response_json(request, {"result":"ok", "head": report_cons_head([('title', 'Название')]+[(i, i) for i in roles], 'checkbox', 'true'), "data":data, "page":1,"pagectr":1,"pages":"", "debug":""})
Ejemplo n.º 26
0
async def get_list_rb_post(request):
	if not user_is_logged_in(request): return user_not_logged()
	all_view = []
	# type = get_post('type')
	for res in request.db.map.find({'type':'templ'}):
		title = ct(request, res['conf']['title'])
		if 'owner' in res['conf'] and res['conf']['owner'] != '_':
			mt = get_mt(request, res['conf']['owner'])
			if not mt: continue
			title = '%s: %s' % (ct(request, mt['conf']['title']), title)
		all_view.append({'_id':res['_id'], 'title':title })
	return response_json(request,  {"result":"ok", "list_rb":all_view})
Ejemplo n.º 27
0
Archivo: perm.py Proyecto: snjypl/tao1
async def group_perm_uc_post(request):
	""" Установка прав для ролей """
	data = await request.post()
	permission = data.get('id')
	role = data.get('field')
	entity = data.get('branch_id')
	value = data.get('value')
	doc = request.db.doc.find_one({"_id":role}) #get_doc(request, role)
	if not entity in doc['permissions']: doc['permissions'][entity] = {}
	doc['permissions'][entity][permission] = value
	request.db.doc.save(doc)
	# return response_json(request, {"result":"ok", "updated":{role:{"formatted":ins_img(value == 'true').replace('"', '\\"'), "value":value}}} )
	return response_json(request, {"result":"ok", "updated":{"value":value, "formatted":ins_img(value == 'true'), 'field_name': role }} )
Ejemplo n.º 28
0
Archivo: game.py Proyecto: snjypl/tao1
async def check_room(request):
    print('rooms  => ', rooms)
    found = None
    for _id, room in rooms.items():
        if len(room.players) < 3:
            print('players in room < 3:', _id)
            found = _id
            break
    else:
        while not found:
            _id = uuid4().hex[:3]
            if _id not in rooms: found = _id
    return response_json(request, {"result": "ok", "room": found})
Ejemplo n.º 29
0
Archivo: game.py Proyecto: alikzao/tao1
async def check_room(request):
    print ( 'rooms  => ', rooms )
    found = None
    for _id, room in rooms.items():
        if len(room.players) < 3:
            print('players in room < 3:', _id)
            found = _id
            break
    else:
        while not found:
            _id = uuid4().hex[:3]
            if _id not in rooms: found = _id
    return response_json(request, {"result": "ok", "room": found})
Ejemplo n.º 30
0
def transfer_doc(request, proc_id, ids, to):
	proc_id = get_post('proc_id')
	if not user_has_permission(request, proc_id, 'create'):
		return {"result": "fail", "error":"You have no permission."}
	ctr = 0
	dat = get_post(request)
	data = json.loads(dat['ids'])
	for current_id in data:
		doc = get_doc(request, current_id)
		if doc is not None:
			doc['doc_type'] = dat['to']
			request.db.doc.save(doc);	ctr += 1
	return response_json(request, {"result":"ok", "counter":ctr})
Ejemplo n.º 31
0
def duplicate_doc_post(request):
	data = get_post(request)
	doc_id = data['row_id']
	doc = dict(get_doc(request, doc_id))
	doc['_id'] = uuid4().hex
	request.db.doc.save(doc)
	for res in request.db.doc.find({'owner':doc_id}):
		sub_doc = dict(res)
		sub_doc['_id'] = uuid4().hex
		sub_doc['owner'] = doc['_id']
		request.db.doc.save(sub_doc)
	updated = make_updated(request, {}, doc['doc'], doc['doc_type'])
	return response_json(request, {"result":"ok", "row_id":doc['_id'], "updated":updated })
Ejemplo n.º 32
0
Archivo: tree.py Proyecto: alikzao/tao1
def add_vote_comm_post(request):
	"""Вычисляем данные в посте сколько проголосовало и тд."""
	data = request.post()
	vote    = data.get('vote')
	comm_id = data.get('comm_id')
	comm = get_doc(comm_id)

	# doc =  db.tree.find_one({'owner':doc_id})
	user = get_current_user(True)
	from libs.sites.sites import check_time
	# comm = doc['tree'][comm_id]


	if check_time( comm['doc']['date'], 'days', int( get_const_value(request, 'vote_timeout') ) ):
		return response_json(request, {"result":"fail", "error":"Голосование уже закончилось"})
	if not 'vote' in comm : comm['vote'] = {"score":0,"votes_count":0, "votes_count_plus":0,"votes_count_minus":0, "voted":{}}
	if not user_has_permission(request, 'des:obj', 'vote_com'): return response_json(request, {"result":"fail","error":"Не имеете права голоса"})
	if not is_admin(request) and user in comm['vote']['voted'] : return response_json(request, {"result":"fail","error":"Повторное голосование запрещено"})
	if not is_admin(request) and user == 'user:'******'title']): return response_json(request, {"result":"fail","error":"Голосовать за себя запрещено"})

	dt = datetime.today().strftime('%Y-%m-%d')
	user_f = get_doc(request, user)
	if not 'vote' in user_f : user_f['vote'] = {}
	if not dt in user_f['vote'] : user_f['vote'][dt] = {'up': 0, 'down': 0}

	if not is_admin(request) and int(user_f['vote'][dt]['up']) + int(user_f['vote'][dt]['down']) >= int(float(user_f['doc']['rate'])+1.25):
		return response_json(request, {"result":"fail","error":"Лимит голосов за сегодня исчерпан"})

	user_f['vote'][dt][vote] += 1
	request.db.doc.save(user_f)

	comm['vote']['voted'][user] = vote
	if vote == 'up':
		comm['vote']['score'] += 1
		comm['vote']['votes_count_plus'] += 1
	else:
		comm['vote']['score'] -= 1
		comm['vote']['votes_count_minus'] += 1
	comm['vote']['votes_count'] += 1
	request.db.doc.save(comm)
	comm_vote = comm['vote']

	# начисление балов пользователю
	# u_id = 'user:'******'title'])
	u_id = ct(request, comm['doc']['user'] )
	u = get_doc(request, u_id)
	if u:
		if not 'rate' in u['doc']:
			u['doc']['rate'] = '0'
			request.db.doc.save(u)
		if float(u['doc']['rate']) >= 17:
			rate = float(u['doc']['rate']) + (0.02 if vote == 'up' else -0.1)
		else: rate = float(u['doc']['rate']) + (0.2 if vote == 'up' else -0.1)
		#	rate =+ 1 if vote == 'up' else -1
		update_cell(request, str(u_id), 'des:users', 'rate', str(rate) )

	return response_json(request, {"result":"ok", "score":comm_vote["score"],"votes_count":comm_vote["score"],"charge_string":"","sign":"positive",
	        "votes_count_plus":comm_vote["votes_count_plus"],"votes_count_minus":comm_vote["votes_count_minus"],"is_positive":True})
Ejemplo n.º 33
0
def table_sort_columns_post(request):
	data = get_post(request)
	proc_id = data['proc_id']
	order = json.loads(data['order'])
	doc = request.db.map.find_one({'_id':proc_id})
	fields = {}
	for res in doc['doc']:
		fields[res['id']] = res

	doc['doc'] = []
	for res in order:
		doc['doc'].append(fields[res])
	request.db.map.save(doc)
	return response_json(request, {"result":"ok"})
Ejemplo n.º 34
0
Archivo: tree.py Proyecto: alikzao/tao1
def ban_comm_post(request):
	if not is_admin(request): return response_json(request, {"result":"fail", "error":"no ban"})
	if not user_is_logged_in(request): return response_json(request, {"result":"fail", "error":"no comment"})
	data = request.post()
	proc_id = data.get('proc_id')
	id_comm = data.get('branch_id')
	doc = request.db.doc.find_one({'_id':id_comm})

	doc = doc['doc']
	ip = doc['ip'] if 'ip' in doc else ''
	# try:
	lst = [x.strip() for x in get_const_value(request, 'ban_comm', '').split(',')]
	# die([lst, ip, branch])
	if not ip in lst:
		lst.append(ip)
	set_const_value(request, 'ban_comm', ','.join(lst))

	user_name = ct(request, doc['user'])
	user = get_doc(request, 'user:'******'doc']['ban'] = 'true'
		request.db.doc.save(user)
	return response_json(request, {"result":"ok", "user":user_name})
Ejemplo n.º 35
0
    def check_room(request):
        # Если мы не шардим и у нас всё в один процесс - нам файлы даром не упали, у нас все комнаты уже в памяти
        found = 0
        for _id, room in rooms.items():
            found = max(_id, found)
            if len(room.players) < 3:
                print('players in room < 3:', _id)
                found = _id
                break
        else:
            found += 1

        print('rroomm', found)
        return response_json(request, {"result": "ok", "room": found})
Ejemplo n.º 36
0
Archivo: perm.py Proyecto: snjypl/tao1
async def users_group_uc_post(request):
	""" Установка членства пользователей """
	data = await request.post()
	user = data.get('id')
	role = data.get('field')
	value = data.get('value')
	doc = request.db.doc.find_one({"_id": role})
	if value == 'true': 
		if not user in doc['users']: doc['users'][user] = 'true'
	else: 
		if user in doc['users']: del doc['users'][user]
	request.db.doc.save(doc)
	exm = {'value': "true", 'formatted': "<span style='color:green; font-size:16px'><i class='fa fa-check'></i></span>", 'field_name': "last_art"}

	return response_json(request, {"result":"ok", "updated":{"value":value, "formatted":ins_img(value == 'true'), 'field_name': role }} )
Ejemplo n.º 37
0
Archivo: tree.py Proyecto: snjypl/tao1
def tree_post(request, proc_id):
    if proc_id.startswith('tree:'):
        if not user_has_permission(request, proc_id[5:], 'view'):
            return response_json(
                request, {
                    "result": "fail",
                    "error": ct(request, "You have no permission.")
                })
        return tree_data(request, proc_id, False)
    else:
        data = request.post()
        owner = data.get('owner', False)
        proc_id2 = data.get('proc_id', False)
        return tree_data(request, proc_id, owner) if owner else tree_data(
            request, proc_id2, False)
Ejemplo n.º 38
0
Archivo: perm.py Proyecto: snjypl/tao1
async def users_group_post(request):
	""" Отображает список прав ролей для таблицы установки прав"""
	if not user_is_logged_in(request): return {"result": "fail", "error": "The session ended Login", "need_action":"login"}
	data = await request.post()
	filter = json.loads(data['filter'])
	data=[]
	roles = get_perm(request)
	condition = {'doc_type':'des:users'}

	if 'title' in filter['column'] and filter['column']['title']:
		regex = re.compile( str(filter['column']['title']['val']), re.I | re.UNICODE)
		condition['doc.name.'+cur_lang(request)] = regex

#	pages, req = get_pagination2(condition)

	count = 0
	for list_users in request.db.doc.find(condition):
		results = []
		skip = False
		for role in roles:
			val = list_users['_id'] in roles[role]
			if role in filter['column'] and filter['column'][role]:
				if filter['column'][role]['val'] == 't' and not val or filter['column'][role]['val'] == 'f' and val:
					skip = True
					continue
			results.append((role, ins_img(val), val))
		if skip: continue
		count += 1
		user_name = ct(request, list_users['doc']['name']) if 'name' in list_users['doc'] else 'no name'
		data.append( build_row_report_name(title=user_name, results=results, level=0, id=list_users['_id'], parent='_', child=[] ) )

	# cur_page = int(request.GET['page']) if 'page' in request.GET else 1
	cur_page = int(filter['page']['current']) if 'page' in filter else 1
	limit = int(get_const_value(request, 'doc_page_limit'))

	count = int(ceil(count/limit))

	data = data[(cur_page - 1) * limit : cur_page * limit]
	pages = {'count': count, 'current':cur_page, 'next': 0, 'prev':0}
	head = report_cons_head([('title', 'Пользователи')]+[(i, i) for i in roles], 'checkbox', 'true')

	# print( {"result":"ok", "head":head, "data":json.dumps( data ), "pages":json.dumps( pages)} )
	# print('data->', data)
	# return response_json(request, {"result":"ok", "head":head, "data":json.dumps( data ), "pages":json.dumps( pages)})
	print('heqd->', head)
	return response_json(request, {"result":"ok", "head":head, "data":data, "pages":pages })
Ejemplo n.º 39
0
async def table_data_post(request):
	""" #page=текущая страница page ctr=кол-во pages=отрисованые ссылки на страницу навигация """
	data = get_post(request)
	proc_id = data['proc_id']
	if not user_has_permission(request, proc_id, 'view'):  return {"result": "fail", "error": "You have no permission." }
	filtered = json.loads(data['filter'])
	doc_id = data['doc_id'] if 'doc_id' in data else '_'
	parent = data['parent'] if 'parent' in data else '_'
	id_next = None; id_prev = None
	if 'page' in filtered: page = filtered['page']
	else: page = {'current':1}
	limit = int(get_const_value(request, 'doc_page_limit'))
	bdata, docs_table_count = table_data_post_(request, proc_id, filtered, doc_id, parent)
	otvet = {"result":"ok", "data":bdata,
	         "pages":{"count":int(ceil(float(docs_table_count)/limit)),
			 "current":page['current'], "next": id_next, "prev":id_prev} }
	return response_json(request, otvet)
Ejemplo n.º 40
0
async def table_update_row_post(request):
	proc_id = request.match_info.get('proc_id')
	force = request.match_info.get('force', False)
	if not force and not user_has_permission(request, proc_id, 'create'):
		return {"result": "fail", "error": "You have no permission."}
	data = get_post(request)
	row_id = data['row_id']
	# print('parent', data['parent'])


	parent = data['parent'] if  'parent' in data else '_'
	data = json.loads(data['data'])
	print( 'data', data )
	if 'rev' in data:
		del data['rev']

	return response_json(request, update_row_(request, proc_id, row_id, data, parent = parent) )
Ejemplo n.º 41
0
def del_row(request, proc_id, ids):
	""" Удаление документа
		1) Идем по всем полученым для удаления ids
		2) Делаем какието операции с бугалтерией
		3) Удаляем картинки приатаченый к этому документу
		4) Удаляем сам документ
		5) Выполняем тригер в песочнице связаный с удалением этого документа
		============================================================================
		6) Удаляем себя у всех потомков
		7) Удаляем себя у всех родителей
		8) Очищаем если у документа есть родитель родителя
		9) удаляем теги которые есть в документе из облака тегов
	"""
	ctr = 0; errors = ''
	for current_id in ids:
		doc = get_doc(request, current_id)
		if not doc: return {"result": "fail", "error": 'doc not found'}
		proc_id = doc['doc_type']

		parent = doc['parent'] if 'parent' in doc else '_'
		children = doc['child'] if 'child' in doc else '_'
		old_row = doc['doc']
		from libs.files.files import del_all_files
		del_all_files(request, doc['_id'], proc_id)
		request.db.doc.remove({'_id': doc['_id']})
		try:
			res, err = event('on_del_row', proc_id, {'old_row':old_row, "doc": doc}) # TODO обработать err
			if res != 'ok': errors+=err
		except:pass
		ctr += 1
		request.db.doc.remove({"owner":doc['_id']})
		# request.db.tree.remove({"owner":doc['_id']})
		if children != '_':
			request.db.doc.update_many({'parent':doc['_id']}, {'$set':{'parent':'_'} })
		if parent != '_':
			request.db.doc.update({'child':{'$in':[doc['_id']]}}, {'$pull':{'child':doc['_id']}})
		if not ': ' in proc_id:
			del_doc_tags(request, proc_id, doc)
	if errors:  return {"result": "fail", "error":errors}
	return response_json(request, {"result":"ok", "counter":ctr})
Ejemplo n.º 42
0
Archivo: tree.py Proyecto: snjypl/tao1
def add_vote_comm_post(request):
    """Вычисляем данные в посте сколько проголосовало и тд."""
    data = request.post()
    vote = data.get('vote')
    comm_id = data.get('comm_id')
    comm = get_doc(comm_id)

    # doc =  db.tree.find_one({'owner':doc_id})
    user = get_current_user(True)
    from libs.sites.sites import check_time
    # comm = doc['tree'][comm_id]

    if check_time(comm['doc']['date'], 'days',
                  int(get_const_value(request, 'vote_timeout'))):
        return response_json(request, {
            "result": "fail",
            "error": "Голосование уже закончилось"
        })
    if not 'vote' in comm:
        comm['vote'] = {
            "score": 0,
            "votes_count": 0,
            "votes_count_plus": 0,
            "votes_count_minus": 0,
            "voted": {}
        }
    if not user_has_permission(request, 'des:obj', 'vote_com'):
        return response_json(request, {
            "result": "fail",
            "error": "Не имеете права голоса"
        })
    if not is_admin(request) and user in comm['vote']['voted']:
        return response_json(request, {
            "result": "fail",
            "error": "Повторное голосование запрещено"
        })
    if not is_admin(request) and user == 'user:'******'title']):
        return response_json(request, {
            "result": "fail",
            "error": "Голосовать за себя запрещено"
        })

    dt = datetime.today().strftime('%Y-%m-%d')
    user_f = get_doc(request, user)
    if not 'vote' in user_f: user_f['vote'] = {}
    if not dt in user_f['vote']: user_f['vote'][dt] = {'up': 0, 'down': 0}

    if not is_admin(request) and int(user_f['vote'][dt]['up']) + int(
            user_f['vote'][dt]['down']) >= int(
                float(user_f['doc']['rate']) + 1.25):
        return response_json(request, {
            "result": "fail",
            "error": "Лимит голосов за сегодня исчерпан"
        })

    user_f['vote'][dt][vote] += 1
    request.db.doc.save(user_f)

    comm['vote']['voted'][user] = vote
    if vote == 'up':
        comm['vote']['score'] += 1
        comm['vote']['votes_count_plus'] += 1
    else:
        comm['vote']['score'] -= 1
        comm['vote']['votes_count_minus'] += 1
    comm['vote']['votes_count'] += 1
    request.db.doc.save(comm)
    comm_vote = comm['vote']

    # начисление балов пользователю
    # u_id = 'user:'******'title'])
    u_id = ct(request, comm['doc']['user'])
    u = get_doc(request, u_id)
    if u:
        if not 'rate' in u['doc']:
            u['doc']['rate'] = '0'
            request.db.doc.save(u)
        if float(u['doc']['rate']) >= 17:
            rate = float(u['doc']['rate']) + (0.02 if vote == 'up' else -0.1)
        else:
            rate = float(u['doc']['rate']) + (0.2 if vote == 'up' else -0.1)
        #	rate =+ 1 if vote == 'up' else -1
        update_cell(request, str(u_id), 'des:users', 'rate', str(rate))

    return response_json(
        request, {
            "result": "ok",
            "score": comm_vote["score"],
            "votes_count": comm_vote["score"],
            "charge_string": "",
            "sign": "positive",
            "votes_count_plus": comm_vote["votes_count_plus"],
            "votes_count_minus": comm_vote["votes_count_minus"],
            "is_positive": True
        })
Ejemplo n.º 43
0
Archivo: tree.py Proyecto: snjypl/tao1
async def add_comm_post(request):
    #	return json.dumps(current_id, title, link, proc_id)
    """current_id это id ветки"""
    # ip = request.environ.get('REMOTE_ADDR')
    data = await request.post()
    ip = None
    print('data->', data)
    #get ip address client
    peername = request.transport.get_extra_info('peername')
    host = None
    if peername is not None:
        host, port = peername
        ip = host
        # print ('host, port->', host, port)

    user = get_current_user(request, True)
    if check_ban(request, host, user):
        return response_json(
            request, {
                "result":
                "fail",
                "error":
                "Ваш ip или аккаунт забанен на этом сайте, свяжитесь с администрацией"
            })
    else:
        title = data.get('title')

    if not user_has_permission(request, 'des:obj',
                               'add_com') and not user_has_permission(
                                   request, 'des:obj', 'add_com_pre'):
        return response_json(request, {
            "result": "fail",
            "error": "no comment"
        })
    if not check_user_rate(request, user):
        return response_json(
            request, {
                "result":
                "fail",
                "error":
                "Вы не можете оставлять сообщения слишком часто, из-за отрицательной кармы"
            })

    doc_id = data.get('comm_id')
    id = data.get('id')
    if user_is_logged_in(request): title = get_current_user(request)
    # tle = get_doc(request, doc_id )
    # print( doc_id )
    # print( tle )
    # tle = get_doc(request, doc_id )['doc']['title']

    title_ = ct(request, title)
    title = no_script(title) if title else 'Аноним'
    parent = data.get('parent', "_")
    descr = data.get('descr')
    descr = no_script(descr)
    descr = descr.replace('\n', '<br/>')

    # ретурн если нет и того и другого    а если нет только одного то как раз проверим
    pre = 'true' if not user_has_permission(request, 'des:obj',
                                            'add_com') else 'false'
    date = str(time.strftime("%Y-%m-%d %H:%M:%S"))
    user_ = get_current_user_name(request, title) or title
    our = "true" if user_is_logged_in(request) else "false"
    body = re.sub(
        r'(http?://([a-z0-9-]+([.][a-z0-9-]+)+)+(/([0-9a-z._%?#]+)+)*/?)',
        r'<a href="\1">\1</a>', descr)

    # добавление родителю ребенка
    request.db.doc.update({"_id": parent}, {"$addToSet": {"child": doc_id}})

    # занесение коментов в справочник коментов
    doc_id_comm, updated = create_empty_row_(request, 'des:comments', parent,
                                             '', {"user": '******' + title})
    data = {
        "id": doc_id_comm,
        "title": title_,
        "date": date,
        "body": body,
        "parent": parent,
        "owner": id,
        'ip': ip,
        'name': user_,
        "our": our,
        'pre': pre
    }
    update_row_(request, 'des:comments', doc_id_comm, data, parent)

    if 'notify_user' in dir(settings) and settings.notify_user:
        # if 'notify_user' in settings and settings.notify_user:
        # link = make_link('show_object', {'doc_id':doc_id }, True)+'#comm_'+ str( id )
        link = settings.domain + '/news/' + doc_id + '#comm_' + str(id)
        subject = 'User {} add comment'.format(title)
        sub('user:'******'id1', id)
    id = get_doc(request, id)['_id']
    print('id2', id)
    invalidate_cache('single_page', id=id)
    # rev = get_doc(request, doc_id)['doc']['rev']
    # reset_cache(type="doc", doc_id=rev)
    # добавление подсчета коментариев в отдельном документе
    request.db.doc.update({"_id": doc_id}, {"$inc": {"count_branch": 1}})
    # return json.dumps({"result":"ok", "content":data.update({"title":title}), "hash":""})
    return response_json(request, {
        "result": "ok",
        "content": data,
        "hash": ""
    })
Ejemplo n.º 44
0
def table_preedit_row_post(request):
	data = get_post(request)
	doc = get_doc(request, data['doc_id'])
	return response_json(request, {"result":"ok", "doc":{
		'title': ct(request, doc['doc']['title']), 'body': ct(request, doc['doc']['body']), 'date': doc['doc']['date']}} )