Affichage de la progression utilisateur dans les cours suivis et amélioration des templates associés.
This commit is contained in:
parent
81b42b8b4a
commit
8f0fad45be
4 changed files with 65 additions and 29 deletions
|
|
@ -12,7 +12,7 @@ class CourseSitemap(sitemaps.Sitemap):
|
|||
priority = 0.9
|
||||
|
||||
def items(self):
|
||||
return Course.objects.filter(enable=True) # Exemple de filtre
|
||||
return Course.objects.filter(enable=True).order_by('id')
|
||||
|
||||
def location(self, item):
|
||||
# Assure-toi que ton modèle Course a bien une méthode get_absolute_url
|
||||
|
|
|
|||
|
|
@ -6,12 +6,27 @@
|
|||
{% endblock %}
|
||||
<div class="profile-details">
|
||||
<h2>Mes cours</h2>
|
||||
<p>Retrouvez ici la liste de tous les cours que vous suivez.</p>
|
||||
<ul>
|
||||
{% for course in user_courses %}
|
||||
<li><a href="{% url 'courses:show' course.name|slugify course.id %}">{{ course.name }}</a></li>
|
||||
<p>Retrouvez ici la liste de tous les cours que vous suivez et votre progression.</p>
|
||||
|
||||
{% if progress_list %}
|
||||
<ul class="profile-courses">
|
||||
{% for p in progress_list %}
|
||||
{% with course=p.course %}
|
||||
<li>
|
||||
<a href="{% url 'courses:show' course.name|slugify course.id %}">
|
||||
{% if course.thumbnail %}
|
||||
<img src="/{{ course.thumbnail }}" alt="{{ course.name }}" class="course-thumb-mini">
|
||||
{% endif %}
|
||||
<span>{{ course.name }}</span>
|
||||
</a>
|
||||
<div class="muted small">Progression: {{ p.percent_completed }}%</div>
|
||||
</li>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% else %}
|
||||
<p class="muted">Vous ne suivez aucun cours pour le moment.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</section>
|
||||
{% endblock %}
|
||||
|
|
@ -22,16 +22,19 @@
|
|||
|
||||
<div class="profile-card">
|
||||
<h3>Mes cours</h3>
|
||||
{% with courses=user.course_set.all %}
|
||||
{% if courses %}
|
||||
{% with progress_list=latest_progress %}
|
||||
{% if progress_list %}
|
||||
<ul class="profile-courses">
|
||||
{% for course in courses|slice:":6" %}
|
||||
{% for p in progress_list %}
|
||||
{% with course=p.course %}
|
||||
<li>
|
||||
<a href="{% url 'courses:show' course_id=course.id course_name=course.slug %}">
|
||||
<img src="/{{ course.thumbnail }}" alt="{{ course.name }}" class="course-thumb-mini">
|
||||
<span>{{ course.name }}</span>
|
||||
</a>
|
||||
<div class="muted small">Progression: {{ p.percent_completed }}%</div>
|
||||
</li>
|
||||
{% endwith %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="text-right">
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from django.contrib import messages
|
|||
from django.contrib.auth import authenticate, login as auth_login, logout as auth_logout
|
||||
from django.contrib.auth.models import User
|
||||
from courses.models import Course
|
||||
from progression.models import Progression
|
||||
from .forms import UserRegistrationForm, UserLoginForm, UserUpdateForm, ProfileUpdateForm, CompleteProfileForm
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.core.mail import send_mail
|
||||
|
|
@ -81,7 +82,17 @@ def logout(request):
|
|||
def profile(request):
|
||||
if not hasattr(request.user, 'profile'):
|
||||
return redirect('complete_profile')
|
||||
return render(request, 'users/profile.html')
|
||||
|
||||
latest_progress = (
|
||||
Progression.objects
|
||||
.filter(user=request.user)
|
||||
.select_related('course')
|
||||
.prefetch_related('completed_lessons')
|
||||
.order_by('-updated_at')[:5]
|
||||
)
|
||||
|
||||
# Affiche les 5 derniers cours regardés avec leur progression
|
||||
return render(request, 'users/profile.html', {'latest_progress': latest_progress})
|
||||
|
||||
@login_required(login_url='login')
|
||||
def complete_profile(request):
|
||||
|
|
@ -130,9 +141,16 @@ def account_update(request):
|
|||
|
||||
@login_required(login_url='login')
|
||||
def my_courses(request):
|
||||
user_courses = Course.objects.filter(author=request.user.id)
|
||||
print(user_courses)
|
||||
return render(request, 'users/my_courses.html', {'user_courses' : user_courses})
|
||||
# Liste tous les cours suivis par l'utilisateur avec leur progression
|
||||
progress_list = (
|
||||
Progression.objects
|
||||
.filter(user=request.user)
|
||||
.select_related('course')
|
||||
.prefetch_related('completed_lessons')
|
||||
.order_by('-updated_at')
|
||||
)
|
||||
|
||||
return render(request, 'users/my_courses.html', {'progress_list': progress_list})
|
||||
|
||||
def create_post(request):
|
||||
# Implement post creation logic here
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue