Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions addAchievements.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
from main import db, app, Achievement


# Przykładowe osiągnięcia
achievements = [
Achievement(AchievementName="Pierwsze logowanie", Description="Zaloguj się po raz pierwszy", Score=10, Type="Logowanie"),
Achievement(AchievementName="Super Skaner", Description="Zeskanuj 10 kodów QR", Score=50, Type="Skanowanie"),
Achievement(AchievementName="Quiz Mistrz", Description="Rozwiąż 5 quizów z wynikiem powyżej 80%", Score=100, Type="Quiz"),
Achievement(AchievementName="Znakoman", Description="Znajdź wszystkie znaki", Score=200, Type="Znaki"),
Achievement(AchievementName="Ustawienia Ekspert", Description="Skonfiguruj swoje konto w ustawieniach", Score=20, Type="Ustawienia")
]

# Dodawanie danych do bazy
with app.app_context():
db.session.bulk_save_objects(achievements)
db.session.commit()

print("Przykładowe osiągnięcia zostały dodane do bazy danych.")
42 changes: 41 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,21 @@
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db.init_app(app)

@app.shell_context_processor
def make_shell_context():
return {
'db': db,
'User': User,
'Sign': Sign,
'Achievement': Achievement,
'Question': Question,
'Answer': Answer,
'ConnectingTableQuestions': ConnectingTableQuestions,
'ConnectingTableSigns': ConnectingTableSigns,
'ConnectingTableAchievements': ConnectingTableAchievements
}



# Tworzenie tablic w bazie danych
with app.app_context():
Expand Down Expand Up @@ -59,7 +74,32 @@ def login():
@app.route('/logout', methods=['GET'])
def logout():
session.clear()
return redirect(url_for('index'))
return redirect(url_for('login'))

@app.route('/achievements')
def achievements():
if 'user_id' not in session:
return redirect(url_for('login'))

user_id = session['user_id']

# Pobieranie osiągnięć użytkownika
user_achievements = db.session.query(Achievement).join(ConnectingTableAchievements).filter(
ConnectingTableAchievements.UserID == user_id
).all()

return render_template('achievements.html', achievements=user_achievements)


@app.route('/faq')
def faq():
return render_template('faq.html')


@app.route('/about')
def about():
return render_template('about.html')


if __name__ == '__main__':
app.run(debug=True)
23 changes: 23 additions & 0 deletions templates/about.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{% extends "base.html" %}

{% block title %}O nas{% endblock %}

{% block content %}
<main class="container mt-5">
<h1>O nas</h1>
<p>Witamy na naszej stronie! Nasza misja to zapewnienie najlepszej jakości usług w zakresie skanowania kodów QR, zarządzania profilami użytkowników, quizów oraz osiągnięć. Chcemy, aby nasi użytkownicy mogli łatwo i szybko znajdować potrzebne informacje i czerpać radość z korzystania z naszych usług.</p>

<h2>Nasza Historia</h2>
<p>Nasza firma została założona w 2021 roku przez zespół entuzjastów technologii, którzy chcieli stworzyć platformę, która ułatwi życie użytkownikom. Od tego czasu rozwijamy naszą aplikację, dodając nowe funkcje i usprawniając istniejące.</p>

<h2>Nasze Wartości</h2>
<ul>
<li><strong>Jakość:</strong> Dążymy do tego, aby nasze usługi były na najwyższym poziomie.</li>
<li><strong>Innowacyjność:</strong> Stale poszukujemy nowych rozwiązań, aby ulepszać naszą platformę.</li>
<li><strong>Użytkownik:</strong> Naszym priorytetem jest zadowolenie użytkowników i dostarczanie im wartościowych funkcji.</li>
</ul>

<h2>Nasz Zespół</h2>
<p>Nasz zespół składa się z doświadczonych programistów, projektantów i specjalistów ds. obsługi klienta, którzy pracują razem, aby dostarczyć najlepsze możliwe doświadczenie użytkownikom naszej platformy.</p>
</main>
{% endblock %}
22 changes: 22 additions & 0 deletions templates/achievements.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{% extends "base.html" %}

{% block title %}Osiągnięcia{% endblock %}

{% block content %}
<main class="container mt-5">
<h2 class="mb-4">Twoje osiągnięcia</h2>
<div class="row">
{% for achievement in achievements %}
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">{{ achievement.title }}</h5>
<p class="card-text">{{ achievement.description }}</p>
</div>
</div>
</div>
{% endfor %}
</div>
</main>

