Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • fares535/medarbetarpuls
1 result
Show changes
Commits on Source (2)
...@@ -128,10 +128,18 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): # pyright: ignore ...@@ -128,10 +128,18 @@ class CustomUser(AbstractBaseUser, PermissionsMixin): # pyright: ignore
# To see how many surveys this user has unanswered # To see how many surveys this user has unanswered
def count_unanswered_surveys(self): def count_unanswered_surveys(self):
return self.survey_results.filter(is_answered=False).count() return self.survey_results.filter(is_answered=False).count()
# To see how many surveys this user has answered
def count_answered_surveys(self):
return self.survey_results.filter(is_answered=True).count()
# To get all unanswered surveys for this user # To get all unanswered surveys for this user
def get_unanswered_surveys(self): def get_unanswered_surveys(self):
return self.survey_results.filter(is_answered=False) return self.survey_results.filter(is_answered=False)
# To get all answered surveys for this user
def get_answered_surveys(self):
return self.survey_results.filter(is_answered=True)
......
...@@ -192,7 +192,11 @@ button:hover { ...@@ -192,7 +192,11 @@ button:hover {
.start-container { .start-container {
max-width: 1200px; max-width: 1200px;
margin: 0 auto; justify-content: center;
padding: 20px;
display: flex;
flex-direction: column;
align-items: center;
padding: 20px; padding: 20px;
} }
......
<html lang="sv">
<head>
{% load static %}
<script src="https://unpkg.com/htmx.org@1.8.4"></script>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Medarbetarpuls - Surveys</title>
<link rel="stylesheet" href="{% static 'styles.css' %}" />
</head>
<body>
<div class="start-container">
<h1>Resultat på besvarade enkäter</h1>
<h2>Du har besvarat {{ answered_count }} enkäter</h2>
<div class="grid-container">
{% for survey in answered_surveys %}
{% if survey.published_survey.deadline > current_time %} <!-- Check if sending_date exists -->
<div class="grid-item yellow">
<p> Pågående enkät</p>
<p><strong>*{{ survey.published_survey.name }}*</strong></p>
<p> {{survey.published_survey.collected_answer_count}} har svarat hittils</p>
</div>
{% else %}
<div class="grid-item green">
<p>Genomfördes: {{ survey.published_survey.sending_date }}
- {{ survey.published_survey.deadline }}</p>
<p><strong>*{{ survey.published_survey.name }}*</strong></p>
<p> {{survey.published_survey.collected_answer_count}} svarade på enkäten</p>
<button class="view-survey_result" onclick="window.location.href='{% url 'survey_result'
survey.id %}'">
Se resultat</button>
</div>
{% endif %}
{% endfor %}
<!-- Example survey cards for testing -->
<div class="grid-item yellow">
<p> Pågående enkät</p>
<p><strong>*Namn på enkät*</strong></p>
<p> 34 har svarat hittils</p>
</div>
<div class="grid-item green">
<p>Genomfördes: 2025-02-20 - 2025-03-20</p>
<p><strong>*Namn på enkät*</strong></p>
<p> 32 svarade på enkäten</p>
<button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' 1%}'">
Se resultat</button>
</div>
<div class="grid-item green">
<p>Genomfördes: 2025-02-20 - 2025-03-20</p>
<p><strong>*Namn på enkät*</strong></p>
<p> 32 svarade på enkäten</p>
<button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' 1%}'">
Se resultat</button>
</div>
<!-- Add more survey cards as needed -->
</div>
</div>
</body>
</html>
\ No newline at end of file
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<h2>Obesvarade enkäter</h2> <h2>Obesvarade enkäter</h2>
<p>Se dina obesvarade enkäter</p> <p>Se dina obesvarade enkäter</p>
</a> </a>
<a href="{% url 'survey_result' %}" class="grid-item orange"> <a href="{% url 'my_results' %}" class="grid-item orange">
<div class="icon">🔍</div> <div class="icon">🔍</div>
<h2>Se resultat</h2> <h2>Se resultat</h2>
<p>Se resultaten av dina tidigare svarade enkäter</p> <p>Se resultaten av dina tidigare svarade enkäter</p>
......
...@@ -19,7 +19,7 @@ ...@@ -19,7 +19,7 @@
<h2>Obesvarade enkäter</h2> <h2>Obesvarade enkäter</h2>
<p>Se dina obesvarade enkäter</p> <p>Se dina obesvarade enkäter</p>
</a> </a>
<a href="{% url 'survey_result' %}" class="grid-item orange"> <a href="{% url 'my_results' %}" class="grid-item orange">
<div class="icon">🔍</div> <div class="icon">🔍</div>
<h2>Se resultat</h2> <h2>Se resultat</h2>
<p>Se resultaten av dina tidigare svarade enkäter</p> <p>Se resultaten av dina tidigare svarade enkäter</p>
......
...@@ -8,12 +8,12 @@ ...@@ -8,12 +8,12 @@
<link rel="stylesheet" href="{% static 'styles.css' %}" /> <link rel="stylesheet" href="{% static 'styles.css' %}" />
</head> </head>
<body> <body>
<div class="unanswered-survey-container"> <div class="start-container">
<h1>Obesvarade enkäter</h1> <h1>Obesvarade enkäter</h1>
<h2>Du har {{ unanswered_count }} obesvarade enkäter</h2> <h2>Du har {{ unanswered_count }} obesvarade enkäter</h2>
<div class="survey-cards"> <div class="grid-container">
{% for survey in unanswered_surveys %} {% for survey in unanswered_surveys %}
<div class="survey-card"> <div class="grid-item lightblue">
<p>Publicerades: {{ survey.published_survey.sending_date }}</p> <p>Publicerades: {{ survey.published_survey.sending_date }}</p>
<p><strong>*{{ survey.published_survey.name }}*</strong></p> <p><strong>*{{ survey.published_survey.name }}*</strong></p>
<p>Deadline: {{ survey.published_survey.deadline }}</p> <p>Deadline: {{ survey.published_survey.deadline }}</p>
...@@ -21,24 +21,25 @@ ...@@ -21,24 +21,25 @@
{% endfor %} {% endfor %}
<!-- Example survey cards for testing --> <!-- Example survey cards for testing -->
<div class="survey-card"> <div class="grid-item lightblue">
<p>Publicerades: 2025-02-20</p> <p>Publicerades: 2025-02-20</p>
<p><strong>*Namn på enkät*</strong></p> <p><strong>*Namn på enkät*</strong></p>
<p>Deadline: 2026-02-20</p> <p>Deadline: 2026-02-20</p>
</div> </div>
<div class="survey-card"> <div class="grid-item lightblue">
<p>Publicerades: 2025-02-20</p> <p>Publicerades: 2025-02-20</p>
<p><strong>*Namn på enkät*</strong></p> <p><strong>*Namn på enkät*</strong></p>
<p>Deadline: 2026-02-20</p> <p>Deadline: 2026-02-20</p>
</div> </div>
<div class="survey-card"> <div class="grid-item lightblue">
<p>Publicerades: 2025-02-20</p> <p>Publicerades: 2025-02-20</p>
<p><strong>*Namn på enkät*</strong></p> <p><strong>*Namn på enkät*</strong></p>
<p>Deadline: 2026-02-20</p> <p>Deadline: 2026-02-20</p>
</div> </div>
<!-- Add more survey cards as needed --> <!-- Add more survey cards as needed -->
</div> </div>
<button class="view-survey_result" onclick="window.location.href='{% url 'survey_result' %}'"> Visa resultat på tidigare enkäter</button> <button class="view-survey_result" onclick="window.location.href='{% url 'my_results' %}'">
Visa resultat på tidigare enkäter</button>
</div> </div>
</body> </body>
</html> </html>
\ No newline at end of file
...@@ -24,7 +24,7 @@ urlpatterns = [ ...@@ -24,7 +24,7 @@ urlpatterns = [
path('settings-user/', views.settings_user_view, name='settings_user'), path('settings-user/', views.settings_user_view, name='settings_user'),
path('start-admin/', views.start_admin_view, name='start_admin'), path('start-admin/', views.start_admin_view, name='start_admin'),
path('start-user/', views.start_user_view, name='start_user'), path('start-user/', views.start_user_view, name='start_user'),
path('survey-result/', views.survey_result_view, name='survey_result'), path('survey-result/<int:survey_id>/', views.survey_result_view, name='survey_result'),
path('survey-status/', views.survey_status_view, name='survey_status'), path('survey-status/', views.survey_status_view, name='survey_status'),
path('unanswered-surveys/', views.unanswered_surveys_view, name='unanswered_surveys'), path('unanswered-surveys/', views.unanswered_surveys_view, name='unanswered_surveys'),
] ]
...@@ -4,6 +4,8 @@ from django.shortcuts import redirect, render ...@@ -4,6 +4,8 @@ from django.shortcuts import redirect, render
from django.views.decorators.csrf import csrf_exempt, csrf_protect from django.views.decorators.csrf import csrf_exempt, csrf_protect
from django.shortcuts import get_object_or_404 from django.shortcuts import get_object_or_404
from django.contrib.auth import authenticate, login from django.contrib.auth import authenticate, login
from django.utils import timezone
from .models import SurveyResult
import logging import logging
...@@ -299,7 +301,18 @@ def my_org_view(request): ...@@ -299,7 +301,18 @@ def my_org_view(request):
def my_results_view(request): def my_results_view(request):
return render(request, "my_results.html") user = request.user # Assuming the user is authenticated
answered_count = user.count_answered_surveys()
answered_surveys = user.get_answered_surveys()
# Assuming survey deadline is converted to UTC-timezone
current_time = timezone.now()
return render(request, "my_results.html" , {
'answered_count': answered_count,
'answered_surveys': answered_surveys,
'current_time': current_time,
})
def my_surveys_view(request): def my_surveys_view(request):
...@@ -332,9 +345,16 @@ def start_user_view(request): ...@@ -332,9 +345,16 @@ def start_user_view(request):
return render(request, "start_user.html") return render(request, "start_user.html")
def survey_result_view(request): def survey_result_view(request, survey_id):
return render(request, "survey_result.html")
survey_result = get_object_or_404(SurveyResult, id=survey_id)
# Check if the survey is accessible to the user
if not survey_result.survey.accessible_users.filter(id=request.user.id).exists():
return render(request, '403.html', status=403) # Custom 403 page
# Proceed to render the survey results
return render(request, 'survey_result.html', {'survey_result': survey_result})
def survey_status_view(request): def survey_status_view(request):
return render(request, "survey_status.html") return render(request, "survey_status.html")
......