Example #1
0
def add_mess(request):
	#TODO тут проверка что нужный пользователь залогинен
	db = request.db
	mess = get_post('mess')
	user = get_post('user')
	limit = get_const_value('limit_char', '200')
	mess = mess.decode('UTF-8')
	mess = mess[:int(limit)]

	doc_id, updated = create_empty_row_('des:obj', '_', True, {"user":user, 'date':time.strftime("%Y-%m-%d %H:%M:%S")})
	update_row_('des:obj', doc_id, {'body':mess, 'title':'', 'pub':'true', 'accept':'true'}, '_', no_synh=True,  accept_def = True)

	user = db.doc.find_one({'_id':user})
	user_name = user['doc']['name'][cur_lang()]

	text = u"""<html><head></head><body>
	       <p>Пользователь {0} написал новое <a href="{1}"><b>соощение</b></a>.</p>
	       <p>Прокоментировать и оценить его вы можете <a href="{1}"><b>тут</b></a>.</p>
	       <p>Отписатся от рассылки вы можете перейдя по адресу ...</p></body></html>""".format( user_name, 'http://site.dev/news/'+doc_id )

	if 'friends' in user:
		for res in user['friends']:
			mail = db.doc.find_one({'_id':res}, {'doc.mail':1} )
			route_mail( mail['doc']['mail'], u'Пользователь '+user_name+u' написал новое сообщение, вы на него подписаны.', text)
	if 'followers' in user:
		for res in user['followers']:
			mail = db.doc.find_one({'_id':res}, {'doc.mail':1} )
			route_mail( mail['doc']['mail'], u'Пользователь '+user_name+u' написал новое сообщение, он у вас в друзьях.', text)
	return {"result":"ok", 'mess':mess, 'doc_id':doc_id}
Example #2
0
def subscribe_new(request):
	db = request.db
	mail = get_post('mail')
	if db.doc.find_one({'doc_type':'des:subscr', 'doc.mail':mail}):
		return '{"result":"ok", "mess":"Уже подписан"}'
	ip = request.environ.get('REMOTE_ADDR')
	user_agent = request.environ.get('HTTP_USER_AGENT')
	code_sub_in = uuid4().hex
	code_sub_out = uuid4().hex
	doc_id, updated= create_empty_row_('des:subscr', None, False, {})
	update_row_('des:subscr', doc_id, {"mail":mail, "ip":ip, 'user_agent':str(user_agent), 'confirmed': 'false', 'code_sub_in':code_sub_in, 'code_sub_out':code_sub_out}, '_')
	dom = get_settings('domain')
	link_confirm = 'http://'+dom+'/subscribe/in/'+mail+'/'+code_sub_in
	route_mail(mail, 'Подтверждение подписки '+dom, link_confirm)
	return {"result":"ok"}
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": ""
    })