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 )
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 )