# HG changeset patch # User verrierj # Date 1315409549 -7200 # Node ID 64f24f8841ecd488b22d0bbdaf3df24c1c6e1425 # Parent 4d3a3ea5225cc9a51cb9ba7e0be9eaee4791947f Add profile to user diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/ldt_utils/middleware/userprofile.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/ldt_utils/middleware/userprofile.py Wed Sep 07 17:32:29 2011 +0200 @@ -0,0 +1,11 @@ +from ldt.user.models import get_or_create_profile +from django.utils import translation + +class LanguageMiddleware(object): + + def process_request(self, request): + if request.user.is_authenticated(): + language = get_or_create_profile(request.user).language + translation.activate(language) + request.LANGUAGE_CODE = translation.get_language() + \ No newline at end of file diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html --- a/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/ldt_utils/templates/ldt/ldt_utils/create_ldt.html Wed Sep 07 17:32:29 2011 +0200 @@ -26,11 +26,14 @@ parent.$.nmTop().close(); }); + $("#check_projects").attr('title', 'uncheck all'); $("#check_projects").change(function () { if ($("#check_projects").is(":checked")) { $(".cellcheckbox input").attr('checked', 'true'); + $("#check_projects").attr('title', 'uncheck all'); } else { $(".cellcheckbox input").removeAttr('checked'); + $("#check_projects").attr('title', 'check all'); } }); @@ -48,9 +51,19 @@ {{form.title}}
-
{% trans "name" %}
+ + + + + {% for content in contents %} @@ -61,11 +74,7 @@
+ {% if not ldt_id %} + {% if contents|length > 1 %} + + {% endif %} + {% endif %} + {% trans "name" %}
- {% if not ldt_id %} - {% if contents|length > 1 %} - - {% endif %} - {% endif %} +
diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/locale/en/LC_MESSAGES/django.mo Binary file src/ldt/ldt/locale/en/LC_MESSAGES/django.mo has changed diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/locale/fr/LC_MESSAGES/django.mo Binary file src/ldt/ldt/locale/fr/LC_MESSAGES/django.mo has changed diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/locale/fr/LC_MESSAGES/django.po --- a/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/locale/fr/LC_MESSAGES/django.po Wed Sep 07 17:32:29 2011 +0200 @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-09-02 11:52+0200\n" +"POT-Creation-Date: 2011-09-07 15:34+0200\n" "PO-Revision-Date: 2010-03-09 15:52+0100\n" "Last-Translator: Yves-Marie Haussonne \n" "Language-Team: LANGUAGE \n" @@ -174,62 +174,62 @@ msgid "changed by" msgstr "modifié par" -#: .\ldt_utils\views.py:147 .\ldt_utils\views.py:540 .\ldt_utils\views.py:586 +#: .\ldt_utils\views.py:153 .\ldt_utils\views.py:546 .\ldt_utils\views.py:592 msgid "You can not access this project" msgstr "vous n'avez pas l'autorisation d'accéder à ce projet" -#: .\ldt_utils\views.py:752 +#: .\ldt_utils\views.py:758 #, python-format msgid "the project %(title)s is published. please unpublish before deleting." msgstr "Le projet %(title)s est publié. Déplublier le avant de l'effacer." -#: .\ldt_utils\views.py:753 +#: .\ldt_utils\views.py:759 msgid "can not delete the project. Please correct the following error" msgstr "" "Le projet ne peut pas être effacé. Veuillez corriger les erreurs suivantes." -#: .\ldt_utils\views.py:754 +#: .\ldt_utils\views.py:760 msgid "title error deleting project" msgstr "Erreur lors de l'effacement du projet" -#: .\ldt_utils\views.py:756 +#: .\ldt_utils\views.py:762 #, python-format msgid "please confirm deleting project %(title)s" msgstr "Confirmer l'effacement du projet intitulé %(title)s" -#: .\ldt_utils\views.py:757 +#: .\ldt_utils\views.py:763 msgid "confirm deletion" msgstr "Confirmation d'effacement" -#: .\ldt_utils\views.py:931 +#: .\ldt_utils\views.py:937 msgid "Problem when downloading file from url : " msgstr "Problème lors du téléchargement du fichier : " -#: .\ldt_utils\views.py:934 +#: .\ldt_utils\views.py:940 msgid "Problem when uploading file : " msgstr "Problème lors de l'upload du fichier : " -#: .\ldt_utils\views.py:1003 +#: .\ldt_utils\views.py:1009 #, python-format msgid "There is %(count)d error when deleting content" msgid_plural "There are %(count)d errors when deleting content" msgstr[0] "Il y a %(count)d erreur lors de l'effacement du contenu" msgstr[1] "Il y a %(count)d erreurs lors de l'effacement du contenu" -#: .\ldt_utils\views.py:1004 +#: .\ldt_utils\views.py:1010 msgid "title error deleting content" msgstr "Erreur lors de l'effacement du contenu" -#: .\ldt_utils\views.py:1006 +#: .\ldt_utils\views.py:1012 #, python-format msgid "Confirm delete content %(titles)s" msgstr "Veuillez confirmer l'effacement du contenu %(titles)s" -#: .\ldt_utils\views.py:1007 +#: .\ldt_utils\views.py:1013 msgid "confirm delete content" msgstr "Confirmation effacement contenu" -#: .\ldt_utils\views.py:1041 +#: .\ldt_utils\views.py:1047 #, python-format msgid "" "Content '%(title)s' is referenced by this project : %(project_titles)s. " @@ -239,11 +239,12 @@ "Please delete them beforehand." msgstr[0] "" msgstr[1] "" +msgstr[2] "" "Le contenu '%(title)s' est référencé par le projet '%(project_titles)s'." -msgstr[2] "Veuillez l'effacer préalablement." -msgstr[3] "" -msgstr[4] "Le contenu '%(title)s' est référencé par les projets suivants : " -msgstr[5] "'%(project_titles)s'.Veuillez les effacer préalablement." +msgstr[3] "Veuillez l'effacer préalablement." +msgstr[4] "" +msgstr[5] "Le contenu '%(title)s' est référencé par les projets suivants : " +msgstr[6] "'%(project_titles)s'.Veuillez les effacer préalablement." #: .\ldt_utils\templates\admin\ldt_utils\app_action.html.py:4 #: .\templates\admin\cms_change_list.html.py:7 @@ -287,7 +288,7 @@ msgstr "Copier votre projet" #: .\ldt_utils\templates\ldt\ldt_utils\copy_ldt.html.py:16 -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:47 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:50 msgid "Title" msgstr "Titre" @@ -337,7 +338,7 @@ msgstr "Le fichier média est en cours de traitement. Veuillez patienter." #: .\ldt_utils\templates\ldt\ldt_utils\create_content.html.py:124 -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:73 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:82 #: .\ldt_utils\templates\ldt\ldt_utils\error_confirm.html.py:49 msgid "close_cancel" msgstr "Fermer" @@ -350,36 +351,35 @@ msgid "write" msgstr "Enregistrer" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:43 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:46 msgid "Update your project" msgstr "Mettre à jour votre projet Lignes de Temps" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:43 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:46 msgid "Create your project" msgstr "Créer votre projet Lignes de Temps" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:49 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:52 msgid "List of contents" msgstr "Liste de contenus" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:51 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:64 #: .\ldt_utils\templates\ldt\ldt_utils\partial\contentslist.html.py:3 #: .\ldt_utils\templates\ldt\ldt_utils\partial\projectslist.html.py:3 #: .\ldt_utils\templates\ldt\ldt_utils\partial\publishedprojectslist.html.py:3 -#: .\user\templates\ldt\user\change_name.html.py:31 -#: .\user\templates\ldt\user\change_profile.html.py:73 +#: .\user\templates\ldt\user\change_profile.html.py:52 msgid "name" -msgstr "nom" +msgstr "Nom" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:75 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:84 msgid "delete_project" msgstr "Effacer" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:76 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:85 msgid "update_project" msgstr "Mettre à jour" -#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:78 +#: .\ldt_utils\templates\ldt\ldt_utils\create_ldt.html.py:87 msgid "create_project" msgstr "Créer un nouveau projet Ligne de Temps" @@ -526,6 +526,16 @@ msgid "Project published" msgstr "Projet publié" +#: .\templates\admin\base_site.html.py:4 +#, fuzzy +msgid "Django site admin" +msgstr "Administration de Django" + +#: .\templates\admin\base_site.html.py:7 +#: .\templates\admin\page_base_site.html.py:7 +msgid "Django administration" +msgstr "Administration de Django" + #: .\templates\admin\cms_change_form.html.py:30 msgid "Approve page deletion" msgstr "Accepter l'effacement de la page" @@ -646,57 +656,51 @@ msgid "Filter" msgstr "Filtre" -#: .\templates\admin\index.html.py:18 .\templates\admin\page_index.html.py:18 -#, python-format -msgid "Models available in the %(name)s application." -msgstr "Le modèle disponible dans l'application %(name)s." - -#: .\templates\admin\index.html.py:19 #: .\templates\admin\page_app_index.html.py:10 #: .\templates\admin\page_index.html.py:19 #, python-format msgid "%(name)s" msgstr "%(name)s" -#: .\templates\admin\index.html.py:29 +#: .\templates\admin\page_base.html.py:20 +#: .\templates\admin\page_index.html.py:11 +msgid "Pages" +msgstr "Pages" + #: .\templates\admin\page_change_form.html.py:20 #: .\templates\admin\page_index.html.py:29 msgid "Add" msgstr "Ajouter" -#: .\templates\admin\index.html.py:35 .\templates\admin\page_index.html.py:35 +#: .\templates\admin\page_index.html.py:18 +#, python-format +msgid "Models available in the %(name)s application." +msgstr "Le modèle disponible dans l'application %(name)s." + +#: .\templates\admin\page_index.html.py:35 msgid "Change" msgstr "modifié par" -#: .\templates\admin\index.html.py:64 .\templates\admin\page_index.html.py:45 +#: .\templates\admin\page_index.html.py:45 msgid "You don't have permission to edit anything." msgstr "Vous n'aver pas l'autorisation d'éditer quoi que ce soit." -#: .\templates\admin\index.html.py:72 .\templates\admin\page_index.html.py:53 +#: .\templates\admin\page_index.html.py:53 msgid "Recent Actions" msgstr "Actions récentes" -#: .\templates\admin\index.html.py:73 .\templates\admin\page_index.html.py:54 +#: .\templates\admin\page_index.html.py:54 msgid "My Actions" msgstr "Mes actions" -#: .\templates\admin\index.html.py:77 .\templates\admin\page_index.html.py:58 +#: .\templates\admin\page_index.html.py:58 msgid "None available" msgstr "Aucune disponible" -#: .\templates\admin\index.html.py:91 .\templates\admin\page_index.html.py:72 +#: .\templates\admin\page_index.html.py:72 msgid "Unknown content" msgstr "Contenu inconnu" -#: .\templates\admin\page_base.html.py:20 -#: .\templates\admin\page_index.html.py:11 -msgid "Pages" -msgstr "Pages" - -#: .\templates\admin\page_base_site.html.py:7 -msgid "Django administration" -msgstr "Administration de Django" - #: .\templates\admin\page_login.html.py:8 msgid "Connexion" msgstr "Connexion" @@ -754,9 +758,18 @@ msgstr "Plateforme Ldt" #: .\templates\ldt\ldt_base.html.py:85 +msgid "link to admin" +msgstr "" + +#: .\templates\ldt\ldt_base.html.py:85 msgid "Staff" msgstr "admin" +#: .\templates\ldt\ldt_base.html.py:88 +#, fuzzy +msgid "profile change" +msgstr "Modification de l'adresse émail" + #: .\templates\ldt\ldt_base.html.py:107 msgid "home" msgstr "accueil" @@ -781,12 +794,13 @@ msgstr "Mon profil" #: .\templates\ldt\ldt_base.html.py:139 -msgid "web" -msgstr "web v" +msgid "version number" +msgstr "" #: .\templates\ldt\ldt_base.html.py:139 -msgid "platform" -msgstr "platform v" +#, python-format +msgid " web %(WEB_VERSION)s | platform %(VERSION)s " +msgstr "web v%(WEB_VERSION)s | platform v%(VERSION)s " #: .\templates\ldt\ldt_raw_base.html.py:13 msgid "page_title" @@ -848,123 +862,54 @@ msgid "Permissions" msgstr "Permissions" -#: .\user\admin.py:25 .\user\templates\ldt\user\login_form.html.py:61 +#: .\user\admin.py:25 .\user\templates\ldt\user\change_profile.html.py:95 +#: .\user\templates\ldt\user\login_form.html.py:61 msgid "Password" msgstr "Mot de passe" #: .\user\forms.py:28 .\user\templates\ldt\user\change_password.html.py:40 +#: .\user\templates\ldt\user\change_profile.html.py:108 msgid "New password" msgstr "Nouveau mot de passe" #: .\user\forms.py:30 .\user\templates\ldt\user\change_password.html.py:50 +#: .\user\templates\ldt\user\change_profile.html.py:121 msgid "New password confirmation" msgstr "Confirmation du nouveau mot de passe" -#: .\user\forms.py:59 .\user\forms.py:60 .\user\forms.py:100 -#: .\user\forms.py:101 +#: .\user\forms.py:59 .\user\forms.py:60 msgid "E-mail" msgstr "E-mail" -#: .\user\forms.py:71 .\user\forms.py:113 +#: .\user\forms.py:71 msgid "The two emails didn't match." msgstr "les deux emails ne correspondent pas" -#: .\user\forms.py:82 .\user\forms.py:98 -#, fuzzy +#: .\user\forms.py:82 msgid "First name" -msgstr "prénom :" - -#: .\user\forms.py:83 .\user\forms.py:99 -#, fuzzy -msgid "Last name" -msgstr "nom :" - -#: .\user\forms.py:102 -#, fuzzy -msgid "Username" -msgstr "Nom de utilisateur :" - -#: .\user\forms.py:119 -#, python-format -msgid "username %s is already used." -msgstr "" - -#: .\user\forms.py:125 .\user\forms.py:131 -msgid "Please use only letter, blanks, or dashes." -msgstr "" - -#: .\user\views.py:38 .\user\templates\registration\login.html.py:24 -msgid "Sorry, that's not a valid username or password." -msgstr "Saisissez un nom d'utilisateur et un mot de passe valide." - -#: .\user\templates\ldt\user\change_email.html.py:5 -#, fuzzy -msgid "Modification de l'adresse émail" -msgstr "Modification de l'adresse email" +msgstr "Prénom" -#: .\user\templates\ldt\user\change_email.html.py:24 -msgid "" -"Please enter your new e-mail twice so we can verify you typed it in " -"correctly." -msgstr "" -"Saisissez deux fois votre nouvelle adresse émail afin de vérifier qu'il est " -"correctment" - -#: .\user\templates\ldt\user\change_email.html.py:24 -msgid "Your actual email address is" -msgstr "Votre adresse émail est " - -#: .\user\templates\ldt\user\change_email.html.py:30 -#: .\user\templates\ldt\user\change_profile.html.py:87 -#, fuzzy -msgid "email" -msgstr "adresse émail" +#: .\user\forms.py:83 +msgid "Last name" +msgstr "Nom :" -#: .\user\templates\ldt\user\change_email.html.py:39 -#: .\user\templates\ldt\user\change_profile.html.py:102 -#, fuzzy -msgid "Confirmation de l'adresse émail" -msgstr "Confirmation de l'adresse émail" - -#: .\user\templates\ldt\user\change_email.html.py:46 -msgid "change my e-mail" -msgstr "Changer l'adresse émail" - -#: .\user\templates\ldt\user\change_email.html.py:50 -#, fuzzy -msgid "Your new email address has been saved." -msgstr "Votre mot de passe a été changeé." - -#: .\user\templates\ldt\user\change_language.html.py:5 -#: .\user\templates\ldt\user\user_change.html.py:76 -msgid "Language change" -msgstr "Modification de la langue" - -#: .\user\templates\ldt\user\change_language.html.py:16 -msgid "Please change the language" -msgstr "Veuillez changer la langue du site." - -#: .\user\templates\ldt\user\change_language.html.py:20 +#: .\user\forms.py:110 .\user\templates\ldt\user\change_profile.html.py:73 msgid "Language" msgstr "Langue" -#: .\user\templates\ldt\user\change_name.html.py:5 -#: .\user\templates\ldt\user\change_name.html.py:37 -msgid "Name change" -msgstr "Modification du nom" - -#: .\user\templates\ldt\user\change_name.html.py:17 -msgid "Please change your name" -msgstr "Changez votre nom ou votre prénom." +#: .\user\views.py:30 +#, fuzzy +msgid "Your profile has been updated." +msgstr "Votre nom a été modifié" -#: .\user\templates\ldt\user\change_name.html.py:23 -#: .\user\templates\ldt\user\change_profile.html.py:59 -msgid "first name" -msgstr "prénom" +#: .\user\views.py:52 +#, fuzzy +msgid "Your password has been updated." +msgstr "Votre mot de passe a été changeé." -#: .\user\templates\ldt\user\change_name.html.py:41 -msgid "Your name has been modified" -msgstr "Votre nom a été modifié" +#: .\user\views.py:72 .\user\templates\registration\login.html.py:24 +msgid "Sorry, that's not a valid username or password." +msgstr "Saisissez un nom d'utilisateur et un mot de passe valide." #: .\user\templates\ldt\user\change_password.html.py:31 #, fuzzy @@ -972,52 +917,35 @@ msgstr "Ancien mot de passe" #: .\user\templates\ldt\user\change_password.html.py:44 -#, fuzzy msgid "passwords don't match" msgstr "Changement de mot de passe" #: .\user\templates\ldt\user\change_password.html.py:57 -#: .\user\templates\ldt\user\user_change.html.py:75 +#: .\user\templates\ldt\user\change_profile.html.py:134 #: .\user\templates\registration\password_change_form.html.py:14 #: .\user\templates\registration\password_change_form.html.py:17 msgid "Password change" msgstr "Modification du mot de passe" #: .\user\templates\ldt\user\change_password.html.py:61 -#, fuzzy msgid "Your new password has been saved." msgstr "Votre mot de passe a été changeé." -#: .\user\templates\ldt\user\change_profile.html.py:39 -#, fuzzy -msgid "Your profile has been updated" -msgstr "Votre nom a été modifié" +#: .\user\templates\ldt\user\change_profile.html.py:33 +msgid "username" +msgstr "Nom d'utilisateur" -#: .\user\templates\ldt\user\change_profile.html.py:46 -#, fuzzy -msgid "user name" -msgstr "Nom de utilisateur :" - -#: .\user\templates\ldt\user\change_profile.html.py:63 -#: .\user\templates\ldt\user\change_profile.html.py:77 -msgid "Please use only letters, blanks or dashes" -msgstr "" +#: .\user\templates\ldt\user\change_profile.html.py:44 +msgid "first name" +msgstr "Prénom" -#: .\user\templates\ldt\user\change_profile.html.py:91 -#, fuzzy -msgid "emails don't match" -msgstr "les deux emails ne correspondent pas" +#: .\user\templates\ldt\user\change_profile.html.py:60 +msgid "email" +msgstr "Adresse émail" -#: .\user\templates\ldt\user\change_profile.html.py:92 -#: .\user\templates\ldt\user\change_profile.html.py:106 -msgid "incorrect email" -msgstr "" - -#: .\user\templates\ldt\user\change_profile.html.py:114 -#: .\user\templates\ldt\user\user_change.html.py:74 -#, fuzzy +#: .\user\templates\ldt\user\change_profile.html.py:85 msgid "Profile change" -msgstr "Modification de l'adresse émail" +msgstr "Modification du profil" #: .\user\templates\ldt\user\login_form.html.py:50 msgid "create account" @@ -1246,38 +1174,26 @@ "Nous vous avons envoyé par courriel les instructions pour activer le compte " "à l'adresse que vous avez indiquée. Vous devriez le recevoir rapidement." -#~ msgid "Check all" -#~ msgstr "Cocher tout" - -#~ msgid "Uncheck all" -#~ msgstr "Décocher tout" - -#~ msgid "The language has been modified" -#~ msgstr "La langue a été modifiée" +#, fuzzy +#~ msgid "log out" +#~ msgstr "Déconnexion" -#~ msgid "name:" -#~ msgstr "nom :" - -#~ msgid "email change" -#~ msgstr "Modification de l'adresse émail" - -#~ msgid "email changed" -#~ msgstr "email modifié" +#~ msgid "" +#~ "Please enter your new e-mail twice so we can verify you typed it in " +#~ "correctly." +#~ msgstr "" +#~ "Saisissez deux fois votre nouvelle adresse émail afin de vérifier qu'il " +#~ "est correctment" -#~ msgid "back to profile" -#~ msgstr "Retourner à mon profil" +#~ msgid "Your actual email address is" +#~ msgstr "Votre adresse émail est " -#~ msgid "Se connecter" -#~ msgstr "Se connecter" - -#~ msgid "Créer un compte" -#~ msgstr "Créer un compte" +#~ msgid "change my e-mail" +#~ msgstr "Changer l'adresse émail" -#~ msgid "récupérer mot de passe" -#~ msgstr "Récupérer le mot de passe" +#, fuzzy +#~ msgid "Your new email address has been saved." +#~ msgstr "Votre mot de passe a été changeé." -#~ msgid "Page" -#~ msgstr "Pages" - -#~ msgid "Projets Lignes de temps" -#~ msgstr "Projets Lignes de temps" +#~ msgid "Please change the language" +#~ msgstr "Veuillez changer la langue du site." diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/settings.py --- a/src/ldt/ldt/settings.py Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/settings.py Wed Sep 07 17:32:29 2011 +0200 @@ -42,6 +42,7 @@ 'django.middleware.locale.LocaleMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django_openid_consumer.middleware.OpenIDMiddleware', + 'ldt.ldt_utils.middleware.userprofile.LanguageMiddleware', ) @@ -76,4 +77,6 @@ AUTO_INDEX_AFTER_SAVE = getattr(settings, 'AUTO_INDEX_AFTER_SAVE', True) -WEB_VERSION = getattr(settings, 'WEB_VERSION', '') \ No newline at end of file +WEB_VERSION = getattr(settings, 'WEB_VERSION', '') + + diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/static/ldt/css/workspace.css --- a/src/ldt/ldt/static/ldt/css/workspace.css Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/static/ldt/css/workspace.css Wed Sep 07 17:32:29 2011 +0200 @@ -97,13 +97,15 @@ /* make the TH elements pretty */ -.projectscontentsheader { +.projectscontentsheader { background: #b5b5b5; + padding: 1px 2px; + text-align: left; +} +.projectcontentsheadertitle { font-weight: bold; text-transform:capitalize; color: white; - padding: 1px 2px; - text-align: left; } .groupsheader { text-transform:none; diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/templates/admin/base_site.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/templates/admin/base_site.html Wed Sep 07 17:32:29 2011 +0200 @@ -0,0 +1,21 @@ +{% extends "admin/base.html" %} +{% load i18n %} + +{% block title %}{{ title }} | {% trans 'Django site admin' %}{% endblock %} + +{% block branding %} +