{% endblock %}
47 changes: 37 additions & 10 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,46 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{% block title %}Żegluj - Znakuj!{% endblock %}</title>
<link rel="stylesheet" href="{{ url_for('static', filename='bootstrap.min.css') }}">
<style>
/* Dodaj to wewnątrz tagu <style> w sekcji <head> */
html, body {
height: 100%;
margin: 0;
padding: 0;
}
body {
display: flex;
flex-direction: column;
}
.container {
flex: 1;
}
.footer {
background-color: #343a40;
color: white;
text-align: center;
padding: 1rem 0;
}
.footer a {
color: white;
}
</style>
</head>
<body class="dark-theme">

{% include 'header.html' %}

<div class="container">
{% block content %}{% endblock %}
</div>
<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<!-- Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@1.16.1/dist/umd/popper.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<div class="container">
{% block content %}{% endblock %}
</div>
<footer class="footer">
<p><a href="/about">O nas</a> | <a href="/faq">FAQ</a></p>
</footer>

<!-- jQuery -->
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
<!-- Popper.js -->
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@1.16.1/dist/umd/popper.min.js"></script>
<!-- Bootstrap JS -->
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
54 changes: 54 additions & 0 deletions templates/faq.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
{% extends "base.html" %}

{% block title %}FAQ{% endblock %}

{% block content %}
<main class="container mt-5">
<h1>Frequently Asked Questions (FAQ)</h1>
<div class="accordion" id="faqAccordion">
<div class="card">
<div class="card-header" id="headingOne">
<h2 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
Jak mogę zarejestrować nowe konto?
</button>
</h2>
</div>

<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#faqAccordion">
<div class="card-body">
Aby zarejestrować nowe konto, kliknij na przycisk "Zarejestruj się" na stronie głównej i wypełnij formularz rejestracyjny swoimi danymi.
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingTwo">
<h2 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Jak mogę zmienić swoje hasło?
</button>
</h2>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#faqAccordion">
<div class="card-body">
Aby zmienić hasło, zaloguj się na swoje konto, przejdź do sekcji "Ustawienia" i wybierz opcję zmiany hasła.
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingThree">
<h2 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
Co zrobić, jeśli zapomniałem hasła?
</button>
</h2>
</div>
<div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#faqAccordion">
<div class="card-body">
Jeśli zapomniałeś hasła, kliknij na link "Zapomniałem hasła" na stronie logowania i postępuj zgodnie z instrukcjami, aby zresetować hasło.
</div>
</div>
</div>
</div>
</main>
{% endblock %}
70 changes: 61 additions & 9 deletions templates/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,64 @@
{% block title %}Strona główna{% endblock %}

{% block content %}
<div class="jumbotron">
<h1 class="display-4">Żegluj - Znakuj</h1>
<p class="lead">Testowy tekst</p>
<hr class="my-4">
<p>It includes registration and login functionality.</p>
<a class="btn btn-primary btn-lg" href="/register" role="button">Rejestracja</a>
<a class="btn btn-success btn-lg" href="/login" role="button">Logowanie</a>
</div>
{% endblock %}
<main class="container mt-5">
<!-- Sekcja z kafelkami -->
<div class="row">
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Skanowanie Kodów QR</h5>
<p class="card-text">Przejdź aby szukać nowych znaków</p>
<a href="/qr_scanning" class="btn btn-primary">Przejdź</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Znalezione Znaki</h5>
<p class="card-text">Przeglądaj wszystkie znalezione znaki</p>
<a href="/found_signs" class="btn btn-primary">Przejdź</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Quizy</h5>
<p class="card-text">Rozwiąż quizy i sprawdź swoją wiedzę</p>
<a href="/quizzes" class="btn btn-primary">Przejdź</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Osiągnięcia Użytkownika</h5>
<p class="card-text">Sprawdź swoje osiągnięcia</p>
<a href="/achievements" class="btn btn-primary">Przejdź</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Mój profil</h5>
<p class="card-text">Zarządzaj swoim profilem</p>
<a href="/profile" class="btn btn-primary">Przejdź</a>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card text-center">
<div class="card-body">
<h5 class="card-title">Ustawienia</h5>
<p class="card-text">Dostosuj ustawienia konta</p>
<a href="/settings" class="btn btn-primary">Przejdź</a>
</div>
</div>
</div>
</div>
</main>

{% endblock %}