# HG changeset patch # User souliane # Date 1431702940 -7200 # Node ID 0d20fb28c32e2016eed16c429d9ff93b55e72ce9 # Parent 01738ae70f2d7dcf50f05c68435ebbd10266d844 many small changes: - set opacity 0.85 to libervia screenshot on the main page - remove videos from the repository (stored on external ftp) - more details in the README concerning the i18n - settings can be overriden by an external file (for the stats) - add in basic features.html a button to experimental features - add a link to the SàT MUC in downloads section - add link to bugzilla + improve other links in dev/community - add + symbol for projects using standard blogging system - add ~ symbol for projects being no communication tool - save subscription form results to a text file - update press.py and links.py diff -r 01738ae70f2d -r 0d20fb28c32e README --- a/README Thu May 14 23:42:25 2015 +0200 +++ b/README Fri May 15 17:15:40 2015 +0200 @@ -64,6 +64,9 @@ # Subscription amounts as defined in the Rules of Procedure ASSO_SUBSCR_AMOUNTS = (0, 10, 20, 30, 50, 80, 100) + # Path the CSV file where all the subscriptions are written + ASSO_SUBSCR_CSV = "/home/souliane/sat_website_subscriptions.csv" + # Bank account information ASSO_IBAN = u"FR76 1027 8060 4300 0207 3220 109" ASSO_BIC = u"CMCIFR2A" @@ -72,6 +75,10 @@ ASSO_URL_STATUTES = 'http://repos.goffi.org/sat_docs/raw-file/tip/association/statuts.pdf' ASSO_URL_RULES = 'http://repos.goffi.org/sat_docs/raw-file/tip/association/r%C3%A8glement%20int%C3%A9rieur.pdf' + # Import another settings file that can override these settings (for example to daily update the stats when you don't want a script to directly modify this file) + from sys import path + path.append('/home/souliane') + from sat_website_external_settings import * Note that the Django application "markdown_deux" ( https://github.com/trentm/django-markdown-deux ) is required. For more information, check the local_settings.py file which is distributed in the sat_website directory. @@ -93,13 +100,19 @@ except ImportError: pass -In the project directory, enter these commands to initialise the website: +In the project directory, enter this command to initialise the website (this has to be done only once): django-admin syncdb + +If you modify some strings in the Django code, update the i18n .po files with: + django-admin makemessages -a + +After having completed your translations or after a pull from the repository, compile the .po files to their .mo equivalents (the later ones are not stored on the repository): + django-admin compilemessages -All the preceding instructions had to be done just once, now you only need to type this command (again in the project directory) whenever you want to launch the web server: +Whenever you want to launch the web server: django-admin runserver diff -r 01738ae70f2d -r 0d20fb28c32e locale/fr/LC_MESSAGES/django.po --- a/locale/fr/LC_MESSAGES/django.po Thu May 14 23:42:25 2015 +0200 +++ b/locale/fr/LC_MESSAGES/django.po Fri May 15 17:15:40 2015 +0200 @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: 0.0.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2015-05-14 22:45+0200\n" -"PO-Revision-Date: 2015-05-14 22:46+0100\n" +"POT-Creation-Date: 2015-05-15 16:58+0200\n" +"PO-Revision-Date: 2015-05-15 17:11+0100\n" "Last-Translator: Salut à Toi \n" "Language-Team: français \n" "Language: fr\n" @@ -18,51 +18,51 @@ "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Poedit 1.5.4\n" -#: sat_website/forms.py:86 +#: sat_website/forms.py:87 msgid "Identity" msgstr "Identité" -#: sat_website/forms.py:87 +#: sat_website/forms.py:88 msgid "Given name" msgstr "Prénom" -#: sat_website/forms.py:88 +#: sat_website/forms.py:89 msgid "Family name" msgstr "Nom de famille" -#: sat_website/forms.py:89 +#: sat_website/forms.py:90 msgid "Address, postal code, municipality" msgstr "Adresse, code postal, municipalité" -#: sat_website/forms.py:91 +#: sat_website/forms.py:92 msgid "Contacts" msgstr "Contacts" -#: sat_website/forms.py:92 +#: sat_website/forms.py:93 msgid "Email address" msgstr "Adresse courriel" -#: sat_website/forms.py:93 +#: sat_website/forms.py:94 msgid "Email address confirmation" msgstr "Adresse courriel (confirmation)" -#: sat_website/forms.py:94 +#: sat_website/forms.py:95 msgid "Jabber ID (for example your SàT login)" msgstr "Jabber ID (par exemple votre identifiant SàT)" -#: sat_website/forms.py:96 +#: sat_website/forms.py:97 msgid "Subscription" msgstr "Adhésion" -#: sat_website/forms.py:100 +#: sat_website/forms.py:101 msgid "Bank transfer" msgstr "Virement bancaire" -#: sat_website/forms.py:100 +#: sat_website/forms.py:101 msgid "Credit or debit card" msgstr "Carte de crédit ou de débit" -#: sat_website/forms.py:101 +#: sat_website/forms.py:102 msgid "" "Choose \"Bank transfer\" to proceed manually with the association's IBAN/BIC " "numbers. Choose \"Credit or debit card\" to pay via CB, Visa or Mastercard " @@ -74,60 +74,59 @@ "payer par CB, Visa ou Mastercard en utilisant un service bancaire sécurisé. " "Dans tous les cas, nous vous enverrons d'abord un courriel avec les détails." -#: sat_website/forms.py:103 sat_website/forms.py:104 +#: sat_website/forms.py:104 sat_website/forms.py:105 msgid "Reference" msgstr "Référence" -#: sat_website/forms.py:104 +#: sat_website/forms.py:105 msgid "Adherent number in case of a renewal" msgstr "Numéro d'adhérent en cas de renouvellement" -#: sat_website/forms.py:106 sat_website/forms.py:107 +#: sat_website/forms.py:107 sat_website/forms.py:108 msgid "Comment" msgstr "Commentaire" -#: sat_website/forms.py:109 +#: sat_website/forms.py:110 msgid "I would like to receive the newsletter." msgstr "Je souhaite recevoir la lettre d'information." -#: sat_website/forms.py:114 +#: sat_website/forms.py:115 msgid "I read the " msgstr "J'ai lu les " -#: sat_website/forms.py:115 +#: sat_website/forms.py:116 msgid "Statutes" msgstr "Statuts" -#: sat_website/forms.py:116 +#: sat_website/forms.py:117 msgid " and " msgstr " et " -#: sat_website/forms.py:117 +#: sat_website/forms.py:118 msgid "Rules" msgstr " Règlement intérieur" -#: sat_website/forms.py:118 +#: sat_website/forms.py:119 msgid " of the association, and agree to both of them." msgstr " de l'association, et les accepte tous deux." -#: sat_website/forms.py:142 +#: sat_website/forms.py:143 msgid "Passwords don't match." msgstr "Les mots de passe ne correspondent pas." -#: sat_website/forms.py:165 -#| msgid "Yes" +#: sat_website/forms.py:168 msgid "yes" msgstr "oui" -#: sat_website/forms.py:165 +#: sat_website/forms.py:168 msgid "no" msgstr "non" -#: sat_website/forms.py:177 +#: sat_website/forms.py:180 msgid "Language" msgstr "Langue" -#: sat_website/forms.py:213 +#: sat_website/forms.py:216 #, python-brace-format msgid "" "Tank you, {name}!\n" @@ -142,7 +141,7 @@ "les membres de l'association.\n" "\n" -#: sat_website/forms.py:218 +#: sat_website/forms.py:221 #, python-brace-format msgid "" "You chose to support Salut à Toi with a subscription of {amount} euros. " @@ -172,7 +171,7 @@ "https://www.apayer.fr/salut-a-toi\n" "\n" -#: sat_website/forms.py:230 +#: sat_website/forms.py:233 #, python-brace-format msgid "" "Below a copy of the information we received:\n" @@ -193,7 +192,7 @@ "Association Salut à Toi\n" "http://salut-a-toi.org" -#: sat_website/forms.py:250 +#: sat_website/forms.py:253 #, python-brace-format msgid "" "New subscription received!\n" @@ -210,76 +209,76 @@ "Un courriel a été automatiquement envoyé à {name}, aucune action n'est " "requise de votre part." -#: sat_website/forms.py:263 sat_website/forms.py:265 +#: sat_website/forms.py:272 sat_website/forms.py:274 msgid "Subscription to Salut à Toi" msgstr "Adhésion à Salut à Toi" -#: sat_website/screenshots.py:31 +#: sat_website/screenshots.py:37 msgid "Overview" msgstr "Aperçu" -#: sat_website/screenshots.py:32 sat_website/screenshots.py:34 -#: sat_website/screenshots.py:36 sat_website/screenshots.py:38 -#: sat_website/screenshots.py:40 sat_website/screenshots.py:42 -#: sat_website/screenshots.py:44 sat_website/screenshots.py:46 -#: sat_website/screenshots.py:51 sat_website/screenshots.py:61 +#: sat_website/screenshots.py:38 sat_website/screenshots.py:40 +#: sat_website/screenshots.py:42 sat_website/screenshots.py:44 +#: sat_website/screenshots.py:46 sat_website/screenshots.py:48 +#: sat_website/screenshots.py:50 sat_website/screenshots.py:52 +#: sat_website/screenshots.py:57 sat_website/screenshots.py:67 msgid "frontend" msgstr "interface" -#: sat_website/screenshots.py:32 sat_website/screenshots.py:34 -#: sat_website/screenshots.py:36 sat_website/screenshots.py:38 -#: sat_website/screenshots.py:40 sat_website/screenshots.py:42 -#: sat_website/screenshots.py:44 sat_website/screenshots.py:46 -#: sat_website/screenshots.py:51 sat_website/screenshots.py:53 -#: sat_website/screenshots.py:55 sat_website/screenshots.py:57 -#: sat_website/screenshots.py:59 sat_website/screenshots.py:61 -#: sat_website/screenshots.py:63 sat_website/screenshots.py:65 +#: sat_website/screenshots.py:38 sat_website/screenshots.py:40 +#: sat_website/screenshots.py:42 sat_website/screenshots.py:44 +#: sat_website/screenshots.py:46 sat_website/screenshots.py:48 +#: sat_website/screenshots.py:50 sat_website/screenshots.py:52 +#: sat_website/screenshots.py:57 sat_website/screenshots.py:59 +#: sat_website/screenshots.py:61 sat_website/screenshots.py:63 +#: sat_website/screenshots.py:65 sat_website/screenshots.py:67 +#: sat_website/screenshots.py:69 sat_website/screenshots.py:71 msgid "version" msgstr "version" -#: sat_website/screenshots.py:32 sat_website/screenshots.py:34 -#: sat_website/screenshots.py:36 sat_website/screenshots.py:38 -#: sat_website/screenshots.py:40 sat_website/screenshots.py:42 -#: sat_website/screenshots.py:44 sat_website/screenshots.py:46 -#: sat_website/screenshots.py:51 sat_website/screenshots.py:53 -#: sat_website/screenshots.py:55 sat_website/screenshots.py:57 -#: sat_website/screenshots.py:59 sat_website/screenshots.py:61 -#: sat_website/screenshots.py:63 sat_website/screenshots.py:65 +#: sat_website/screenshots.py:38 sat_website/screenshots.py:40 +#: sat_website/screenshots.py:42 sat_website/screenshots.py:44 +#: sat_website/screenshots.py:46 sat_website/screenshots.py:48 +#: sat_website/screenshots.py:50 sat_website/screenshots.py:52 +#: sat_website/screenshots.py:57 sat_website/screenshots.py:59 +#: sat_website/screenshots.py:61 sat_website/screenshots.py:63 +#: sat_website/screenshots.py:65 sat_website/screenshots.py:67 +#: sat_website/screenshots.py:69 sat_website/screenshots.py:71 msgid "year" msgstr "année" -#: sat_website/screenshots.py:33 +#: sat_website/screenshots.py:39 msgid "Optional security check" msgstr "Vérification de sécurité (optionnelle)" -#: sat_website/screenshots.py:35 +#: sat_website/screenshots.py:41 msgid "Rich text editor" msgstr "Éditeur de texte riche" -#: sat_website/screenshots.py:37 +#: sat_website/screenshots.py:43 msgid "Demo of the new Libervia UI, and of the collective radio feature" msgstr "Démo de la nouvelle interface de Libervia, et de la radio collective" -#: sat_website/screenshots.py:38 sat_website/screenshots.py:46 -#: sat_website/screenshots.py:53 sat_website/screenshots.py:55 -#: sat_website/screenshots.py:57 sat_website/screenshots.py:63 -#: sat_website/screenshots.py:65 +#: sat_website/screenshots.py:44 sat_website/screenshots.py:52 +#: sat_website/screenshots.py:59 sat_website/screenshots.py:61 +#: sat_website/screenshots.py:63 sat_website/screenshots.py:69 +#: sat_website/screenshots.py:71 msgid "language" msgstr "langue" -#: sat_website/screenshots.py:39 +#: sat_website/screenshots.py:45 msgid "Libervia's login page" msgstr "Page d'identification de Libervia" -#: sat_website/screenshots.py:41 templates/sat_website/frontends.html:34 +#: sat_website/screenshots.py:47 templates/sat_website/frontends.html:34 msgid "Libervia's main view" msgstr "Vue principale de Libervia" -#: sat_website/screenshots.py:43 +#: sat_website/screenshots.py:49 msgid "Wix showing a french Tarot play" msgstr "Wix montrant un jeu de tarot" -#: sat_website/screenshots.py:45 +#: sat_website/screenshots.py:51 msgid "" "This video focuses on Libervia. The UI is really outdated, but we can see " "some features" @@ -287,43 +286,43 @@ "Cette vidéo se concentre sur Libervia. C'est une vieille interface, mais on " "peut voir quelques fonctionnalités" -#: sat_website/screenshots.py:50 +#: sat_website/screenshots.py:56 msgid "Server administration from the web frontend Libervia." msgstr "Administration du serveur depuis l'interface web Libervia." -#: sat_website/screenshots.py:52 +#: sat_website/screenshots.py:58 msgid "Use ad-hoc commands to control a VLC player from Libervia" msgstr "" "Utilisation des commandes ad-hoc pour contrôler un lecteur VLC depuis " "Libervia" -#: sat_website/screenshots.py:54 +#: sat_website/screenshots.py:60 msgid "Exporting a command: an FTP client is exported to a Gajim contact" msgstr "" "Export de commande: un client FTP est exporté à un contact utilisant Gajim" -#: sat_website/screenshots.py:56 +#: sat_website/screenshots.py:62 msgid "How to copy and pipe streams over XMPP" msgstr "Comment copier et transférer des flux de tubes (pipes) via XMPP" -#: sat_website/screenshots.py:58 +#: sat_website/screenshots.py:64 msgid "Cowsay sent in conversation through jp" msgstr "« Cowsay » envoyé dans une discussion via jp" -#: sat_website/screenshots.py:60 templates/sat_website/frontends.html:41 +#: sat_website/screenshots.py:66 templates/sat_website/frontends.html:41 msgid "Primitivus showing a french Tarot play" msgstr "Primitivus montrant un jeu de tarot" -#: sat_website/screenshots.py:62 +#: sat_website/screenshots.py:68 msgid "This video shows french Tarot game, and how to use Thunderbird with SàT" msgstr "" "Cette vidéo montre un jeu de tarot, et comment utiliser Thunderbird avec SàT" -#: sat_website/screenshots.py:64 +#: sat_website/screenshots.py:70 msgid "The first video shows wix, primitivus and jp" msgstr "La première vidéo montre Wix, Primitivus et Jp" -#: sat_website/templatetags/utils.py:83 +#: sat_website/templatetags/utils.py:82 msgid ": " msgstr " : " @@ -336,7 +335,7 @@ msgstr "Fonctionnalités" #: sat_website/views.py:33 templates/sat_website/overview.html:77 -#: templates/sat_website/principles.html:59 +#: templates/sat_website/principles.html:60 msgid "Frontends" msgstr "Interfaces" @@ -352,8 +351,7 @@ msgid "Principles" msgstr "Principes" -#: sat_website/views.py:38 templates/sat_website/features.html:91 -#: templates/sat_website/principles.html:45 +#: sat_website/views.py:38 templates/sat_website/principles.html:46 msgid "Specifications" msgstr "Spécifications" @@ -382,7 +380,7 @@ msgid "Links" msgstr "Liens" -#: sat_website/views.py:46 +#: sat_website/views.py:46 templates/sat_website/press.html:27 msgid "Press" msgstr "Presse" @@ -393,7 +391,7 @@ #: sat_website/views.py:51 templates/sat_website/features.html:76 #: templates/sat_website/overview.html:85 -#: templates/sat_website/principles.html:73 +#: templates/sat_website/principles.html:74 msgid "Social contract" msgstr "Contrat social" @@ -673,20 +671,25 @@ #: templates/sat_website/community.html:45 #, python-format +#| msgid "" +#| "You can subscribe to the mailing list to follow the progression, you're " +#| "welcome to give your opinion (and to contribute): %(mailing_list)s" msgid "" -"You can subscribe to the mailing list to follow the progression, you're " -"welcome to give your opinion (and to contribute): %(mailing_list)s" +"You can subscribe to the users mailing list to follow the progression, " +"you're also welcome to give your opinion (and to contribute): " +"%(mailing_list)s" msgstr "" -"vous pouvez vous inscrire à la liste de diffusion pour suivre l'évolution, " -"vous êtes encouragés à donner votre avis (et à contribuer): %(mailing_list)s" +"Vous pouvez vous inscrire à la liste de diffusion « utilisateurs » pour " +"suivre l'évolution, vous êtes aussi encouragés à donner votre avis (et à " +"contribuer) : %(mailing_list)s" #: templates/sat_website/community.html:46 #, python-format -msgid "" -"You'll find user documentation and more technical one on the wiki: %(wiki)s" -msgstr "" -"Vous trouverez les documentations utilisateur et technique sur le wiki: " -"%(wiki)s" +#| msgid "" +#| "You'll find user documentation and more technical one on the wiki: " +#| "%(wiki)s" +msgid "You'll find some user documentation on the wiki: %(wiki)s" +msgstr "Vous trouverez les documentations utilisateur sur le wiki: %(wiki)s" #: templates/sat_website/community.html:53 msgid "Participate !" @@ -713,19 +716,33 @@ msgstr "Quelques informations sur comment aider le développement" #: templates/sat_website/developers.html:32 -msgid "Get the source" -msgstr "Avoir les sources" +msgid "Report a bug" +msgstr "Rapporter un bug" #: templates/sat_website/developers.html:35 #, python-format +msgid "If you found a bug, please report it to our Bugzilla: %(bugzilla)s" +msgstr "" +"Si vous pensez avoir trouvé un bogue, merci de bien vouloir faire un rapport " +"sur notre Bugzilla : %(bugzilla)s" + +#: templates/sat_website/developers.html:41 +msgid "Get the source" +msgstr "Avoir les sources" + +#: templates/sat_website/developers.html:44 +#, python-format +#| msgid "" +#| "You'll find the mercurial repository of SàT on %(repos_sat)s, satellite " +#| "project are also available on %(repos)s" msgid "" "You'll find the mercurial repository of SàT on %(repos_sat)s, satellite " -"project are also available on %(repos)s" +"projects are also available on %(repos)s" msgstr "" -"Vous trouvez le dépôt mercurial de SàT sur %(repos_sat)s, les projets " +"Vous trouverez le dépôt mercurial de SàT sur %(repos_sat)s, les projets " "satellites sont aussi disponibles sur %(repos)s" -#: templates/sat_website/developers.html:36 +#: templates/sat_website/developers.html:45 #, python-format msgid "" "To clone the repository, use %(mercurial)s: hg clone http://repos." @@ -736,43 +753,53 @@ "goffi.org/sat. Regardez sur le wiki (voir ci-dessous) pour les " "instructions d'installation" -#: templates/sat_website/developers.html:42 +#: templates/sat_website/developers.html:51 msgid "Documentation" msgstr "Documentation" -#: templates/sat_website/developers.html:45 -#, python-format -msgid "" -"The documentation is available on the wiki: %(wiki)s (don't hesitate to " -"improve it)" -msgstr "" -"La documentation est disponible sur le wiki: %(wiki)s (n'hésitez pas à " -"l'améliorer)" - -#: templates/sat_website/developers.html:46 +#: templates/sat_website/developers.html:54 #, python-format -msgid "You'll also find a dedicated page for developers: %(developers_page)s" +#| msgid "" +#| "The documentation is available on the wiki: %(wiki)s (don't hesitate to " +#| "improve it)" +msgid "" +"The documentation is available on the wiki (feel free to improve it): " +"%(wiki)s" msgstr "" -"Vous trouverez aussi une page dédiée au développeurs: %(developers_page)s" +"La documentation est disponible sur le wiki (n'hésitez pas à l'améliorer) : " +"%(wiki)s" -#: templates/sat_website/developers.html:47 +#: templates/sat_website/developers.html:55 #, python-format -msgid "If you need help, you can also check the mailing list: %(mailing_list)s" +#| msgid "" +#| "You'll also find a dedicated page for developers: %(developers_page)s" +msgid "" +"You'll also find a dedicated section for developers: %(developers_page)s" msgstr "" -"Si vous avez besoin d'aide, vous pouvez aussi utiliser la liste de " -"diffusion: %(mailing_list)s" +"Vous trouverez aussi une section dédiée au développeurs : %(developers_page)s" -#: templates/sat_website/developers.html:54 +#: templates/sat_website/developers.html:62 msgid "Contact" msgstr "Contact" -#: templates/sat_website/developers.html:57 +#: templates/sat_website/developers.html:65 #, python-format msgid "The best way to join us is on SàT's Jabber room: %(sat_muc)s" msgstr "" "La meilleure façon de nous joindre est sur le salon Jabber de SàT: " "%(sat_muc)s" +#: templates/sat_website/developers.html:66 +#, python-format +#| msgid "" +#| "If you need help, you can also check the mailing list: %(mailing_list)s" +msgid "" +"If you need help, you can also write to our dev mailing list: " +"%(mailing_list)s" +msgstr "" +"Si vous avez besoin d'aide, vous pouvez aussi écrire sur la liste de " +"diffusion « dev » : %(mailing_list)s" + #: templates/sat_website/downloads.html:28 msgid "The archives containing the source code" msgstr "Les archives du code source" @@ -829,6 +856,13 @@ "suffit d'extraire l'archive quelque part), la procédure est décrite dans le " "fichier INSTALL que vous trouverez dans l'archive." +#: templates/sat_website/downloads.html:57 +#, python-format +msgid "You are also welcome in our multi-user chat room: %(sat_muc)s." +msgstr "" +"Vous êtes aussi le/la bienvenu(e) dans notre salon de discussion : " +"%(sat_muc)s." + #: templates/sat_website/downloads.html:61 msgid "Other sources of installation" msgstr "Autres sources d'installation" @@ -1002,6 +1036,17 @@ "Pour une liste complète des fonctionnalités implantées par SàT, merci de " "visiter l'espace technique." +#: templates/sat_website/features.html:91 +#: templates/sat_website/specifications.html:36 +msgid "Standard extensions" +msgstr "Extensions standardes" + +#: templates/sat_website/features.html:92 +#: templates/sat_website/specifications.html:49 +#| msgid "Experimental and non-standard features" +msgid "Experimental and/or non-standard features" +msgstr "Fonctionnalités expérimentales et/ou non standardes" + #: templates/sat_website/finance.html:24 #, python-format msgid "%(members_actual)s members" @@ -1105,34 +1150,10 @@ "jour, par ex. avec le dernier %(firefox)s" #: templates/sat_website/links.html:27 -msgid "Links and friendly projects" -msgstr "Liens et projets amis" - -#: templates/sat_website/links.html:32 -msgid "Comparable projects" -msgstr "Projets comparables" - -#: templates/sat_website/links.html:35 -msgid "" -"The following projects have something in common with SàT: we all believe " -"that the combination of free software and decentralisation is the answer to " -"many issues. The projects that are using the same network as SàT are " -"signaled with a * symbol. It means that you can use the same account " -"with all of them. It doesn't mean that the compatibility with the the other " -"projects could not be achieved, but it's not built-in." -msgstr "" -"Les projets suivants ont quelque chose en commun avec SàT : nous pensons " -"tous que les logiciels libres et la décentralisation sont la solution à " -"plusieurs problèmes. Les projets qui utilisent le même réseau que SàT sont " -"signalés avec le symbole *. Cela signifie que vous pouvez utiliser le " -"même compte avec chacun d'entre eux. La compatibilité avec les autres " -"projets n'est pas directe mais peut être atteinte à l'aide de passerelles." - -#: templates/sat_website/links.html:64 msgid "Other projects" msgstr "Autres projets" -#: templates/sat_website/links.html:67 +#: templates/sat_website/links.html:30 #, python-format msgid "" "We use - and sometimes contribute -, take ideas and inspiration from many " @@ -1146,6 +1167,67 @@ "merci de consulter la section \"crédits\" du fichier %(readme_prefix)sREADME" "%(readme_suffix)s de SàT." +#: templates/sat_website/links.html:34 +#| msgid "Decentralised" +msgid "Decentralised and standard" +msgstr "Décentralisé et standard" + +#: templates/sat_website/links.html:36 +msgid "" +"You can use your the same account between SàT and any of these projects:" +msgstr "" +"Vous pouvez utiliser le même compte entre SàT et n'importe lequel de ces " +"projets :" + +#: templates/sat_website/links.html:48 +msgid "non-standard blogging" +msgstr "blogage non standard" + +#: templates/sat_website/links.html:51 +msgid "chat only" +msgstr "messagerie instantanée seulement" + +#: templates/sat_website/links.html:58 +#| msgid "Experimental and non-standard features" +msgid "Decentralised and/or non-standard" +msgstr "Décentralisé et/ou non standard" + +#: templates/sat_website/links.html:60 +msgid "" +"Compatibility between SàT and these projects could be achieved, but it's not " +"built-in:" +msgstr "" +"La compatibilité entre SàT et ces projets n'est pas directe, mais elle peut " +"être atteinte :" + +#: templates/sat_website/links.html:75 +msgid "centralised micro-blogging" +msgstr "microblogage centralisé" + +#: templates/sat_website/links.html:82 +#| msgid "Other projects" +msgid "Other IT projects" +msgstr "Autres projets informatiques" + +#: templates/sat_website/links.html:92 +#| msgid "Statutes of the association" +msgid "software to manage an association" +msgstr "logiciel pour gérer une association" + +#: templates/sat_website/links.html:99 +#| msgid "Other projects" +msgid "Non IT projects" +msgstr "Autres projets divers" + +#: templates/sat_website/links.html:103 +msgid "French association to promote free software accessibility" +msgstr "" +"Association française pour promouvoir l'accessibilité des logiciels libres" + +#: templates/sat_website/links.html:106 +msgid "cultural association based in Austria" +msgstr "association culturelle basée en Autriche" + #: templates/sat_website/overview.html:36 msgid "Salut à Toi" msgstr "Salut à Toi" @@ -1171,7 +1253,7 @@ msgstr "Vue principale de Libervia" #: templates/sat_website/overview.html:57 -#: templates/sat_website/principles.html:35 +#: templates/sat_website/principles.html:36 msgid "Multipurpose" msgstr "Multi-usages" @@ -1216,7 +1298,7 @@ "partage de fichier, jeux, interaction avec d'autres réseaux et beaucoup plus." #: templates/sat_website/overview.html:69 -#: templates/sat_website/principles.html:51 +#: templates/sat_website/principles.html:52 msgid "Multi frontend" msgstr "Multi-interfaces" @@ -1246,7 +1328,7 @@ msgstr "D'autres interfaces sont prévues (téléphones, bureau)." #: templates/sat_website/overview.html:83 -#: templates/sat_website/principles.html:65 +#: templates/sat_website/principles.html:66 msgid "Libre" msgstr "Libre" @@ -1262,7 +1344,7 @@ "logiciels, mais aussi (et surtout) pour l'esprit de partage et de liberté." #: templates/sat_website/overview.html:88 -#: templates/sat_website/principles.html:79 +#: templates/sat_website/principles.html:80 msgid "Decentralised" msgstr "Décentralisé" @@ -1321,55 +1403,88 @@ "Notre but n'est pas d'héberger tous les comptes sur notre serveur... on ne " "veut pas de vos données, gardez-les !" -#: templates/sat_website/press.html:27 -msgid "Press files" -msgstr "Dossier de presse" +#: templates/sat_website/press.html:33 +msgid "Articles" +msgstr "" -#: templates/sat_website/press.html:32 -msgid "They write about it" -msgstr "Articles" - -#: templates/sat_website/press.html:36 templates/sat_website/press.html:39 +#: templates/sat_website/press.html:37 templates/sat_website/press.html:40 #, python-format msgid "%(author)s for %(magazine)s" msgstr "%(author)s pour %(magazine)s" -#: templates/sat_website/press.html:36 templates/sat_website/press.html:48 -#: templates/sat_website/press.html:51 templates/sat_website/press.html:54 -#: templates/sat_website/press.html:57 +#: templates/sat_website/press.html:37 templates/sat_website/press.html:43 +#: templates/sat_website/press.html:46 templates/sat_website/press.html:60 +#: templates/sat_website/press.html:63 templates/sat_website/press.html:76 +#: templates/sat_website/press.html:77 templates/sat_website/press.html:83 +#: templates/sat_website/press.html:84 templates/sat_website/press.html:85 +#: templates/sat_website/press.html:93 templates/sat_website/press.html:101 +#: templates/sat_website/press.html:109 templates/sat_website/press.html:110 msgid "French" msgstr "Français" -#: templates/sat_website/press.html:39 +#: templates/sat_website/press.html:40 msgid "German" msgstr "Allemand" -#: templates/sat_website/press.html:44 -msgid "We talk about it" -msgstr "Conférences" +#: templates/sat_website/press.html:46 +#, python-format +#| msgid "%(author)s for %(magazine)s" +msgid "%(magazine)s" +msgstr "%(magazine)s" -#: templates/sat_website/press.html:48 -#, python-format -msgid "%(author)s at the 15th Libre Software Meeting, Montpellier, 2014:" -msgstr "" -"%(author)s aux 15èmes Rencontres Mondiales du Logiciel Libre, Montpellier, " -"2014 :" +#: templates/sat_website/press.html:46 +#| msgid "Subscription to Salut à Toi" +msgid "articles about Salut à Toi" +msgstr "articles sur Salut à Toi" #: templates/sat_website/press.html:51 #, python-format -msgid "%(author)s at Pas Sage en Seine #6, Paris, 2014:" -msgstr "%(author)s à Pas Sage en Seine #6, Paris, 2014:" +msgid "" +"If you want to write an article about Salut à Toi, we would be please to " +"answer your questions. Please send them to %(email)s" +msgstr "" +"Si vous souhaitez écrire un article sur Salut à Toi, nous répondrons à vos " +"questions avec plaisir. Merci de les adresser à %(email)s" -#: templates/sat_website/press.html:54 -#, python-format -msgid "%(author)s at the 13th Libre Software Meeting, Genève, 2012:" +#: templates/sat_website/press.html:56 +msgid "Radio" msgstr "" -"%(author)s aux 13èmes Rencontres Mondiales du Logiciel Libre, Genève, 2012 :" + +#: templates/sat_website/press.html:69 +#| msgid "Reference" +msgid "Conferences" +msgstr "Conférences" + +#: templates/sat_website/press.html:76 templates/sat_website/press.html:109 +#| msgid "Software Version" +msgid "Libre Software Meeting" +msgstr "Rencontres Mondiales du Logiciel Libre" + +#: templates/sat_website/press.html:76 templates/sat_website/press.html:77 +#: templates/sat_website/press.html:101 templates/sat_website/press.html:109 +msgid "video" +msgstr "vidéo" -#: templates/sat_website/press.html:57 +#: templates/sat_website/press.html:77 +msgid "part" +msgstr "partie" + +#: templates/sat_website/press.html:118 +msgid "Bruxelles" +msgstr "" + +#: templates/sat_website/press.html:118 +msgid "English" +msgstr "anglais" + +#: templates/sat_website/press.html:125 #, python-format -msgid "%(author)s at the 15th Journées du Logiciel Libre, Lyon, 2012:" -msgstr "%(author)s aux 15èmes Journées du Logiciel Libre, Lyon, 2012 :" +msgid "" +"If you think that we could bring something interesting to an event " +"(conference, stand...), feel free to write to %(email)s" +msgstr "" +"Si vous pensez que nous pourrions apporter quelque chose à un événement " +"(conférence, stand...), n'hésitez pas à nous écrire à %(email)s" #: templates/sat_website/principles.html:27 msgid "Some technical words to explain the project." @@ -1384,7 +1499,7 @@ "usages, multi-interfaces, libre et décentralisé... voici quelques " "explications." -#: templates/sat_website/principles.html:39 +#: templates/sat_website/principles.html:40 #, python-format msgid "" "\n" @@ -1412,7 +1527,7 @@ "l'état actuel du projet.\n" "\t " -#: templates/sat_website/principles.html:55 +#: templates/sat_website/principles.html:56 msgid "" "\n" "\t SàT has been developped since the beginning with an idea in mind: it " @@ -1434,7 +1549,7 @@ "bien développer une nouvelle interface : n'hésitez pas à nous contacter !\n" "\t " -#: templates/sat_website/principles.html:69 +#: templates/sat_website/principles.html:70 msgid "" "\n" "\t We exclusively use and developp free and open-source software. It is " @@ -1453,8 +1568,18 @@ "l'utilisateur) qui est aussi mentionné dans les statuts de l'association.\n" "\t " -#: templates/sat_website/principles.html:83 +#: templates/sat_website/principles.html:84 #, python-format +#| msgid "" +#| "\n" +#| "\t\t This is the most complicated aspect to understand, yet a crucial " +#| "one. Being based on %(xmpp)s, SàT is immediately decentralised " +#| "(federated). But what does it mean? To get this point, we need to imagine " +#| "the Internet as a set of layers. To make it easier, let's say there are " +#| "only two layers: the physical and the logical one. On the physical layer, " +#| "you are directly connected to your %(isp)s, and indirectly to all the " +#| "rest of the world.\n" +#| "\t\t " msgid "" "\n" "\t\t This is the most complicated aspect to understand, yet a crucial " @@ -1462,7 +1587,8 @@ "But what does it mean? To get this point, we need to imagine the Internet as " "a set of layers. To make it easier, let's say there are only two layers: the " "physical and the logical one. On the physical layer, you are directly " -"connected to your %(isp)s, and indirectly to all the rest of the world.\n" +"connected to your service provider, and indirectly to all the rest of the " +"world.\n" "\t\t " msgstr "" "\n" @@ -1471,11 +1597,11 @@ "qu'est-ce que cela signifie ? Pour le comprendre, on peut imaginer Internet " "comme étant composé d'une série de couche. Pour simplifier, disons qu'il n'y " "a que deux couches : une physique et une logique. Dans la couche physique, " -"vous êtes directement connecté à votre %(isp)s, et indirectement connecté au " -"reste du monde.\n" +"vous êtes directement connecté à votre fournisseur d'accès, et indirectement " +"connecté au reste du monde.\n" "\t\t " -#: templates/sat_website/principles.html:89 +#: templates/sat_website/principles.html:90 msgid "" "The dots represents Internet users, the lines represents physical links - " "server-to-server links for the central triangle, client-to-server links for " @@ -1485,24 +1611,31 @@ "les connexions physiques (serveur-serveur pour le triangle central, client-" "serveur pour le reste)." -#: templates/sat_website/principles.html:94 +#: templates/sat_website/principles.html:95 +#| msgid "" +#| "\n" +#| "\t\t On the logical layer, you are directly connected to your favorite " +#| "social network, and since it's centralised, all its users are directly " +#| "connected to it: it can access and own all the data, it can unilaterally " +#| "decide to censor or exclude a user... it has too much power.\n" +#| "\t " msgid "" "\n" -"\t\t On the logical layer, you are directly connected to your favorite " -"social network, and since it's centralised, all its users are directly " +"\t\t On the logical layer, you are directly connected to your usual " +"\"social network\", and since it's centralised, all its users are directly " "connected to it: it can access and own all the data, it can unilaterally " "decide to censor or exclude a user... it has too much power.\n" "\t " msgstr "" "\n" -"\t\t Dans la couche logique, vous êtes directement connectés à votre " -"réseau social préféré, et comme il est centralisé, tous ses utilisateurs " +"\t\t Dans la couche logique, vous êtes directement connectés à votre « " +"réseau social » habituel, et comme il est centralisé, tous ses utilisateurs " "sont aussi directement connectés à lui : il accède et possède toutes les " "informations, il peut décider unilatéralement de censurer ou d'exclure un " "utilisateur... il a trop de pouvoir.\n" "\t " -#: templates/sat_website/principles.html:100 +#: templates/sat_website/principles.html:101 msgid "" "Centralised communication system on top of the physical layer - note that " "one user on the right who refuses to use such a system." @@ -1510,10 +1643,21 @@ "Système de communication centralisé par dessus la couche physique (remarquez " "l'utilisateur à droite qui refuse d'utiliser un tel système)." -#: templates/sat_website/principles.html:105 +#: templates/sat_website/principles.html:106 +#| msgid "" +#| "\n" +#| "\t\t Now what if your favorite social network is decentralised? The " +#| "main difference is that there's not a single entity to manage all the " +#| "connections and all the data, but a lot of them.\n" +#| "\t All the users are connected to the same network, but each of " +#| "them can decide which server they want to connect to. As a result, the " +#| "data and the network administration's tasks are shared between all the " +#| "servers. Is it possible to do that on the Internet? Yes, this is how the " +#| "Email works! That's decentralisation.\n" +#| "\t\t " msgid "" "\n" -"\t\t Now what if your favorite social network is decentralised? The main " +"\t\t Now what if your usual \"social network\" is decentralised? The main " "difference is that there's not a single entity to manage all the connections " "and all the data, but a lot of them.\n" "\t All the users are connected to the same network, but each of them " @@ -1524,7 +1668,7 @@ "\t\t " msgstr "" "\n" -"\t\t Mais que se passe t'il si votre réseau social préféré est " +"\t\t Mais que se passe t'il si votre « réseau social » habituel est " "décentralisé ? La différence principale est qu'il n'y a pas d'entité unique " "pour gérer toutes les connexions et toutes les informations, mais " "plusieurs.\n" @@ -1536,7 +1680,7 @@ "décentralisation.\n" "\t\t " -#: templates/sat_website/principles.html:112 +#: templates/sat_website/principles.html:113 msgid "" "Decentralised communication system on top the physical layer - the user on " "the right is still resisting." @@ -1544,7 +1688,7 @@ "Système de communication décentralisé par dessus la couche physique " "(l'utilisateur à droite résiste toujours)." -#: templates/sat_website/principles.html:117 +#: templates/sat_website/principles.html:118 #, python-format msgid "" "\n" @@ -1566,7 +1710,7 @@ "de %(xmpp)s qui permet cela).\n" "\t\t " -#: templates/sat_website/principles.html:123 +#: templates/sat_website/principles.html:124 msgid "" "Decentralised communication system with self-hosting ability - the dot on " "the right is still an Internet user, but for the service it's both a user " @@ -1576,7 +1720,7 @@ "(l'utilisateur à droite est toujours un utilisateur d'Internet, mais pour le " "service il est à la fois utilisateur et serveur)." -#: templates/sat_website/principles.html:128 +#: templates/sat_website/principles.html:129 #, python-format msgid "" "\n" @@ -1599,7 +1743,7 @@ "détails !\n" "\t\t " -#: templates/sat_website/principles.html:133 +#: templates/sat_website/principles.html:134 #, python-format msgid "" "\n" @@ -1617,11 +1761,11 @@ "bon début.\n" "\t\t\t" -#: templates/sat_website/principles.html:142 +#: templates/sat_website/principles.html:143 msgid "Standard" msgstr "Standard" -#: templates/sat_website/principles.html:146 +#: templates/sat_website/principles.html:147 #, python-format msgid "" "Using a standard protocol is a key point: it's robust, widely used, tested " @@ -1634,7 +1778,7 @@ "publiquement, il y a des débats pour faire les choses de la meilleure façon, " "et la %(xsf)s est la garante de l'évolution et de la stabilité du protocole." -#: templates/sat_website/principles.html:149 +#: templates/sat_website/principles.html:150 #, python-format msgid "" "\n" @@ -1654,11 +1798,11 @@ "leurs utilisateurs. Ouvrez vos frontières !\n" "\t" -#: templates/sat_website/principles.html:158 +#: templates/sat_website/principles.html:159 msgid "Multiplatform" msgstr "Multiplate-forme" -#: templates/sat_website/principles.html:162 +#: templates/sat_website/principles.html:163 msgid "" "Since its begining, the SàT project was made with other platforms in mind. " "It's only avaible on GNU/Linux so far (except of course Libervia, the web " @@ -1720,10 +1864,6 @@ "présence et des messages, nous implantons plusieurs extensions standardes " "ainsi que des fonctionnalités internes." -#: templates/sat_website/specifications.html:36 -msgid "Standard extensions" -msgstr "Extensions standardes" - #: templates/sat_website/specifications.html:39 #, python-format msgid "" @@ -1734,28 +1874,31 @@ "aimerions en supporter autant que possible. Pour l'instant, SàT implante les " "suivantes :" -#: templates/sat_website/specifications.html:48 -msgid "Experimental and non-standard features" -msgstr "Fonctionnalités expérimentales et non standardes" - -#: templates/sat_website/specifications.html:51 +#: templates/sat_website/specifications.html:52 +#| msgid "" +#| "This table lists the non-standard features. Some of them can't be " +#| "standardised because they are too specific, some others might become new " +#| "standards in the future." msgid "" -"This table lists the non-standard features. Some of them can't be " -"standardised because they are too specific, some others might become new " -"standards in the future." +"Some of these features can't be standardised because they are too specific, " +"some others might become new standards in the future." msgstr "" -"Ce tableau liste les fonctionnalités non standardes. Certaines ne peuvent " -"être standardisées parce qu'elles sont trop spécifiques, d'autres pourraient " -"devenir de nouveaux standards dans le futur." +"Certaines de ces fonctionnalités ne peuvent être standardisées parce " +"qu'elles sont trop spécifiques, d'autres pourraient devenir de nouveaux " +"standards dans le futur." #: templates/sat_website/specifications_exp.html:33 +#| msgctxt "Url need to point to the localised one" +#| msgid "" +#| "Ad-Hoc commands" msgctxt "Url need to point to the localised one" msgid "" "Ad-Hoc commands" +"softwares\" target=\"#\">Universal remote control" msgstr "" "Commandes ad-hoc" +"pour-vos-logiciels\" target=\"#\">Télécommande universelle" #: templates/sat_website/specifications_exp.html:34 msgid "" @@ -2090,6 +2233,53 @@ "Merci de le lire attentivement, il contient les informations pour compléter " "votre adhésion." +#~ msgid "Links and friendly projects" +#~ msgstr "Liens et projets amis" + +#~ msgid "Comparable projects" +#~ msgstr "Projets comparables" + +#~ msgid "" +#~ "The following projects have something in common with SàT: we all believe " +#~ "that the combination of free software and decentralisation is the answer " +#~ "to many issues. The projects that are using the same network as SàT are " +#~ "signaled with a * symbol. It means that you can use the same " +#~ "account with all of them. It doesn't mean that the compatibility with the " +#~ "the other projects could not be achieved, but it's not built-in." +#~ msgstr "" +#~ "Les projets suivants ont quelque chose en commun avec SàT : nous pensons " +#~ "tous que les logiciels libres et la décentralisation sont la solution à " +#~ "plusieurs problèmes. Les projets qui utilisent le même réseau que SàT " +#~ "sont signalés avec le symbole *. Cela signifie que vous pouvez " +#~ "utiliser le même compte avec chacun d'entre eux. La compatibilité avec " +#~ "les autres projets n'est pas directe mais peut être atteinte à l'aide de " +#~ "passerelles." + +#~ msgid "Press files" +#~ msgstr "Dossier de presse" + +#~ msgid "They write about it" +#~ msgstr "Articles" + +#~ msgid "We talk about it" +#~ msgstr "Conférences" + +#~ msgid "%(author)s at the 15th Libre Software Meeting, Montpellier, 2014:" +#~ msgstr "" +#~ "%(author)s aux 15èmes Rencontres Mondiales du Logiciel Libre, " +#~ "Montpellier, 2014 :" + +#~ msgid "%(author)s at Pas Sage en Seine #6, Paris, 2014:" +#~ msgstr "%(author)s à Pas Sage en Seine #6, Paris, 2014:" + +#~ msgid "%(author)s at the 13th Libre Software Meeting, Genève, 2012:" +#~ msgstr "" +#~ "%(author)s aux 13èmes Rencontres Mondiales du Logiciel Libre, Genève, " +#~ "2012 :" + +#~ msgid "%(author)s at the 15th Journées du Logiciel Libre, Lyon, 2012:" +#~ msgstr "%(author)s aux 15èmes Journées du Logiciel Libre, Lyon, 2012 :" + #~ msgid "No" #~ msgstr "non" diff -r 01738ae70f2d -r 0d20fb28c32e sat_website/forms.py --- a/sat_website/forms.py Thu May 14 23:42:25 2015 +0200 +++ b/sat_website/forms.py Fri May 15 17:15:40 2015 +0200 @@ -28,6 +28,7 @@ from django.conf import settings from collections import OrderedDict from email import email +import unicodecsv import utils import re @@ -146,8 +147,8 @@ def results(self, user_readable=True): """Get the results submitted by the user as a list. - Keep the pertinent fields and filter out the inappropriate ones. - @param user_readable: (bool) set to True to prefer the field labels to their names + @param user_readable: (bool) set to True to prefer the fields' labels + to their names, also filter out the empty fields. @return: list of couple (name, value) or (label, value) """ if not self.is_valid(): @@ -155,11 +156,13 @@ results = [] for field in self: if isinstance(field.field, Section): - continue - if field.name in ('email_confirmation', 'agreement_confirmation') or not field.value(): - continue - if field.name == "payment_method" and self['subscription_amount'].value() == "0": - continue + continue # filter out section fields + if field.name in ('email_confirmation', 'agreement_confirmation'): + continue # filter out confirmation fields + if user_readable and not field.value(): + continue # filter out empty value + if user_readable and field.name == "payment_method" and self['subscription_amount'].value() == "0": + continue # filter out fields that are not pertinent for the user key = field.name if isinstance(field.field, BooleanField) and user_readable: value = ugettext(u"yes") if field.value() else ugettext(u"no") @@ -255,6 +258,12 @@ return MSG.format(**data) + def writeResultToCSV(self): + result = [unicode(value) for key, value in self.results(False)] + with open(settings.ASSO_SUBSCR_CSV, 'a+') as csvfile: + writer = unicodecsv.UnicodeWriter(csvfile, delimiter=';') + writer.writerow(result) + def process_submitted_data(self): """Send emails to the subscriber and the admins.""" if not self.is_valid(): @@ -263,3 +272,5 @@ send_mail(_(u'Subscription to Salut à Toi'), self.prepareResultForUser(), settings.EMAIL_BACKEND, [self['email'].value()], fail_silently=False) # send email to admins send_mail(_(u'Subscription to Salut à Toi'), self.prepareResultForAdmin(), settings.EMAIL_BACKEND, [email for name, email in settings.ADMINS], fail_silently=False) + # save to a CSV file + self.writeResultToCSV() diff -r 01738ae70f2d -r 0d20fb28c32e sat_website/local_settings.py --- a/sat_website/local_settings.py Thu May 14 23:42:25 2015 +0200 +++ b/sat_website/local_settings.py Fri May 15 17:15:40 2015 +0200 @@ -114,7 +114,7 @@ PROJECTS_EXTERNAL_URL = 'ftp://ftp.goffi.org' # Internal path to the the projects archives directory -PROJECTS_INTERNAL_PATH = '/var/www/projects' +PROJECTS_INTERNAL_PATH = '/srv/ftp' # List of couples with the project directory name and the project name (set to None if it's the same) PROJECTS_NAMES = [('sat', None), ('sat_media', None), ('urwid-satext', 'urwid_satext'), ('sat_pubsub', None), ('libervia', None)] @@ -136,6 +136,9 @@ # Subscription amounts as defined in the Rules of Procedure ASSO_SUBSCR_AMOUNTS = (0, 10, 20, 30, 50, 80, 100) +# Path the CSV file where all the subscriptions are written +ASSO_SUBSCR_CSV = "/home/souliane/sat_website_subscriptions.csv" + # Bank account information ASSO_IBAN = u"FR76 1027 8060 4300 0207 3220 109" ASSO_BIC = u"CMCIFR2A" @@ -143,3 +146,8 @@ # URL to the Statutes and Rules of the association ASSO_URL_STATUTES = 'http://repos.goffi.org/sat_docs/raw-file/tip/association/statuts.pdf' ASSO_URL_RULES = 'http://repos.goffi.org/sat_docs/raw-file/tip/association/r%C3%A8glement%20int%C3%A9rieur.pdf' + +# Import another settings file that can override these settings (for example to daily update the stats when you don't want a script to directly modify this file) +from sys import path +path.append('/home/souliane') +from sat_website_external_settings import * diff -r 01738ae70f2d -r 0d20fb28c32e sat_website/unicodecsv.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sat_website/unicodecsv.py Fri May 15 17:15:40 2015 +0200 @@ -0,0 +1,68 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +# CSV Reader and Writer +# +# This is a copy paste of the examples given in Python docs: +# https://docs.python.org/2/library/csv.html + +import csv, codecs, cStringIO + +class UTF8Recoder: + """ + Iterator that reads an encoded stream and reencodes the input to UTF-8 + """ + def __init__(self, f, encoding): + self.reader = codecs.getreader(encoding)(f) + + def __iter__(self): + return self + + def next(self): + return self.reader.next().encode("utf-8") + +class UnicodeReader: + """ + A CSV reader which will iterate over lines in the CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + f = UTF8Recoder(f, encoding) + self.reader = csv.reader(f, dialect=dialect, **kwds) + + def next(self): + row = self.reader.next() + return [unicode(s, "utf-8") for s in row] + + def __iter__(self): + return self + +class UnicodeWriter: + """ + A CSV writer which will write rows to CSV file "f", + which is encoded in the given encoding. + """ + + def __init__(self, f, dialect=csv.excel, encoding="utf-8", **kwds): + # Redirect output to a queue + self.queue = cStringIO.StringIO() + self.writer = csv.writer(self.queue, dialect=dialect, **kwds) + self.stream = f + self.encoder = codecs.getincrementalencoder(encoding)() + + def writerow(self, row): + self.writer.writerow([s.encode("utf-8") for s in row]) + # Fetch UTF-8 output from the queue ... + data = self.queue.getvalue() + data = data.decode("utf-8") + # ... and reencode it into the target encoding + data = self.encoder.encode(data) + # write to the target stream + self.stream.write(data) + # empty queue + self.queue.truncate(0) + + def writerows(self, rows): + for row in rows: + self.writerow(row) diff -r 01738ae70f2d -r 0d20fb28c32e static/css/sat_website.css --- a/static/css/sat_website.css Thu May 14 23:42:25 2015 +0200 +++ b/static/css/sat_website.css Fri May 15 17:15:40 2015 +0200 @@ -211,4 +211,8 @@ .my-btn { font-size: 14px; +} + +.presstitle { + font-style: italic; } \ No newline at end of file diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/présentation_SàT.jpg Binary file static/videos/screencasts/posters/présentation_SàT.jpg has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/présentation_SàT_2.jpg Binary file static/videos/screencasts/posters/présentation_SàT_2.jpg has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/présentation_SàT_3.jpg Binary file static/videos/screencasts/posters/présentation_SàT_3.jpg has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/présentation_SàT_4.jpg Binary file static/videos/screencasts/posters/présentation_SàT_4.jpg has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/présentation_SàT_6_export_commande.jpg Binary file static/videos/screencasts/posters/présentation_SàT_6_export_commande.jpg has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/présentation_SàT_7_télécommande_universelle.png Binary file static/videos/screencasts/posters/présentation_SàT_7_télécommande_universelle.png has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/posters/radiocol.jpg Binary file static/videos/screencasts/posters/radiocol.jpg has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT.webm Binary file static/videos/screencasts/présentation_SàT.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT_2.webm Binary file static/videos/screencasts/présentation_SàT_2.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT_3.webm Binary file static/videos/screencasts/présentation_SàT_3.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT_4_copie_et_pipe.webm Binary file static/videos/screencasts/présentation_SàT_4_copie_et_pipe.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT_5_radio_collective.webm Binary file static/videos/screencasts/présentation_SàT_5_radio_collective.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT_6_export_commande.webm Binary file static/videos/screencasts/présentation_SàT_6_export_commande.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e static/videos/screencasts/présentation_SàT_7_télécommande_universelle.webm Binary file static/videos/screencasts/présentation_SàT_7_télécommande_universelle.webm has changed diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/community.html --- a/templates/sat_website/community.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/community.html Fri May 15 17:15:40 2015 +0200 @@ -32,7 +32,7 @@ {% trans "Enter the chat room" %}
-