{% trans 'Django administration' %}

+{% endblock %} + +{% block nav-global %} + + + Admin home + Website home +{% endblock %} diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/forms.py --- a/src/ldt/ldt/user/forms.py Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/user/forms.py Wed Sep 07 17:32:29 2011 +0200 @@ -1,12 +1,12 @@ from django import forms -from django.contrib.auth.forms import UserCreationForm +from django.conf import settings +from django.contrib.auth.forms import UserCreationForm, UserChangeForm +from django.contrib.auth.models import User from django.forms.util import ErrorList from django.utils.translation import gettext as _ +from ldt.user.models import get_or_create_profile from models import Ldt -from django.contrib.auth.models import User - - class LdtForm(UserCreationForm): @@ -94,55 +94,29 @@ return self.user -class ProfileChangeForm(forms.Form): - first_name = forms.CharField(label=_("First name"), max_length=30) - last_name = forms.CharField(label=_("Last name"), max_length=30) - email1 = forms.EmailField(label=_("E-mail"), max_length=75) - email2 = forms.EmailField(label=_("E-mail"), max_length=75) - username = forms.RegexField(label=_("Username"), max_length=30, regex=r'^[\w.@+-]+$') +class ProfileForm(UserChangeForm): + + def __init__(self, user=None, *args, **kwargs): + #self.user = user + super(ProfileForm, self).__init__(*args, **kwargs) + + + class Meta: + model = User + fields = ('username', 'email', 'first_name', 'last_name') + + +class LanguageChangeForm(forms.Form): + language = forms.ChoiceField(label=_("Language"), choices=settings.LANGUAGES) def __init__(self, user=None, *args, **kwargs): self.user = user - super(ProfileChangeForm, self).__init__(*args, **kwargs) - - def clean_email2(self): - email1 = self.cleaned_data.get('email1') - email2 = self.cleaned_data.get('email2') - if email1 and email2: - if email1 != email2: - raise forms.ValidationError(_("The two emails didn't match.")) - return email2 - - def clean_username(self): - retrieved_username = '%s' % self.cleaned_data.get('username') - if retrieved_username != self.user.username and (len(User.objects.filter(username=retrieved_username)) > 0): - raise forms.ValidationError(_("username %s is already used." % retrieved_username)) - return retrieved_username - - def clean_first_name(self): - first_name = self.cleaned_data.get('first_name') - if not self.isValidName(first_name): - raise forms.ValidationError(_("Please use only letter, blanks, or dashes.")) - return first_name + super(LanguageChangeForm, self).__init__(*args, **kwargs) - def clean_last_name(self): - last_name = self.cleaned_data.get('last_name') - if not self.isValidName(last_name): - raise forms.ValidationError(_("Please use only letter, blanks, or dashes.")) - return last_name + def save(self): + profile = get_or_create_profile(self.user) + profile.language = self.cleaned_data['language'] + profile.save() + return self.user - def isValidName(self, string): - for i in string: - if not i.isalpha() and not i in [' ','-']: - return False - return True - - - def save(self): - self.user.email = self.cleaned_data['email1'] - self.user.first_name = self.cleaned_data['first_name'] - self.user.last_name = self.cleaned_data['last_name'] - self.user.username = self.cleaned_data['username'] - self.user.save() - return self.user - \ No newline at end of file + \ No newline at end of file diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/migrations/0003_auto__add_userprofile.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/ldt/ldt/user/migrations/0003_auto__add_userprofile.py Wed Sep 07 17:32:29 2011 +0200 @@ -0,0 +1,75 @@ +# encoding: utf-8 +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + +class Migration(SchemaMigration): + + def forwards(self, orm): + + # Adding model 'UserProfile' + db.create_table('user_userprofile', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('user', self.gf('django.db.models.fields.related.OneToOneField')(to=orm['auth.User'], unique=True)), + ('language', self.gf('django.db.models.fields.CharField')(default='fr', max_length=2)), + )) + db.send_create_signal('user', ['UserProfile']) + + + def backwards(self, orm): + + # Deleting model 'UserProfile' + db.delete_table('user_userprofile') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'user.ldt': { + 'Meta': {'object_name': 'Ldt', '_ormbases': ['auth.User']}, + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'user.userprofile': { + 'Meta': {'object_name': 'UserProfile'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'language': ('django.db.models.fields.CharField', [], {'default': "'fr'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True'}) + } + } + + complete_apps = ['user'] diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/models.py --- a/src/ldt/ldt/user/models.py Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/user/models.py Wed Sep 07 17:32:29 2011 +0200 @@ -1,7 +1,8 @@ from django.contrib import admin +from django.db import models +from django.conf import settings from django.contrib.auth.models import User, UserManager import datetime - class Ldt(User): # irigroups = models.ManyToManyField(IriGroup, blank=True) @@ -18,14 +19,30 @@ def create_user(self, username, email, password=None): "Creates and saves a User with the given username, e-mail and password." now = datetime.datetime.now() - user = Ldt(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now) + new_user = Ldt(None, username, '', '', email.strip().lower(), 'placeholder', False, True, False, now, now) if password: - user.set_password(password) + new_user.set_password(password) else: - user.set_unusable_password() - user.save() - return user + new_user.set_unusable_password() + new_user.save() + UserProfile.objects.create(user=new_user) + return new_user + + +class UserProfile (models.Model): + user = models.OneToOneField(User) + language = models.CharField(max_length=2, default='fr') + + +def get_or_create_profile(user): + try: + profile = user.get_profile() + except UserProfile.DoesNotExist: + profile = UserProfile(user=user) + profile.save() + return profile + User.objects = LdtManager() User.objects.contribute_to_class(User, "objects") diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/templates/ldt/user/change_email.html --- a/src/ldt/ldt/user/templates/ldt/user/change_email.html Mon Sep 05 10:39:07 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -{% extends "ldt/user/user_base.html" %} -{# form of email address's change #} -{% load i18n %} - -{% block content_title %}{% trans "Modification de l'adresse émail" %}{% endblock %} -{% block js_declaration %}{{ block.super }} - -{% endblock %} - -{% block css_import %} -{{ block.super }} - -{% endblock %} - -{% block content %} -{{ block.super }} -{% if form %} -

