Example #1
0
def get_post_data(post_selected):
    # get a post
    forums_url = enki.libutil.get_local_url('forums')
    post = EnkiModelPost.get_by_id(int(post_selected))
    post_page = enki.libutil.get_local_url('post',
                                           {'post': str(post.key.id())})
    thread = EnkiModelThread.get_by_id(post.thread)
    thread_url = enki.libutil.get_local_url('thread',
                                            {'thread': str(thread.key.id())})
    forum = EnkiModelForum.get_by_id(thread.forum)
    forum_url = enki.libutil.get_local_url('forum',
                                           {'forum': str(forum.key.id())})
    author_data = enki.libdisplayname.get_user_id_display_name_url(
        enki.libdisplayname.get_EnkiUserDisplayName_by_user_id_current(
            post.author))
    post_data = postData(
        forums_url,
        forum,
        forum_url,
        thread,
        thread_url,
        post,
        post_page,
        author_data,
        markdown2.markdown,
    )
    return post_data
Example #2
0
	def get( self, post ):
		data = ''
		not_found = ''
		is_author = False
		post_body = ''
		self.session[ 'sessionrefpath' ] = self.request.referrer
		if post.isdigit() and EnkiModelPost.get_by_id( int( post ) ):
			data = EnkiModelPost.get_post_data( post )
			if data:
				is_author = True if self.user_id == data.author_data.user_id else False
				post_body = '' if data.post.body == EnkiModelPost.POST_DELETED else data.post.body
		else:
			not_found = MSG.POST_NOT_EXIST( )
		change = self.request.get( 'change' )
		CSRFneeded = True
		if change != 'edit' and change != 'delete':
			CSRFneeded = False
		self.render_tmpl( 'post.html', CSRFneeded,
		                  active_menu = 'forums',
		                  data = data,
		                  not_found = not_found,
		                  change = change,
		                  isauthor = is_author,
						  has_permission_sticky = self.has_permissions( self.enki_user, [ 'PFPS' ]),
		                  postbody = post_body,
		                  maxpostlength = EnkiModelPost.POST_LENGTH_MAX )
Example #3
0
def delete_post( user_id, post_id ):
	thread = ''
	result = enki.libutil.ENKILIB_OK
	if user_id and post_id:
		post = EnkiModelPost.get_by_id( int( post_id ))
		if post:
			post.body = POST_DELETED
			thread = str( post.thread )
		post.put()
	else:
		result = ERROR_POST_DELETION
	return result, thread
Example #4
0
def	get_post_data ( post_selected ):
	# get a post
	forums_url = enki.libutil.get_local_url( 'forums' )
	post = EnkiModelPost.get_by_id( int( post_selected ))
	post_page =  enki.libutil.get_local_url( 'post', { 'post': str( post.key.id( ) ) } )
	thread = EnkiModelThread.get_by_id( post.thread )
	thread_url = enki.libutil.get_local_url( 'thread', { 'thread': str( thread.key.id( ) ) } )
	forum = EnkiModelForum.get_by_id( thread.forum )
	forum_url = enki.libutil.get_local_url( 'forum', { 'forum': str( forum.key.id( ) ) } )
	author_data = enki.libdisplayname.get_user_id_display_name_url( enki.libdisplayname.get_EnkiUserDisplayName_by_user_id_current( post.author ) )
	post_data = postData( forums_url, forum, forum_url, thread, thread_url, post, post_page, author_data, markdown2.markdown, )
	return post_data
Example #5
0
def delete_post(user_id, post_id):
    thread = ''
    result = enki.libutil.ENKILIB_OK
    if user_id and post_id:
        post = EnkiModelPost.get_by_id(int(post_id))
        if post:
            post.body = POST_DELETED
            thread = str(post.thread)
        post.put()
    else:
        result = ERROR_POST_DELETION
    return result, thread
Example #6
0
def edit_post( user_id, post_id, post_body ):
	thread = ''
	result = enki.libutil.ENKILIB_OK
	if user_id and post_id and post_body:
		if len( post_body ) <= POST_LENGTH_MAX:
			post = EnkiModelPost.get_by_id( int( post_id ))
			if post:
				post.body = post_body
				thread = str( post.thread )
			post.put()
		else:
			result = ERROR_POST_LENGTH
	else:
		result = ERROR_POST_EDITION
	return result, thread
Example #7
0
def edit_post(user_id, post_id, post_body):
    thread = ''
    result = enki.libutil.ENKILIB_OK
    if user_id and post_id and post_body:
        if len(post_body) <= POST_LENGTH_MAX:
            post = EnkiModelPost.get_by_id(int(post_id))
            if post:
                post.body = post_body
                thread = str(post.thread)
            post.put()
        else:
            result = ERROR_POST_LENGTH
    else:
        result = ERROR_POST_EDITION
    return result, thread
Example #8
0
	def post( self, post ):
		if self.ensure_is_logged_in() and self.ensure_has_display_name():
			if post.isdigit() and EnkiModelPost.get_by_id( int( post )):

				data = EnkiModelPost.get_post_data( post )
				is_author = True if self.user_id == data.author_data.user_id else False
				user = self.user_id
				post_body = self.request.get( 'post_body' )
				submit_type = self.request.get( 'submittype' )
				change = self.request.get( 'change' )
				error_message = ''
				preview = ''

				if submit_type == 'delete':
					self.check_CSRF()
					result = EnkiModelPost.delete_post( user, post )
					if result[ 0 ] == enki.libutil.ENKILIB_OK:
						self.add_infomessage( MSG.SUCCESS( ), MSG.POST_DELETED())
						url = enki.libutil.get_local_url( 'thread', { 'thread' : result[ 1 ]})
						self.send_email_admin( 'FPD', url )
						self.redirect( url ) # redirect to parent thread
						return
					else:
						error_message = MSG.FAIL_POST_DELETION()

				elif submit_type == 'cancel':
					self.redirect( data.post_page )
					return
				else:
					if not post_body:
						error_message = MSG.POST_BODY_NEEDED()
					else:
						exceed = len( post_body ) - EnkiModelPost.POST_LENGTH_MAX
						if exceed > 0:
							error_message = MSG.POST_BODY_TOO_LONG( exceed )

				if not error_message:
					post_sticky_order = xint( self.request.get( 'sticky_order' ))
					if submit_type == 'submit':
						self.check_CSRF()
						result = EnkiModelPost.edit_post( user, post, post_body, post_sticky_order )
						if result[ 0 ] == enki.libutil.ENKILIB_OK:
							self.add_infomessage( MSG.SUCCESS( ), MSG.POST_MODIFIED())
							url = enki.libutil.get_local_url( 'thread', { 'thread' : result[ 1 ]})
							self.send_email_admin( 'FPE', url )
							self.redirect( url ) # redirect to parent thread
							return
						else:
							error_message = MSG.FAIL_POST_MODIFICATION()
					elif submit_type == 'preview':
						preview = post_body

				self.render_tmpl( 'post.html',
				                  active_menu = 'forums',
				                  data = data,
				                  change = change,
				                  isauthor = is_author,
								  has_permission_sticky = self.has_permissions( self.enki_user, [ 'PFPS' ]),
				                  error = error_message,
				                  postbody = post_body,
				                  maxpostlength = EnkiModelPost.POST_LENGTH_MAX,
				                  preview = preview )