Example #1
0
def pin_verify():
    log = add_log()
    if request.method == 'GET':
        message_pin = get_flashed_messages()
        return render_template('pin.html', message_pin=message_pin)

    if request.method == 'POST':
        conn = connect()
        c = conn.cursor()

        pin = request.form['check']
        log.info(f'Wpisano PIN {pin}')
        # print('pin: ', pin)

        query_pin = """
                        SELECT password FROM "pin" WHERE id = ?;
                        """
        id_pin = 1
        c.execute(query_pin, (id_pin,))
        line_from_base = c.fetchone()
        # print('pin:', line_from_base)

        if line_from_base:
            pin_hash = line_from_base['password']
            if check_password_hash(pin_hash, pin):
                session['pin'] = True
                log.info(f'PIN jest poprawny')
                return redirect('/register')

        flash('Błędny PIN')
        return redirect('/pin')
def delete():
    lg = add_log()
    if not session:

        lg.warning('Brak sesji')

        return redirect('/login')

    if session['is_admin'] == False:
        user = session['user']

        lg.warning(f'Użytkownik {user} próbował usunąć pytanie  ')

        return redirect('/ankieta')

    conn = connect()
    c = conn.cursor()

    query = """
        DELETE FROM "questions" WHERE id = ?;
        """
    delate_question = request.args.get('id')
    # print(delate_question)

    c.execute(query, (delate_question, ))

    conn.commit()
    conn.close()

    lg.info(f'Usunięcie pytania z bazy o numerze id: {delate_question}')

    return redirect('/baza')
Example #3
0
def log_in():
    log = add_log()

    if request.method == 'GET':
        messages = get_flashed_messages()
        return render_template('log_in.html', messages=messages)

    if request.method == 'POST':

        username = request.form['username']
        password = request.form['password']

        conn = connect()
        c = conn.cursor()
        # print('user: '******'password: '******'passwords:', password, line_from_base)
        only_results = ['codeme', 'alek']

        if line_from_base:
            password_hash = line_from_base['password']
            if check_password_hash(password_hash, password):
                print(session)
                log.info(f'poprawne logowanie user: {username}')

                session['user_id'] = line_from_base['id']
                session['user'] = line_from_base['user']
                session['is_admin'] = bool(line_from_base['admin'])

                if username in only_results:
                    session['is_admin'] = False
                    session['only_results'] = True
                    session['pin'] = False
                    return redirect('/wyniki')

                if line_from_base['admin']:
                    log.info(f'konto admina: {username}')
                    session['only_results'] = False
                    return redirect('/dodaj')

                else:
                    user = session['user']
                    session['only_results'] = False
                    log.info(f'konto użytkownika: {user}')

                    return redirect('/ankieta')

        flash('Błędna nazwa użytkownika lub hasło')

        log.warning(f'Błedna nazwa użytkownika "{username}" lub hasło "{password}"')

        return redirect('/login')
def register():
    log = add_log()
    print(session)

    if request.method == 'GET':

        if session:
            if not session['pin']:
                session.clear()
                return redirect('/login')

            if session['pin']:
                validator = get_flashed_messages()
                double_user = get_flashed_messages()
                return render_template('register_user.html',
                                       validator=validator,
                                       double_user=double_user)

        return redirect('/login')

    if request.method == 'POST':

        username = request.form['username']
        password = request.form['password']
        password2 = request.form['password2']
        log.info('Wprowadzono wszytskie dane do formularza')
        # print('user: '******'password: '******'pasword2: ', password2)

        if password == password2:
            log.info('Walidacja hasła przebiegła pomyślnie')
            conn = connect()
            c = conn.cursor()

            password_hash = generate_password_hash(password)
            isn_admin = 0
            query = """
                        INSERT INTO "login" ("id", "user", "password", "admin") VALUES (NULL, ?, ?, ?);"""

            try:
                c.execute(query, (username, password_hash, isn_admin))

            except sqlite3.IntegrityError:
                double_user = flash('Ten login już istnije')
                log.warning('Ten login już istnieje w bazie')
                return redirect('/register')

            conn.commit()
            # print('dane:', username, password)
            log.info('Prawidłowa rejestracja użytkowanika')
            return redirect('/login')

        else:
            flash('Wpisane hasła nie są identyczne')
            log.warning('Wpisane hasła nie są identyczne')
            return redirect('/register')
Example #5
0
def verify_number_of_every_questions():
    conn = connect()
    c = conn.cursor()
    log = add_log()
    query = """
    SELECT id, question FROM "questions";
    """
    c.execute(query)
    list_of_id = c.fetchall()

    log.info('Sprawdznie ilości wszystkich pytań')

    return list_of_id
def add():
    lg = add_log()
    if not session:
        lg.warning('Brak sesji')

        return redirect('/login')

    if session['is_admin'] == False:
        user = session['user']

        lg.info(f'Konto użytkowanika: {user}')

        return redirect('/ankieta')

    if request.method == 'GET':
        if session['is_admin'] == True:
            # session.pop('_flashes', None)
            added = get_flashed_messages()
            return render_template('input_question.html', added=added)

    if request.method == 'POST':

        conn = connect()
        c = conn.cursor()

        question = request.form['question']

        lg.info(f'Dodano pytanie: "{question}" do bazy danych')

        author = session['user_id']
        user = session['user']

        # print(type(question))

        if question == '':
            lg.warning(f'{user} próbował wprowdzić buste pytanie')

            return redirect('/dodaj')

        add_question = """
        INSERT INTO "questions" ("id", "id_user", "question", "type") VALUES (NULL, ?, ?,'tn')"""

        parameters = (author, question)
        # print(parameters)

        c.execute(add_question, parameters)
        conn.commit()
        flash('Pytanie zapisano w bazie')

        return redirect('/dodaj')
