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}
def add_order(request, data): db = request.db proc_id = 'des:order'; table_id = 'ware' sub_data = basket_show() doc_id = create_empty_row_(proc_id, data) doc = get_doc(doc_id) for i in sub_data: new_id = doc['seq_id'] doc["seq_id"] = new_id+1 new_id = str(new_id) doc['tables'][table_id][new_id] = sub_data[i] db.doc.save(doc) return {"result":"ok"}
def add_order(request, data): db = request.db proc_id = 'des:order' table_id = 'ware' sub_data = basket_show() doc_id = create_empty_row_(proc_id, data) doc = get_doc(doc_id) for i in sub_data: new_id = doc['seq_id'] doc["seq_id"] = new_id + 1 new_id = str(new_id) doc['tables'][table_id][new_id] = sub_data[i] db.doc.save(doc) return {"result": "ok"}
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"}
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":""})
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": "" })