def render_GET(self, request): dinamic_rouds_dict = { b"/": MojSajt.home, b"/get_posts": MojSajt.get_posts, b"/post_added": MojSajt.render_POST, b"/view_post": MojSajt.view_post } static_rouds_dict = { b"/new_post": ('templates/new_post.html', "text/html"), } if request.path in static_rouds_dict: try: request.setHeader("Content-Type", static_rouds_dict[request.path][1]) with open(static_rouds_dict[request.path][0], 'r') as file: template_content = file.read() return Post.read_base_template(template_content) except MySQLError as err: template, data = InputError.raise_error(str(err)) template_content = render(template, data) return Post.read_base_template(template_content) elif request.path in dinamic_rouds_dict: return dinamic_rouds_dict[request.path](request) template, data = InputError.raise_error('Unknown rout') template_content = render(template, data) return Post.read_base_template(template_content)
def post_added(): try: new_post = PostCreate.read_post(request) Storage.add_post(new_post) return render_template('post_added.html', title=new_post.title, post=new_post.post) except InputError as err: return InputError.raise_error(str(err)) except Exception as err: return InputError.raise_error(str(err))
def get_posts_from_to(request, page, page_size): if page < 1 or page_size < 1: template, data = InputError.raise_error( 'Page must be positive nuber') template_content = render(template, data) return Post.read_base_template(template_content) page_previous_num = page - 1 link_next_template = '<a href="/get_posts?page={}&page_size={}"> Next </a>' link_next = link_next_template.format(str(page + 1), str(page_size)) link_prev_template = '<a href="/get_posts?page={}&page_size={}"> Previous </a>' link_previous = link_prev_template.format(str(page_previous_num), str(page_size)) post_len = Storage.post_len() if page * page_size >= post_len: link_next = '' if page == 1: link_previous = '' all_posts = Storage.select_posts((page - 1) * page_size, page_size) if not all_posts: template, data = InputError.raise_error('No more posts to show') template_content = render(template, data) return Post.read_base_template(template_content) all_posts_list = [] for post in all_posts: post_dict = { 'title': post[0], 'post': post[3], 'date': str(post[1]), 'id': str(post[2]) } all_posts_list.append(post_dict) data_small = { 'posts': all_posts_list, 'next': link_next, 'previous': link_previous } with open('templates/home.html', 'r') as file: template_small = file.read() template_content = render(template_small, data_small) return Post.read_base_template(template_content)
def user_added(): try: new_user = UserCreate.read_user(request) Storage.add_user(new_user) except InputError as err: return InputError.raise_error(str(err)) except MySQLError as err: return InputError.raise_error(str(err)) except Exception as err: return InputError.raise_error(str(err)) return render_template('post_added.html', title='Welcome! you have signed up successfully. ', post=new_user.username)
def get_posts(): try: page = request.args.get("page") page_size = request.args.get("page_size") except Exception: return InputError.raise_error( "Something get wrong whit:'page' or 'page_size'") if not page or not page_size: return InputError.raise_error("Check:'page' and 'page_size'") if not page.isnumeric() or not page_size.isnumeric(): return InputError.raise_error( 'Page and page_size must be positive numbers') return get_posts_from_to(int(page), int(page_size))
def get_posts_from_to(page, page_size): li_home = Markup('<li class="nav-item" >') li_new_post = Markup('<li class="nav-item " >') if page < 1 or page_size < 1: return InputError.raise_error('Page must be positive nuber') link_next_template = Markup( '<a class="page-link" href="/get_posts?page={}&page_size={}"> Next </a>' ) link_next = link_next_template.format(str(page + 1), str(page_size)) link_prev_template = Markup( '<a class="page-link" href="/get_posts?page={}&page_size={}"> Previous </a>' ) link_previous = link_prev_template.format(str(page - 1), str(page_size)) post_len = Storage.post_len() if page * page_size >= post_len: link_next = '' if page == 1: link_previous = '' li_home = Markup('<li class="nav-item active" >') posts_from_to = Storage.select_posts((page - 1) * page_size, page_size) # ovde pravim listu objekata, da bi posle mogao lepo da prikazem u for petlji posts = [] for post in posts_from_to: if not post[4]: image = '' else: image = redirect(url_for('slika', ime_slike=post[2])) posts.append(Post(post[0], post[1], post[2], post[3], image)) if not posts_from_to: return InputError.raise_error('No more posts to show') return render_template('home.html', li_home=li_home, li_new_post=li_new_post, posts=posts, next=link_next, previous=link_previous)
def get_posts(request): try: page = request.args[b"page"][0].decode('UTF-8') page_size = request.args[b"page_size"][0].decode('UTF-8') except Exception: template, data = InputError.raise_error( "Check:'page' and 'page_size'") template_content = render(template, data) return Post.read_base_template(template_content) if not page.isnumeric() or not page_size.isnumeric(): template, data = InputError.raise_error( 'Page and page_size must be positive numbers') template_content = render(template, data) return Post.read_base_template(template_content) return MojSajt.get_posts_from_to(request, int(page), int(page_size))
def view_post(): try: post_id = request.args.get("post_id") post = Storage.select_post(post_id) return render_template('post_selected.html', title=post[0], post=post[3], date=post[1]) except Exception as err: return InputError.raise_error(str(err))
def render_POST(self, request): try: new_post = Post.read_post(request) Storage.add_post(new_post) data_smal = {'title': new_post.title, 'post': new_post.post} with open('templates/tamplate_result/post_added.html', 'r') as file: template_smal = file.read() template_content = render(template_smal, data_smal) return Post.read_base_template(template_content) except InputError as err: template, data = InputError.raise_error(str(err)) template_content = render(template, data) return Post.read_base_template(template_content) except Exception as err: template, data = InputError.raise_error(str(err)) template_content = render(template, data) return Post.read_base_template(template_content)
def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] user_finded = Storage.select_user(username, password) if not user_finded: return InputError.raise_error( "Check your username and password? If you don't have acount:Please SING UP!!!" ) session['log_in'] = username return redirect(url_for('check_status')) return render_template('login.html')
def view_post(request): request.setHeader("Content-Type", "text/html") with open('templates/base.html', 'r') as file: template_content = file.read() try: post_id = request.args[b"post_id"][0].decode('UTF-8') post = Storage.select_post(post_id) data = { 'title': post[0], 'post': post[3], 'date': str(post[1]), 'id': str(post[2]) } with open('templates/tamplate_result/post_selected.html', 'r') as file: template = file.read() template_content = render(template, data) return Post.read_base_template(template_content) except Exception as err: template, data = InputError.raise_error(str(err)) template_content = render(template, data) return Post.read_base_template(template_content)
def page_not_found(err): return InputError.raise_error(str(err))