{% blocktrans with sat_muc="sat@chat.jabberfr.org" %}Salut à Toi's multi-user chat room is *the* place to discuss about the project: {{ sat_muc }}{% endblocktrans %}

+

{% blocktrans with sat_muc="sat@chat.jabberfr.org" %}Salut à Toi's multi-user chat room is *the* place to discuss about the project: {{ sat_muc }}{% endblocktrans %}

@@ -41,9 +41,9 @@ {% trans "Follow the development, learn" %}
-

{% blocktrans with blog="http://www.goffi.org" %}In the blog of the main developer you'll have recent informations/reflections abouts features or more general ones: {{ blog }}{% endblocktrans %}

-

{% blocktrans with mailing_list="http://lists.goffi.org" %}You can subscribe to the mailing list to follow the progression, you're welcome to give your opinion (and to contribute): {{ mailing_list }}{% endblocktrans %}

-

{% blocktrans with wiki="http://wiki.goffi.org" %}You'll find user documentation and more technical one on the wiki: {{ wiki }}{% endblocktrans %}

+

{% blocktrans with blog="http://www.goffi.org" %}In the blog of the main developer you'll have recent informations/reflections abouts features or more general ones: {{ blog }}{% endblocktrans %}

+

{% blocktrans with mailing_list="http://lists.goffi.org/listinfo/users" %}You can subscribe to the users mailing list to follow the progression, you're also welcome to give your opinion (and to contribute): {{ mailing_list }}{% endblocktrans %}

