Esempio n. 1
0
    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)
Esempio n. 2
0
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))
Esempio n. 3
0
    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)
Esempio n. 4
0
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)
Esempio n. 5
0
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))
Esempio n. 6
0
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)
Esempio n. 7
0
    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))
Esempio n. 8
0
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))
Esempio n. 9
0
    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)
Esempio n. 10
0
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')
Esempio n. 11
0
    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)
Esempio n. 12
0
def page_not_found(err):
    return InputError.raise_error(str(err))