Example #1
0
File: tree.py Project: 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"
        })
Example #2
0
File: tree.py Project: 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"})
Example #3
0
File: tree.py Project: alikzao/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":""})
Example #4
0
File: tree.py Project: 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": ""
    })