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')
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')
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')
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
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('/')
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')