def post(self): if self.ensure_is_logged_in() and self.ensure_has_display_name(): self.check_CSRF() user_id = self.user_id friend_id_invite = self.request.get('invite') friend_id_remove = self.request.get('remove') friend_name_search = self.request.get('search').strip()[:( EnkiModelDisplayName.DISPLAY_NAME_LENGTH_MAX + 4)] # 4 allows for some leading and trailing characters already_friends = '' has_friends = EnkiModelFriends.exist_by_user_id(user_id) error_message = '' result = '' if friend_id_invite: # send invitation to user to become friend outcome = EnkiModelFriends.send_friend_request( user_id, int(friend_id_invite)) if outcome == EnkiModelFriends.INFO_FRIENDS: self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_ADDED( EnkiModelDisplayName.get_display_name( int(friend_id_invite)))) elif outcome == enki.libutil.ENKILIB_OK: self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_INVITATION_SENT( EnkiModelDisplayName.get_display_name( int(friend_id_invite)))) elif friend_id_remove: # unfriend EnkiModelFriends.remove_friend(user_id, int(friend_id_remove)) has_friends = EnkiModelFriends.exist_by_user_id(user_id) self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_REMOVED( EnkiModelDisplayName.get_display_name( int(friend_id_remove)))) elif friend_name_search: # search for user to invite users_ids_to_ignore = [user_id] if has_friends: users_ids_to_ignore += EnkiModelFriends.get_friends_user_id( user_id) result = EnkiModelDisplayName.find_users_by_display_name( friend_name_search, users_ids_to_ignore) if result.error == EnkiModelDisplayName.ERROR_DISPLAY_NAME_INVALID: error_message = MSG.DISPLAY_NAME_INVALID() elif result.error == EnkiModelDisplayName.ERROR_DISPLAY_NAME_NOT_EXIST: error_message = MSG.DISPLAY_NAME_NOT_EXIST() else: error_message = MSG.DISPLAY_NAME_NEEDED() if has_friends: already_friends = EnkiModelFriends.get_friends_user_id_display_name_url( user_id) self.render_tmpl('friends.html', data=already_friends, error=error_message, result=result, friend_name=friend_name_search)
def post(self): if self.ensure_is_logged_in() and self.ensure_has_display_name(): self.check_CSRF() user_id = self.user_id message_accept = self.request.get('accept') message_decline = self.request.get('decline') if message_accept: sender_id = EnkiModelMessage.get_by_id( int(message_accept)).sender if sender_id: EnkiModelFriends.add_friend(user_id, sender_id) self.add_infomessage( MSG.SUCCESS(), MSG.FRIEND_ADDED( EnkiModelDisplayName.get_display_name(sender_id))) elif message_decline: sender_id = EnkiModelMessage.get_by_id( int(message_decline)).sender if sender_id: EnkiModelMessage.remove_messages_crossed( user_id, sender_id) self.render_tmpl('messages.html', data=EnkiModelMessage.get_messages(self.user_id))
def post( self ): jsonobject = json.loads( self.request.body ) success = False error = 'Invalid request' answer = {} if jsonobject: user_id = int( jsonobject.get( 'user_id', '')) auth_token = jsonobject.get( 'auth_token', '') app_secret = jsonobject.get( 'app_secret', '') if user_id and auth_token and app_secret: if EnkiModelApp.check_secret( user_id, auth_token, app_secret ): if EnkiModelRestAPITokenVerify.exist_by_user_id_token( user_id, auth_token ): user_displayname = EnkiModelDisplayName.get_display_name( user_id ) if user_displayname: answer.update({ 'user_displayname' : user_displayname }) success = True error = '' else: error = 'Not found' else: error = 'Unauthorised user' else: error = 'Unauthorised app' answer.update({ 'success' : success, 'error' : error }) self.response.headers[ 'Content-Type' ] = 'application/json' self.response.write( json.dumps( answer, separators=(',',':') ))
def render_tmpl(self, template_file, CSRFneeded=True, **kwargs): # render an html template with data using jinja2 try: navbar_items = enki.ExtensionLibrary.get_navbar_items() navbar_extensions = enki.ExtensionLibrary.get_navbar_extensions( self) page_extensions = enki.ExtensionLibrary.get_page_extensions(self) user_is_logged_in = self.is_logged_in() display_name = EnkiModelDisplayName.get_display_name( self.user_id) if user_is_logged_in else '' CSRFtoken = '' if CSRFneeded or user_is_logged_in: # when user is logged in we always need CSRF for stay logged in navbar CSRFtoken = self.create_CSRF(self.request.path) self.response.write( self.jinja2.render_template( template_file, request_url=self.request.url, CSRFtoken=CSRFtoken, is_logged_in=self.is_logged_in(), navbar_items=navbar_items, page_extensions=page_extensions, navbar_extensions=navbar_extensions, display_name=display_name, locale=i18n.get_i18n().locale, debug=self.session.pop('debugmessage', None) if enki.libutil.is_debug else None, infomessage=self.session.pop('infomessage', None), deleted_post=EnkiModelPost.POST_DELETED, deleted_post_display=MSG.POST_DELETED_DISPLAY(), deleted_dn=EnkiModelDisplayName.DELETED_PREFIX + EnkiModelDisplayName.DELETED_SUFFIX, deleted_dn_display=MSG.DISPLAY_NAME_DELETED_DISPLAY(), stay_logged_in=self._stay_logged_in, **kwargs)) except TemplateNotFound: self.abort(404)