Skip to content

Commit

Permalink
Pre-release v2: Recurring Sessions, Fixed Bugs/UI changes, Tutor Port…
Browse files Browse the repository at this point in the history
…al enhances
  • Loading branch information
charlestang06 committed Mar 17, 2024
1 parent a2ed6bb commit 8e99ed4
Show file tree
Hide file tree
Showing 8 changed files with 218 additions and 84 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Italicized features are prioritized for implementation. These are ordered in ter
- [x] (MVP #1) Admin dashboard (manage tutor, student, and session registrations)
- [x] (MVP #2) Student session registration (sign up for tutoring sessions, email confirmation, automatic account generation)
- [x] (MVP #3) Student dashboard (custom auth login/logout, see past/upcoming sessions, register session, see session details, see tutor details, cancel session)
- [x] (MVP #4) Tutor session dashboard (custom auth login/logout, see available sessions, see historical sessions, sign up for sessions, past taken sessions, *add session / recurring sessions utility*, calendar view)
- [x] (MVP #4) Tutor session dashboard (custom auth login/logout, see available sessions, see historical sessions, sign up for sessions, past taken sessions, add session / recurring sessions utility, calendar view)
- [x] Deployed onto CPanel, configured DNS for a subdomain (portal.iridiumtutoring.org), 90-day SSL from Let's Encrypt Provider (HTTPS)
- [x] Tutor profile dashboard (volunteering hours)
- [x] CI/CD pipeline for semi-automatic deployment from GitHub to CPanel, pre-prod server for staging
Expand Down
Binary file modified iridisite/__pycache__/settings.cpython-312.pyc
Binary file not shown.
Binary file modified tutoring_student/__pycache__/views.cpython-312.pyc
Binary file not shown.
85 changes: 85 additions & 0 deletions tutoring_student/templates/404.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link
href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css"
rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC"
crossorigin="anonymous"
/>
<link
href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.8.1/font/bootstrap-icons.css"
rel="stylesheet"
/>
{% load static %}
<link href="{% static 'tutoring_student/style.css' %}" rel="stylesheet" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title id="title">Iridium Tutoring | 404</title>
</head>
<body>
{% load static %}
<!-- Nav Bar-->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="https://www.iridiumtutoring.org"
><img
src="{% static 'tutoring_student/images/iridiumbannerheader.png' %}"
class="img-fluid"
style="height: 3rem"
alt="Iridium Tutoring Logo"
/></a>
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNavAltMarkup"
aria-controls="navbarNavAltMarkup"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a
class="nav-link fw-bold"
href="{% url 'tutoring_student:index' %}"
>Home</a
>
<a
class="nav-link fw-bold"
href="{% url 'tutoring_student:studentView' %}"
>Students</a
>
<a
class="nav-link fw-bold"
href="{% url 'tutoring_student:tutorView' %}"
>Tutors</a
>
</div>
</div>
<div class="nav navbar-nav ml-auto mr-0">
<a class="nav-link fw-bold" href="https://www.iridiumtutoring.org"
>Back To Main Site</a
>
</div>
</div>
</nav>

<div class="container mt-3">
<h1 class="text-center mt-5">Error</h1>
<hr />
<p class="text-center lead">{{exception}}</p>
<a class="btn btn-secondary btn-lg rounded-pill mt-3 mb-5" href="" role="button">Go Back</a>
</div>

<!-- Footer-->
{% include 'tutoring_student/large-footer.html' %}
</body>
<script
src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
crossorigin="anonymous"
></script>
</html>
94 changes: 47 additions & 47 deletions tutoring_student/templates/tutoring_student/session-student.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,57 +20,60 @@
<body>
<!-- Nav Bar-->
{% load static %}
<!-- Nav Bar-->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark navbar-inverse">
<div class="container-fluid">
<a class="navbar-brand" href="https://www.iridiumtutoring.org"
><img
src="{% static 'tutoring_student/images/iridiumbannerheader.png' %}"
class="img-fluid"
style="height: 3rem"
alt="Iridium Tutoring Logo"
/></a>
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarNavAltMarkup"
aria-controls="navbarNavAltMarkup"
aria-expanded="false"
aria-label="Toggle navigation"
>
<a class="navbar-brand" href="https://www.iridiumtutoring.org"><img src="{% static 'tutoring_student/images/iridiumbannerheader.png' %}" class="img-fluid" style="height: 3rem" alt="Iridium Tutoring Logo" /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link" href="{% url 'tutoring_student:index' %}"
>Home</a
>
<a
class="nav-link active"
aria-current="page"
href="{% url 'tutoring_student:studentView' %}"
>Student Portal</a
>
</div>
</div>

<!-- Align with right side of navbar -->
<div class="nav navbar-nav ml-auto mr-0">
{% if not user %}
<a class="nav-link" href="https://www.iridiumtutoring.org"
>Back To Main Site</a
>
{% endif %} {% if user %}
<a href="{% url 'tutoring_student:student_logout' %}">
<button class="btn btn-outline-light">
<i class="bi bi-box-arrow-right"></i>
</button>
</a>
{% endif %}
<a class="nav-link fw-bold" href="{% url 'tutoring_student:index' %}">Home</a>
<a class="nav-link active fw-bold" aria-current="page" href="{% url 'tutoring_student:studentView' %}">Students</a>
</div>
</div>

<!-- Align with right side of navbar -->
<div class="nav navbar-nav ml-auto mr-0">
{% if not user %}
<a class="nav-link fw-bold" href="https://www.iridiumtutoring.org">Back To Main Site</a>
{% endif %}
{% if user %}
<a href="{% url 'tutoring_student:student_logout' %}">
<button class="btn btn-outline-light"><i class="bi bi-box-arrow-right fw-bold"></i></button>
</a>
{% endif %}
</div>
</div>
</nav>
<!-- End Nav Bar-->
<!-- Cancel Session Modal -->
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="staticBackdropLabel">Are you sure you want to cancel this session?</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
This action is irreversible. If you cancel this session, please make sure to notify the student and the session will be removed permanently from the system.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary rounded-pill" data-bs-dismiss="modal">Go Back</button>
<form
method="post"
action="{% url 'tutoring_student:session_details_student' tutoringSession.id%}"
>
{%csrf_token %}
<input type="hidden" name="cancel" value="True" />
<button type="submit" class="btn btn-orange rounded-pill text-white fw-bold">Confirm Cancel</button>
</form>
</div>
</div>
</div>
</div>
<!-- Main Body -->
<div class="container mt-lg-5">
{% if error_message %}
<div class="alert alert-danger">
Expand Down Expand Up @@ -116,20 +119,17 @@ <h2 class="display-4">
>iridiumtutoring@gmail.com</a
>.
</p>
<form
method="post"
action="{% url 'tutoring_student:session_details_student' tutoringSession.id%}"
>
{% csrf_token %}
<div>
<input type="hidden" name="cancel" value="True" />
<button
type="submit"
class="btn btn-orange text-white fw-bold rounded-pill btn-lg mb-3"
role="button"
data-bs-toggle="modal" data-bs-target="#staticBackdrop"
>
Cancel Session
</button>
</form>
<div>
{% else %}
<p class="lead">
{{tutoringSession.tutor.tutorName}} {% if tutoringSession.isRecurring %} is your designated recurring tutor. Please contact them
Expand Down
103 changes: 72 additions & 31 deletions tutoring_student/templates/tutoring_student/session-tutor.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,64 @@
</head>
<body>
<!-- Nav Bar-->
{% load static %}
<nav class="navbar navbar-expand-lg navbar-dark bg-dark navbar-inverse">
<div class="container-fluid">
<a class="navbar-brand" href="https://www.iridiumtutoring.org"><img src="{% static 'tutoring_student/images/iridiumbannerheader.png' %}" class="img-fluid" style="height: 3rem" alt="Iridium Tutoring Logo" /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link" href="{% url 'tutoring_student:index' %}">Home</a>
<a class="nav-link active" aria-current="page" href="{% url 'tutoring_student:tutorView' %}">Tutor Portal</a>
</div>
<div class="container-fluid">
<a class="navbar-brand" href="https://www.iridiumtutoring.org"><img src="{% static 'tutoring_student/images/iridiumbannerheader.png' %}" class="img-fluid" style="height: 3rem" alt="Iridium Tutoring Logo" /></a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link fw-bold" href="{% url 'tutoring_student:index' %}">Home</a>
<a class="nav-link active fw-bold" aria-current="page" href="{% url 'tutoring_student:tutorView' %}">Tutors</a>
{% if user %}
<a class="nav-link fw-bold" href="{% url 'tutoring_student:tutorProfile' %}">Profile</a>
<a class="nav-link fw-bold" href="{% url 'tutoring_student:tutorUtilities' %}">Utilities</a>
{% endif %}
</div>
</div>
<!-- Align with right side of navbar -->
<div class="nav navbar-nav ml-auto mr-0">
{% if not user %}
<a class="nav-link fw-bold" href="https://www.iridiumtutoring.org">Back To Main Site</a>
{% endif %}
{% if user %}
<a href="{% url 'tutoring_student:tutor_logout' %}">
<button class="btn btn-outline-light fw-bold"><i class="bi bi-box-arrow-right"></i>
</button>
</a>
{% endif %}
</div>

</div>
</nav>
<!-- Nav Bar-->
<!-- Cancel Session Modal -->
<div class="modal fade" id="staticBackdrop" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="staticBackdropLabel">Are you sure you want to cancel this session?</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
This action is irreversible. If you cancel this session, please make sure to notify the student and the session will be removed permanently from the system.
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary rounded-pill" data-bs-dismiss="modal">Go Back</button>
<form
method="post"
action="{% url 'tutoring_student:session_details_tutor' tutoringSession.id%}"
>
{%csrf_token %}
<input type="hidden" name="cancel" value="True" />
<button type="submit" class="btn btn-orange rounded-pill text-white fw-bold">Confirm Cancel</button>
</form>
</div>

<!-- Align with right side of navbar -->
<div class="nav navbar-nav ml-auto mr-0">
{% if not user %}
<a class="nav-link" href="https://www.iridiumtutoring.org">Back To Main Site</a>
{% endif %}
{% if user %}
<a href="{% url 'tutoring_student:tutor_logout' %}">
<button class="btn btn-outline-light"><i class="bi bi-box-arrow-right"></i></button>
</a>
{% endif %}
</div>
</div>
</nav>
<!-- End Nav Bar-->
</div>
</div>
<!-- Main Body -->
<div class="container mt-lg-5">
{% if error_message %}
<div class="alert alert-danger">
Expand Down Expand Up @@ -75,20 +105,31 @@ <h2 class="display-4">{{ tutoringSession.student.studentName }}'s registration</
<form method="post" action="{% url 'tutoring_student:session_details_tutor' tutoringSession.id%}">
{% csrf_token %}
<input type="hidden" name="claim" value="True">
<button type="submit" class="btn btn-dark-purple btn-lg rounded-pill text-white" role="button">Claim Session</button>
<button type="submit" class="btn btn-dark-purple btn-lg rounded-pill text-white mb-3" role="button">Claim Session</button>
</form>
{% elif tutoringSession.tutor.tutorName == tutor.tutorName and tutoringSession.tutor.email == tutor.email %}
<form method="post" action="{% url 'tutoring_student:session_details_tutor' tutoringSession.id%}">
{% csrf_token %}
<input type="hidden" name="claim" value="False">
<button type="submit" class="btn btn-dark-purple btn-lg rounded-pill text-white" role="button">Unclaim Session</button>
<button type="submit" class="btn btn-dark-purple btn-lg rounded-pill text-white mb-3" role="button">Unclaim Session</button>
</form>
{% else %}
<p class="lead">{{tutoringSession.tutor.tutorName}} has signed up for this session.</p>
{% endif %}
{% endif %}
{% if tutoringSession.isRecurring %}
<div class="mt-3">
<input type="hidden" name="cancel" value="True" />
<button
type="submit"
class="btn btn-orange text-white fw-bold rounded-pill btn-lg mb-3"
role="button"
data-bs-toggle="modal" data-bs-target="#staticBackdrop"
>
Cancel Session
</button>
</div>
{% endif %}
<a class="btn btn-secondary btn-lg rounded-pill mt-3" href="{% url 'tutoring_student:tutorView' %}" role="button">Go Back</a>
</div>
<a class="btn btn-secondary btn-lg rounded-pill" href="{% url 'tutoring_student:tutorView' %}" role="button">Go Back</a>
</div>
{% endif %}
{% endif %}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ <h3>Previous Tutoring Sessions</h3>
</thead>
<tbody>
{% for session in tutoringSessions %}
{% if session.was_in_past %}
{% if session.was_in_the_past %}
<tr>
<td>{{ session.student.studentName }}</td>
<td>{{ session.date }}</td>
Expand Down
Loading

0 comments on commit 8e99ed4

Please sign in to comment.