コード例 #1
0
    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)
コード例 #2
0
    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))
コード例 #3
0
	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=(',',':') ))
コード例 #4
0
 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)