+

{% blocktrans with wiki="http://wiki.goffi.org/wiki/Catégorie:Documentation_utilisateur" %}You'll find some user documentation on the wiki: {{ wiki }}{% endblocktrans %}

diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/developers.html --- a/templates/sat_website/developers.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/developers.html Fri May 15 17:15:40 2015 +0200 @@ -29,11 +29,20 @@
+ {% trans "Report a bug" %} +
+
+

{% blocktrans with bugzilla="http://bugs.goffi.org" %}If you found a bug, please report it to our Bugzilla: {{bugzilla}}{% endblocktrans %}

+
+
+ +
+
{% trans "Get the source" %}
-

{% blocktrans with repos_sat="http://repos.goffi.org/sat" repos="http://repos.goffi.org" %}You'll find the mercurial repository of SàT on {{ repos_sat }}, satellite project are also available on {{ repos }}{% endblocktrans %}

-

{% blocktrans with mercurial="Mercurial" %}To clone the repository, use {{ mercurial }}: hg clone http://repos.goffi.org/sat. Check the wiki (see below) for installation instructions{% endblocktrans %}

+

{% blocktrans with repos_sat="http://repos.goffi.org/sat" repos="http://repos.goffi.org" %}You'll find the mercurial repository of SàT on {{ repos_sat }}, satellite projects are also available on {{ repos }}{% endblocktrans %}

