Review profile
app #35
|
@ -1,4 +1,4 @@
|
|||
# coding=UTF-8
|
||||
"""Administration des profils utilisateurs."""
|
||||
|
||||
from django.contrib import admin
|
||||
from .models import Profile
|
||||
|
@ -6,7 +6,6 @@ from .models import Profile
|
|||
|
||||
class ProfileAdmin(admin.ModelAdmin):
|
||||
model = Profile
|
||||
|
||||
list_display = ("user", "birth_date", "gsm", "template_color", "sidebar_color")
|
||||
|
||||
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
# coding=UTF-8
|
||||
"""Extension et gestion des profils utilisateurs.
|
||||
|
||||
Les profils peuvent enregistrer les informations suivantes:
|
||||
|
||||
* le type de template,
|
||||
* la couleur de la barre de navigation
|
||||
* si la barre de navigation doit être cachée ou non
|
||||
"""
|
||||
|
||||
from django.db import models
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models.signals import post_save
|
||||
from django.db import models
|
||||
from django.dispatch import receiver
|
||||
|
||||
|
||||
# https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html
|
||||
class Profile(models.Model):
|
||||
"""
|
||||
Classe étendant les informations des utilisateurs/entraineurs de l'
|
||||
application.
|
||||
"""Classe étendant les informations des utilisateurs/entraineurs de l'application.
|
||||
|
||||
References:
|
||||
* https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html
|
||||
"""
|
||||
|
||||
TEMPLATE_CHOICES = ((0, "Dark"), (1, "Light"))
|
||||
|
@ -36,14 +42,3 @@ class Profile(models.Model):
|
|||
|
||||
def __str__(self):
|
||||
return "%s %s" % (self.user.first_name, self.user.last_name)
|
||||
|
||||
|
||||
# @receiver(post_save, sender=User)
|
||||
# def create_user_profile(sender, instance, created, **kwargs):
|
||||
# if created:
|
||||
# Profile.objects.create(user=instance)
|
||||
|
||||
|
||||
# @receiver(post_save, sender=User)
|
||||
# def save_user_profile(sender, instance, **kwargs):
|
||||
# instance.profile.save()
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
|
@ -1,14 +1,11 @@
|
|||
# coding=UTF-8
|
||||
"""URLs définissant la gestion des profils utilisateurs."""
|
||||
|
||||
from django.urls import path, re_path
|
||||
|
||||
from . import views
|
||||
|
||||
|
||||
profile_urlpatterns = [
|
||||
re_path(r"^lookup/$", views.user_lookup, name="user_lookup"),
|
||||
# re_path(r"^search/$", views.gymnast_listing),
|
||||
path(r"edit/<int:profileid>/", views.profile_update, name="profile_update"),
|
||||
# re_path(r'^(?P<gymnastid>[0-9]+)/statistics', 'people.views.statistics'),
|
||||
# re_path(r"^(?P<gymnastid>[0-9]+)$", views.gymnast_detail, name="gymnast_details"),
|
||||
# re_path(r"^$", views.gymnast_listing, name="gymnasts_list"),
|
||||
]
|
||||
|
|
|
@ -1,29 +1,51 @@
|
|||
# coding=UTF-8
|
||||
"""Vues de gestion des profils utilisateurs."""
|
||||
|
||||
from django.shortcuts import render
|
||||
from django.shortcuts import render, get_object_or_404
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.contrib.auth.models import User
|
||||
from django.db.models import Q
|
||||
from django.http import HttpResponseRedirect, HttpResponse
|
||||
from django.shortcuts import get_object_or_404, render
|
||||
from django.views.decorators.http import require_http_methods
|
||||
|
||||
import simplejson
|
||||
|
||||
from .forms import ProfileForm
|
||||
from .models import Profile
|
||||
from django.db.models import Q
|
||||
import simplejson
|
||||
|
||||
|
||||
@login_required
|
||||
@require_http_methods(["GET"])
|
||||
def user_lookup(request):
|
||||
"""
|
||||
Récupère la liste des gymnastes à la volée suivant des caractères de
|
||||
recherche entrés. (min 3 caractères)
|
||||
"""Récupère la liste des gymnastes sur base d'un paramètre `pattern`.
|
||||
|
||||
En dessous de 4 caractères (inclus), cette fonction ne retourne rien.
|
||||
|
||||
Les champs analysés sont:
|
||||
* Le nom
|
||||
* Le prénom
|
||||
* Le nom d'utilisateur
|
||||
|
||||
Returns:
|
||||
Le résultat est formaté en JSON, et contient les champs `id` et `name` d'une personne.
|
||||
Le champ `name` correspond au champ `username` d'un utilisateur.
|
||||
|
||||
Examples:
|
||||
>>> /user_lookup/?pattern=bond
|
||||
[
|
||||
{
|
||||
"id": 1726,
|
||||
"name": "James_Bond"
|
||||
},
|
||||
{
|
||||
"id": 187,
|
||||
"name": "margarine_bonduelle"
|
||||
}
|
||||
]
|
||||
"""
|
||||
|
||||
results = []
|
||||
pattern = request.GET.get("pattern", None)
|
||||
|
||||
# Ignore queries shorter than length 3
|
||||
if pattern is not None and len(pattern) > 3:
|
||||
model_results = User.objects.filter(
|
||||
Q(last_name__icontains=pattern)
|
||||
|
@ -39,8 +61,10 @@ def user_lookup(request):
|
|||
@login_required
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def profile_update(request, profileid):
|
||||
"""
|
||||
Formulaire de modification d'un profile utilisateur.
|
||||
"""Modification d'un profil utilisateur.
|
||||
|
||||
Args:
|
||||
profileid (int): L'identifiant du profil utilisateur à modifier.
|
||||
"""
|
||||
|
||||
profile = get_object_or_404(Profile, pk=profileid)
|
||||
|
|
Loading…
Reference in New Issue