Example #7
0
def id_question_whith_answer():
    conn = connect()
    c = conn.cursor()
    log = add_log()

    log.info('Sprawdzenie listy id pytań z odpowiedziami')

    query_one = """
    SELECT id_question FROM "answers" GROUP BY id_question;
    """
    c.execute(query_one)
    list_of_id_question = c.fetchall()
    # print(list_of_id_question)

    return list_of_id_question
Example #8
0
def answers_of_question(id_question):
    conn = connect()
    c = conn.cursor()
    log = add_log()

    query_two = """
    SELECT id_question, answer, question FROM "answers" WHERE id_question = ?;"""
    # INNER JOIN "questions" ON answers.id_question = questions.id WHERE id_question = ?;"""

    c.execute(query_two, (id_question, ))
    answers_in_data = c.fetchall()
    # print(answers_in_data)

    log.info(f'Pobranie odpowiedzi do pytania: {id_question}')

    return answers_in_data
def results():
    conn = connect()
    c = conn.cursor()

    if request.method == 'GET':
        query = c.execute('SELECT * FROM answers')
        all_answers = query.fetchall()

        answers = [dict(p) for p in all_answers]

        list_of_answers = {'answers': answers}

        if session:
            if session['is_admin'] == True:
                return json.dumps(list_of_answers)
        return redirect('/login')
def questions():
    conn = connect()
    c = conn.cursor()

    if request.method == 'GET':
        query = c.execute('SELECT * FROM questions')
        get_questions = query.fetchall()

        all_answers = [dict(p) for p in get_questions]

        list_of_questions = {'questions': all_answers}

        if session:
            if session['is_admin'] == True:
                return json.dumps(list_of_questions)
        return redirect('/')
Example #11
0
def data():
    log = add_log()
    if not session:
        log.warning('Brak sesji')

        return redirect('/login')

    conn = connect()
    c = conn.cursor()

    query = """
    SELECT id, question FROM "questions";
    """
    c.execute(query)
    questions = c.fetchall()
    # print(questions)

    dict = {}

    for x in questions:
        # print(x)
        add_to_dict = {x[0]: x[1]}
        dict.update(add_to_dict)
    # print(dict)

    context = {'questions': dict}

    if session['is_admin'] == True:

        log.info('Konto admin')

        return render_template('data.html', **context)
    else:
        user = session['user']

        log.warning(f'Użytkowanik {user} próbował się dostać do bazy pytań')

        return redirect('/ankieta')
def form():
    log = add_log()

    if not session:
        log.warning('Brak sesji')

        return redirect('/login')

    if session:
        if session['only_results']:
            session.clear()
            return redirect('/')

        elif session['is_admin'] == False:

            if request.method == 'GET':
                conn = connect()
                c = conn.cursor()

                question = """
                    SELECT id, question FROM "questions";
                    """
                c.execute(question)
                questions = c.fetchall()
                # print(questions)

                dictionary = {}
                for x in questions:
                    # print(x)
                    add_to_dict = {x[0]: x[1]}
                    dictionary.update(add_to_dict)
                # print(dictionary)

                log.info(f'Prezentuję formulrz z pytaniami: {dictionary}')

                context = {'questions': dictionary}

                return render_template('form_for_user.html', **context)

            if request.method == 'POST':
                conn = connect()
                c = conn.cursor()

                answers = dict(
                    (key,
                     request.form.getlist(key) if len(request.form.getlist(
                         key)) > 1 else request.form.getlist(key)[0])
                    for key in request.form.keys())

                # print(answers)
                log.info(f'Przechwytywanie odpowiedzi formularza: {answers}')

                answers_dict = {}
                for k, v in answers.items():
                    id = k.strip(' answer')
                    odp = v[-1]
                    answers_dict[id] = odp
                # print(answers_dict)

                log.info(f'Tworzenie słownika z odpowiedziami: {answers_dict}')

                for key, volume in answers_dict.items():
                    add_answers_to_data = """
                            INSERT INTO "answers" ("id", "id_user", "id_question", "question", "answer", "is_answer") VALUES (NULL, ?, ?, ?, ?, ?);
                            """
                    id_user = session.get('user_id')
                    id_question = key

                    query = """
                                SELECT question FROM "questions" WHERE id = ?;
                                """
                    c.execute(query, (id_question, ))
                    answer_to_the_question = c.fetchone()
                    print(list(answer_to_the_question))
                    question = answer_to_the_question[0]
                    print(question)
                    answer = volume
                    is_answer = 1
                    # print(add_answers_to_data)

                    try:
                        c.execute(add_answers_to_data,
                                  (id_user, id_question, question, answer,
                                   is_answer))
                        log.info('Zapisanie odpowedzi do bazy danych')
                        conn.commit()

                    except sqlite3.OperationalError:
                        conn.close()

                        log.warning(
                            'SQLite3 zwrócił błąd: OperationalError i nastąpiło przekierowanie do /ankieta'
                        )

                        return redirect('/ankieta')

                    except sqlite3.IntegrityError:

                        log.warning(
                            'SQLite3 zwrócił błąd: IntegrityError i nastąpiło przekierowanie do strony startowej'
                        )

                        redirect('/')

                session.clear()

                log.info(
                    'Nastąpiło wypełnineie ankiety oraz prawidłowy zapis w bazie danych'
                )

                return render_template('thank_you.html')