+

{% blocktrans with mercurial="Mercurial" %}To clone the repository, use {{ mercurial }}: hg clone http://repos.goffi.org/sat. Check the wiki (see below) for installation instructions{% endblocktrans %}

@@ -42,9 +51,8 @@ {% trans "Documentation" %}
-

{% blocktrans with wiki="http://wiki.goffi.org/wiki/sat" %}The documentation is available on the wiki: {{ wiki }} (don't hesitate to improve it){% endblocktrans %}

-

{% blocktrans with developers_page="http://wiki.goffi.org/wiki/SàT_développement" %}You'll also find a dedicated page for developers: {{ developers_page }}{% endblocktrans %}

-

{% blocktrans with mailing_list="http://lists.goffi.org" %}If you need help, you can also check the mailing list: {{ mailing_list }}{% endblocktrans %}

+

{% blocktrans with wiki="http://wiki.goffi.org/wiki/sat" %}The documentation is available on the wiki (feel free to improve it): {{ wiki }}{% endblocktrans %}

+

{% blocktrans with developers_page="http://wiki.goffi.org/wiki/Catégorie:Documentation_développeur" %}You'll also find a dedicated section for developers: {{ developers_page }}{% endblocktrans %}

@@ -54,7 +62,8 @@ {% trans "Contact" %}
-

{% blocktrans with sat_muc="sat@chat.jabberfr.org" %}The best way to join us is on SàT's Jabber room: {{ sat_muc }}{% endblocktrans %}

+

{% blocktrans with sat_muc="sat@chat.jabberfr.org" %}The best way to join us is on SàT's Jabber room: {{ sat_muc }}{% endblocktrans %}

+

{% blocktrans with mailing_list="http://lists.goffi.org/listinfo/dev" %}If you need help, you can also write to our dev mailing list: {{ mailing_list }}{% endblocktrans %}

diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/downloads.html --- a/templates/sat_website/downloads.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/downloads.html Fri May 15 17:15:40 2015 +0200 @@ -54,7 +54,7 @@

{% trans "When not trivial (e.g. sat_media just needs to be extracted somewhere), the installation procedure is described in the INSTALL file that you will find in the package." %}

-
+

{% blocktrans with sat_muc="sat@chat.jabberfr.org" %}You are also welcome in our multi-user chat room: {{ sat_muc }}.{% endblocktrans %}

diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/features.html --- a/templates/sat_website/features.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/features.html Fri May 15 17:15:40 2015 +0200 @@ -88,7 +88,8 @@

{% trans "For a complete listing of the features implemented by SàT, please visit the technical area." %} -

{% trans "Specifications" %}

+

{% trans "Standard extensions" %}

+

{% trans "Experimental and/or non-standard features" %}

diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/links.html --- a/templates/sat_website/links.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/links.html Fri May 15 17:15:40 2015 +0200 @@ -24,63 +24,87 @@ {% load i18n %} {% load staticfiles %} -{% block headline %}{% trans "Links and friendly projects" %}{% endblock %} +{% block headline %}{% trans "Other projects" %}{% endblock %} {% block main_container %} +
{% blocktrans with readme_prefix='' readme_suffix='' %}We use - and sometimes contribute -, take ideas and inspiration from many projects that can not all be listed here. For the projects directly concerning the development of the software, please check the "credits" section of SàT's {{ readme_prefix }}README{{ readme_suffix }} file.{% endblocktrans %}
+
- {% trans "Comparable projects" %} + {% trans "Decentralised and standard" %}
-
- {% trans "The following projects have something in common with SàT: we all believe that the combination of free software and decentralisation is the answer to many issues. The projects that are using the same network as SàT are signaled with a * symbol. It means that you can use the same account with all of them. It doesn't mean that the compatibility with the the other projects could not be achieved, but it's not built-in." %} -
+

{% trans "You can use your the same account between SàT and any of these projects:" %}

-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
-
- -
+
+ +
+ +
+ +
+
+
Buddycloud ({% trans "non-standard blogging" %})
+
+
+
Poezio ({% trans "chat only" %})
+
- {% trans "Other projects" %} + {% trans "Decentralised and/or non-standard" %} +
+

{% trans "Compatibility between SàT and these projects could be achieved, but it's not built-in:" %}

+
+
+ +
+
+ +
+ +
+ +
+
+
seenthis ({% trans "centralised micro-blogging" %})
+
+
+
+ +
+
+ {% trans "Other IT projects" %}
- {% blocktrans with readme_prefix='' readme_suffix='' %}We use - and sometimes contribute -, take ideas and inspiration from many projects that can not all be listed here. For the projects directly concerning the development of the software, please check the "credits" section of SàT's {{ readme_prefix }}README{{ readme_suffix }} file.{% endblocktrans %} +
+ +
+
+
+
+
Garradin ({% trans "software to manage an association" %})
+
+
+
+ +
+
+ {% trans "Non IT projects" %} +
-
- -
-
- -
- -
- -
-
- +
+
Liberté #0 ({% trans "French association to promote free software accessibility" %})
+
+
+
dieKulturvermittlung ({% trans "cultural association based in Austria" %})
+
diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/press.html --- a/templates/sat_website/press.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/press.html Fri May 15 17:15:40 2015 +0200 @@ -24,40 +24,111 @@ {% load i18n %} {% load staticfiles %} -{% block headline %}{% trans "Press files" %}{% endblock %} +{% block headline %}{% trans "Press" %}{% endblock %} {% block main_container %}
+
- {% trans "They write about it" %} + {% trans "Articles" %}
-
{% blocktrans with author="Drapher" magazine="Reflets.info" %}{{ author }} for {{ magazine }}{% endblocktrans %}, 2014, SàT : le couteau suisse Libre et open source de la communication ({% trans "French" %})
+
{% blocktrans with author="Drapher" magazine="Reflets.info" %}{{ author }} for {{ magazine }}{% endblocktrans %}, 2014, SàT : le couteau suisse Libre et open source de la communication ({% trans "French" %})
+
+
+
{% blocktrans with author="Mathias Huber" magazine="Linux-Magazin Online" %}{{ author }} for {{ magazine }}{% endblocktrans %}, 2014, Salut à Toi; Verbesserter XMPP-Client ({% trans "German" %})
-
{% blocktrans with author="Mathias Huber" magazine="Linux-Magazin Online" %}{{ author }} for {{ magazine }}{% endblocktrans %}, 2014, Salut à Toi; Verbesserter XMPP-Client ({% trans "German" %})
+
Ani Andre, 2014, Profil de libriste : Goffi ({% trans "French" %})
+
+
+
{% blocktrans with magazine="LinuxFr.org"%}{{ magazine }}{% endblocktrans %}, {% blocktrans %}articles about Salut à Toi{% endblocktrans %} ({% trans "French" %})
+
+
+
+
+
{% blocktrans with email="contact \"at\" salut-a-toi.org"%}If you want to write an article about Salut à Toi, we would be please to answer your questions. Please send them to {{email}}{% endblocktrans %}
- {% trans "We talk about it" %} + {% trans "Radio" %} +
+
+
+
Ici et maintenant, 2014, Hotline ({% trans "French" %})
+
+
+
Symbiose, 2014, « Salut à toi » L’outil de communication / réseau social libre développé par Goffi ({% trans "French" %}) - audio +
+
+
+ +
+ {% trans "Conferences" %}
-
{% blocktrans with author="Goffi" %}{{ author }} at the 15th Libre Software Meeting, Montpellier, 2014:{% endblocktrans %} Salut à Toi : et si on repolitisait tout ça ? ({% trans "French" %})
+
+ Goffi, Salut à Toi : et si on repolitisait tout ça ? + +
+
+ Goffi, Salut à Toi : outil libre de communication +
    +
  • Journées De Logiciel Libre, Lyon, 2014 ({% trans "French" %})
  • +
  • Parinux, Paris, 2014 ({% trans "French" %})
  • +
  • Ubuntu Party, Paris, 2014 ({% trans "French" %})
  • +
+
-
{% blocktrans with author="Goffi" %}{{ author }} at Pas Sage en Seine #6, Paris, 2014:{% endblocktrans %} Salut à Toi : et si on repolitisait tout ça ? + part 2 ({% trans "French" %})
+
+ Goffi, Nouveaux usage numériques, nouvelles problématiques +
    +
  • Festival Déclics, Nanterre, 2013 ({% trans "French" %})
  • +
+
-
{% blocktrans with author="Goffi" %}{{ author }} at the 13th Libre Software Meeting, Genève, 2012:{% endblocktrans %} Salut à Toi : communication Libre, Fédérée, Décentralisée et Standard ({% trans "French" %})
+
+ Goffi, Salut à Toi : repensez vos communications + +
-
{% blocktrans with author="Goffi" %}{{ author }} at the 15th Journées du Logiciel Libre, Lyon, 2012:{% endblocktrans %} Salut à Toi ({% trans "French" %})
+
+ Goffi, Salut à Toi : communication Libre, Fédérée, Décentralisée et Standard +
    +
  • {% trans "Libre Software Meeting" %}, Genève, 2012 ({% trans "French" %}) - {% trans "video" %}
  • +
  • JDLL, Lyon, 2011 ({% trans "French" %})
  • +
+
+
+
+
+ Goffi, Salut à Toi : multi interface and multipurpose XMPP client +
    +
  • FOSDEM, {% trans "Bruxelles" %}, 2012 ({% trans "English" %})
  • +
+
- +
+
+
{% blocktrans with email="contact \"at\" salut-a-toi.org"%}If you think that we could bring something interesting to an event (conference, stand...), feel free to write to {{email}}{% endblocktrans %}
+
+
{% endblock %} +conférence : demandez nous si vous en voulez + + + diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/principles.html --- a/templates/sat_website/principles.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/principles.html Fri May 15 17:15:40 2015 +0200 @@ -29,6 +29,7 @@
{% trans "We usually present SàT as a multipurpose, multi frontend, libre and decentralised communication tool... let us explain what we mean." %} +
@@ -80,8 +81,8 @@

- {% blocktrans with xmpp="XMPP" isp="ISP"%} - This is the most complicated aspect to understand, yet a crucial one. Being based on {{ xmpp }}, SàT is immediately decentralised (federated). But what does it mean? To get this point, we need to imagine the Internet as a set of layers. To make it easier, let's say there are only two layers: the physical and the logical one. On the physical layer, you are directly connected to your {{ isp }}, and indirectly to all the rest of the world. + {% blocktrans with xmpp="XMPP" %} + This is the most complicated aspect to understand, yet a crucial one. Being based on {{ xmpp }}, SàT is immediately decentralised (federated). But what does it mean? To get this point, we need to imagine the Internet as a set of layers. To make it easier, let's say there are only two layers: the physical and the logical one. On the physical layer, you are directly connected to your service provider, and indirectly to all the rest of the world. {% endblocktrans %}


@@ -92,7 +93,7 @@

{% blocktrans %} - On the logical layer, you are directly connected to your favorite social network, and since it's centralised, all its users are directly connected to it: it can access and own all the data, it can unilaterally decide to censor or exclude a user... it has too much power. + On the logical layer, you are directly connected to your usual "social network", and since it's centralised, all its users are directly connected to it: it can access and own all the data, it can unilaterally decide to censor or exclude a user... it has too much power. {% endblocktrans %}


@@ -103,7 +104,7 @@

{% blocktrans %} - Now what if your favorite social network is decentralised? The main difference is that there's not a single entity to manage all the connections and all the data, but a lot of them. + Now what if your usual "social network" is decentralised? The main difference is that there's not a single entity to manage all the connections and all the data, but a lot of them. All the users are connected to the same network, but each of them can decide which server they want to connect to. As a result, the data and the network administration's tasks are shared between all the servers. Is it possible to do that on the Internet? Yes, this is how the Email works! That's decentralisation. {% endblocktrans %}

diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/specifications.html --- a/templates/sat_website/specifications.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/specifications.html Fri May 15 17:15:40 2015 +0200 @@ -43,12 +43,13 @@
+
- {% trans "Experimental and non-standard features" %} + {% trans "Experimental and/or non-standard features" %}
- {% blocktrans %}This table lists the non-standard features. Some of them can't be standardised because they are too specific, some others might become new standards in the future.{% endblocktrans %} + {% blocktrans %}Some of these features can't be standardised because they are too specific, some others might become new standards in the future.{% endblocktrans %}
{% include "sat_website/specifications_exp.html" %} diff -r 01738ae70f2d -r 0d20fb28c32e templates/sat_website/specifications_exp.html --- a/templates/sat_website/specifications_exp.html Thu May 14 23:42:25 2015 +0200 +++ b/templates/sat_website/specifications_exp.html Fri May 15 17:15:40 2015 +0200 @@ -30,7 +30,7 @@ {% load i18n %}
-
{% blocktrans context "Url need to point to the localised one" %}Ad-Hoc commands{% endblocktrans %}
+
{% blocktrans context "Url need to point to the localised one" %}Universal remote control{% endblocktrans %}
{% blocktrans %}You can remotely control your XMPP entities and all the softwares that offer D-Bus services. {% endblocktrans %}