{% trans "Please enter your new e-mail twice so we can verify you typed it in correctly." %}. {% trans "Your actual email address is" %} : {{ user.email }}.

-
-{% csrf_token %} - - - - - - - - - - - - -
- - - - {{form.email1.errors}}
- - - - {{form.email1.errors}}
-
-{% else %} -

{% trans "Your new email address has been saved." %}

-{% endif %} -{% endblock%} diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/templates/ldt/user/change_language.html --- a/src/ldt/ldt/user/templates/ldt/user/change_language.html Mon Sep 05 10:39:07 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ -{% extends "ldt/user/user_base.html" %} -{# form of language's change #} -{% load i18n %} - -{% block content_title %}{% trans "Language change" %} {% endblock %} - -{% block css_import %} -{{ block.super }} - -{% endblock %} - -{% block content %} -{{ block.super }} -

{% trans "Please change the language" %}

-
- {% csrf_token %} - - - -
-{% endblock%} diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/templates/ldt/user/change_name.html --- a/src/ldt/ldt/user/templates/ldt/user/change_name.html Mon Sep 05 10:39:07 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -{% extends "ldt/user/user_base.html" %} -{# form of name's change #} -{% load i18n %} - -{% block content_title %}{% trans "Name change" %} {% endblock %} - -{% block css_import %} -{{ block.super }} - -{% endblock %} - -{% block content %} -{{ block.super }} -{% if form %} -

{% trans "Please change your name" %}

-
-{% csrf_token %} - - - - - - - - - - -
- - - -
- - - -
-
-{% else %} -

{% trans "Your name has been modified" %}

-{% endif %} -{% endblock%} diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/templates/ldt/user/change_profile.html --- a/src/ldt/ldt/user/templates/ldt/user/change_profile.html Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/user/templates/ldt/user/change_profile.html Wed Sep 07 17:32:29 2011 +0200 @@ -1,67 +1,67 @@ -{% extends "ldt/user/user_change.html" %} +{% extends "ldt/user/user_base.html" %} {# form of password change #} {% load i18n %} {% block css_import %} + {{ block.super }} + +{% endblock %} +{% block content %} {{ block.super }} - - -{% endblock %} -{% block content %} - -{{ block.super }} - -{% if not form %} -{%trans "Your profile has been updated" %} +
+{% if msg %} +
{{ msg }}
{% endif %} -
+ {% csrf_token %} + + + + + + + + - - + + + + + + +
- + - {% for error in form.username.errors %} - - {{ error }} - - {% endfor %} + {% for error in profile_form.errors.username %} + {{ error}} + {% endfor %}
- + - {% trans "Please use only letters, blanks or dashes" %} - {% for error in form.first_name.errors %} +
+ + + +
+ + + + {% for error in profile_form.email.errors %} {{ error }} @@ -69,52 +69,75 @@
- - - - {% trans "Please use only letters, blanks or dashes" %} - {% for error in form.last_name.errors %} + + + + +
+
+ +
+{% csrf_token %} + + + + - - - - + + + + - - - - + + + + - - - + + + + + +
+ + + + {% for error in password_form.old_password.errors %} {{ error }} {% endfor %} -
- - - - {% trans "emails don't match" %} - {% trans "incorrect email" %} - {% for error in form.email1.errors %} +
+ + + + {% for error in password_form.new_password1.errors %} {{ error }} {% endfor %} -
- - - - {% trans "incorrect email" %} - {% for error in form.email2.errors %} +
+ + + + {% for error in password_form.new_password2.errors %} {{ error }} {% endfor %} -
+
+ {% endblock%} + diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/templates/ldt/user/user_base.html --- a/src/ldt/ldt/user/templates/ldt/user/user_base.html Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/user/templates/ldt/user/user_base.html Wed Sep 07 17:32:29 2011 +0200 @@ -4,8 +4,8 @@ {% load i18n %} {% block css_import %} -{{ block.super }} - + {{ block.super }} + {% endblock %} diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/templates/ldt/user/user_change.html --- a/src/ldt/ldt/user/templates/ldt/user/user_change.html Mon Sep 05 10:39:07 2011 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -{% extends "ldt/ldt_base.html" %} -{# this page inherit base html, all pages of ldt inherit this page. #} -{# all contents are writed in the "iricontent" block #} -{% load i18n %} - -{% block css_import %} -{{ block.super }} - - - - -{% endblock %} - - -{% block content %} - - - - -
- {% block iricontent %}{% endblock %} -
-{% endblock%} diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/urls.py --- a/src/ldt/ldt/user/urls.py Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/user/urls.py Wed Sep 07 17:32:29 2011 +0200 @@ -3,7 +3,6 @@ urlpatterns = patterns('', url(r'^loginAjax/$', 'ldt.user.views.login_ajax'), url(r'^profile/$', 'ldt.user.views.profile'), - url(r'^language/$', 'ldt.user.views.language'), url(r'^password/$', 'ldt.user.views.password'), url(r'^logout/', 'ldt.user.views.logout_view'), # url(r'^space/ldt/$', 'ldt.ldt_utils.views.list_ldt'), diff -r 4d3a3ea5225c -r 64f24f8841ec src/ldt/ldt/user/views.py --- a/src/ldt/ldt/user/views.py Mon Sep 05 10:39:07 2011 +0200 +++ b/src/ldt/ldt/user/views.py Wed Sep 07 17:32:29 2011 +0200 @@ -1,29 +1,65 @@ from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required from django.contrib.auth.forms import PasswordChangeForm -from django.core.urlresolvers import reverse from django.http import HttpResponse, HttpResponseRedirect from django.shortcuts import render_to_response from django.template import RequestContext, loader from django.utils import simplejson from django.utils.translation import ugettext as _ -from forms import ProfileChangeForm - +from forms import ProfileForm, LanguageChangeForm +from ldt.user.models import get_or_create_profile +from django.views.i18n import set_language @login_required def profile(request): + msg = '' + user_language = get_or_create_profile(request.user).language + if request.method == "POST": - form = ProfileChangeForm(request.user, request.POST) - - if form.is_valid(): - form.save() - form = None + profile_form = ProfileForm(request.user, request.POST, instance=request.user) + language_form = LanguageChangeForm(request.user, request.POST) + password_form = PasswordChangeForm(request.user) + + #assert False, "before : %s " % request.user.username + + if profile_form.is_valid() and language_form.is_valid(): + profile_form.save() + language_form.save() + set_language(request) + msg = _("Your profile has been updated.") + user_language = get_or_create_profile(request.user).language + + + #assert False, "after: %s " % request.user.username + else: - form = ProfileChangeForm() - return render_to_response('ldt/user/change_profile.html', {'form' : form }, context_instance=RequestContext(request)) + language_form = LanguageChangeForm() + profile_form = ProfileForm(instance=request.user) + password_form = PasswordChangeForm(request.user) + return render_to_response('ldt/user/change_profile.html', {'profile_form' : profile_form, 'language_form' : language_form, 'password_form' : password_form, 'user_language' : user_language, 'msg' : msg }, context_instance=RequestContext(request)) +@login_required +def password(request): + msg = '' + user_language = get_or_create_profile(request.user).language + + if request.method == "POST": + password_form = PasswordChangeForm(request.user, request.POST) + profile_form = ProfileForm(instance=request.user) + language_form = LanguageChangeForm() + if password_form.is_valid(): + password_form.save() + msg = _("Your password has been updated.") + + else: + language_form = LanguageChangeForm() + profile_form = ProfileForm() + password_form = PasswordChangeForm(request.user) + return render_to_response('ldt/user/change_profile.html', {'profile_form' : profile_form, 'language_form' : language_form, 'password_form' : password_form, 'user_language' : user_language, 'msg' : msg }, context_instance=RequestContext(request)) + + def logout_view(request): logout(request) return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/')) @@ -50,18 +86,3 @@ return render_to_response('ldt/user/login_ajax.html', context_instance=RequestContext(request)) -@login_required -def password(request): - if request.method == "POST": - form = PasswordChangeForm(request.user, request.POST) - if form.is_valid(): - form.save() - form = None - else: - form = PasswordChangeForm(request.user) - return render_to_response('ldt/user/change_password.html', {'form': form, }, context_instance=RequestContext(request)) - - -@login_required -def language(request): - return render_to_response('ldt/user/change_language.html', { 'url_change_language' : reverse('django.views.i18n.set_language')}, context_instance=RequestContext(request)) diff -r 4d3a3ea5225c -r 64f24f8841ec web/ldtplatform/settings.py --- a/web/ldtplatform/settings.py Mon Sep 05 10:39:07 2011 +0200 +++ b/web/ldtplatform/settings.py Wed Sep 07 17:32:29 2011 +0200 @@ -87,6 +87,7 @@ 'django.middleware.locale.LocaleMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django_openid_consumer.middleware.OpenIDMiddleware', + 'ldt.ldt_utils.middleware.userprofile.LanguageMiddleware', ) TEMPLATE_CONTEXT_PROCESSORS = ( @@ -96,7 +97,7 @@ "django.core.context_processors.i18n", "django.core.context_processors.media", "django.core.context_processors.static", - "ldt.utils.context_processors.ldtcontext", + "ldt.utils.context_processors.ldt_context", ) @@ -107,9 +108,9 @@ # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". # Always use forward slashes, even on Windows. # Don't forget to use absolute paths, not relative paths. - os.path.join(os.path.basename(__file__), 'templates'), + os.path.join(os.path.basename(__file__), 'templates'), ) - + FIXTURES_DIRS = ( os.path.join(os.path.basename(__file__), 'fixtures'), ) @@ -139,6 +140,8 @@ 'south', ) +AUTH_PROFILE_MODULE = 'user.UserProfile' + DECOUPAGE_BLACKLIST = ( "de_PPP", )