Commits

boosh  committed 6e81d35 Merge
  • Participants
  • Parent commits e8fb300, fad7080

Comments (0)

Files changed (19)

 * Rune Bromer (Danish translation)
 * Domen Kožar (Slovenian translation)
 * Young Gyu Park (Korean translation)
+* Flavio Curella (updated Italian translation)
+* Jon Lønne (Bokmål translation)
+* Carles Barrobés (Catalan translation)
+* Nuno Mariz (Portuguese translation)
+* Patrick Samson (French translation)
+* Recep Kirmizi (Turkish translation)
-Copyright (c) 2007-2010, James Bennett
+Copyright (c) 2007-2011, James Bennett
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without

File registration/admin.py

     actions = ['activate_users', 'resend_activation_email']
     list_display = ('user', 'activation_key_expired')
     raw_id_fields = ['user']
-    search_fields = ('user__username', 'user__first_name')
+    search_fields = ('user__username', 'user__first_name', 'user__last_name')
 
     def activate_users(self, request, queryset):
         """

File registration/backends/__init__.py

 
 # Python 2.7 has an importlib with import_module; for older Pythons,
 # Django's bundled copy provides it.
-try:
-    from importlib import import_module
-except ImportError:
-    from django.utils.importlib import import_module
+try: # pragma: no cover
+    from importlib import import_module # pragma: no cover
+except ImportError: # pragma: no cover
+    from django.utils.importlib import import_module # pragma: no cover
 
 def get_backend(path):
     """

File registration/forms.py

     registration backend.
     
     """
-    username = forms.RegexField(regex=r'^\w+$',
+    username = forms.RegexField(regex=r'^[\w.@+-]+$',
                                 max_length=30,
                                 widget=forms.TextInput(attrs=attrs_dict),
                                 label=_("Username"),
                                 error_messages={'invalid': _("This value must contain only letters, numbers and underscores.")})
     email = forms.EmailField(widget=forms.TextInput(attrs=dict(attrs_dict,
                                                                maxlength=75)),
-                             label=_("Email address"))
+                             label=_("E-mail"))
     password1 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict, render_value=False),
                                 label=_("Password"))
     password2 = forms.CharField(widget=forms.PasswordInput(attrs=attrs_dict, render_value=False),

File registration/locale/ca/LC_MESSAGES/django.mo

Binary file added.

File registration/locale/ca/LC_MESSAGES/django.po

+# Catalan translation for django-registration.
+# Copyright (C) 2007-2010, James Bennet
+# This file is distributed under the same license as the django-registration package.
+# Carles Barrobés <carles@barrobes.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: django-registration 0.8\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-07-17 11:04+0200\n"
+"PO-Revision-Date: 2010-09-24 23:21+0100\n"
+"Last-Translator: Carles Barrobés i Meix <carles@barrobes.com>\n"
+"Language-Team: Català\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Poedit-Language: Catalan\n"
+
+#: admin.py:23
+msgid "Activate users"
+msgstr "Activar usuaris"
+
+#: admin.py:43
+msgid "Re-send activation emails"
+msgstr "Re-enviar e-mails d'activació"
+
+#: forms.py:35
+msgid "Username"
+msgstr "Nom d'usuari"
+
+#: forms.py:36
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Aquest valor ha de contenir només lletres, números i guions baixos"
+
+#: forms.py:39
+msgid "E-mail"
+msgstr "E-mail"
+
+#: forms.py:41
+msgid "Password"
+msgstr "Contrasenya"
+
+#: forms.py:43
+msgid "Password (again)"
+msgstr "Contrasenya (de nou)"
+
+#: forms.py:55
+msgid "A user with that username already exists."
+msgstr "Ja existeix un usuari amb aquest nom"
+
+#: forms.py:67
+msgid "The two password fields didn't match."
+msgstr "Els dos camps de contrasenya no coincideixen"
+
+#: forms.py:78
+msgid "I have read and agree to the Terms of Service"
+msgstr "He llegit i estic d'acord amb les condicions d'ús"
+
+#: forms.py:79
+msgid "You must agree to the terms to register"
+msgstr "Heu d'estar d'acord amb les condicions d'ús per registrar-vos"
+
+#: forms.py:95
+msgid ""
+"This email address is already in use. Please supply a different email "
+"address."
+msgstr ""
+"Aquesta adreça d'e-mail ja està sent utilitzada. Sisplau, entreu-ne una "
+"altra."
+
+#: forms.py:122
+msgid ""
+"Registration using free email addresses is prohibited. Please supply a "
+"different email address."
+msgstr ""
+"Està prohibit registrar-se utilitzant adreces d'e-mail gratuïtes. Sisplau "
+"entreu-ne una altra."
+
+#: models.py:168
+msgid "user"
+msgstr "usuari"
+
+#: models.py:169
+msgid "activation key"
+msgstr "clau d'activació"
+
+#: models.py:174
+msgid "registration profile"
+msgstr "perfil de registre"
+
+#: models.py:175
+msgid "registration profiles"
+msgstr "perfils de registre"
+
+#~ msgid "Email address"
+#~ msgstr "Adreça d'e-mail"

File registration/locale/fr/LC_MESSAGES/django.mo

Binary file modified.

File registration/locale/fr/LC_MESSAGES/django.po

-# SOME DESCRIPTIVE TITLE.
+# django-registration French translation.
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
+# This file is distributed under the same license as the django-registration package.
 # Samuel Adam <samuel.adam@gmail.com>, 2007.
 #
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: django-registration 0.3 \n"
+"Project-Id-Version: django-registration 0.8 alpha-1 \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-19 19:30-0500\n"
-"PO-Revision-Date: 2007-09-20 10:30+0100\n"
-"Last-Translator: Samuel Adam <samuel.adam@gmail.com>\n"
+"POT-Creation-Date: 2010-07-01 14:33+0200\n"
+"PO-Revision-Date: 2010-07-01 14:30+0200\n"
+"Last-Translator: Patrick Samson <maxcom@laposte.net>\n"
 "Language-Team: Français <fr@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: forms.py:38
-msgid "username"
-msgstr "pseudo"
+#: .\admin.py:23
+msgid "Activate users"
+msgstr "Active les utilisateurs"
 
-#: forms.py:41
-msgid "email address"
-msgstr "adresse email"
+#: .\admin.py:43
+msgid "Re-send activation emails"
+msgstr "Envoie à nouveau les courriels d'activation"
 
-#: forms.py:43
-msgid "password"
-msgstr "mot de passe"
+#: .\forms.py:35
+msgid "Username"
+msgstr "Nom d'utilisateur"
 
-#: forms.py:45
-msgid "password (again)"
-msgstr "mot de passe (vérification)"
+#: .\forms.py:36
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Cette valeur ne doit contenir que des lettres, chiffres et tirets bas."
 
-#: forms.py:54
-msgid "Usernames can only contain letters, numbers and underscores"
-msgstr "Le pseudo ne peut contenir que des lettres, chiffres et le caractère souligné."
+#: .\forms.py:39
+msgid "Email address"
+msgstr "Adresse courriel"
 
-#: forms.py:59
-msgid "This username is already taken. Please choose another."
-msgstr "Ce pseudo est déjà utilisé. Veuillez en choisir un autre."
+#: .\forms.py:41
+msgid "Password"
+msgstr "Mot de passe"
 
-#: forms.py:68
-msgid "You must type the same password each time"
-msgstr "Veuillez indiquer le même mot de passe dans les deux champs"
+#: .\forms.py:43
+msgid "Password (again)"
+msgstr "Mot de passe (vérification)"
 
-#: forms.py:96
+#: .\forms.py:55
+msgid "A user with that username already exists."
+msgstr "Un utilisateur avec ce nom existe déjà."
+
+#: .\forms.py:67
+msgid "The two password fields didn't match."
+msgstr "Les deux mots de passe ne correspondent pas."
+
+#: .\forms.py:78
 msgid "I have read and agree to the Terms of Service"
 msgstr "J'ai lu et accepté les Conditions Générales d'Utilisation"
 
-#: forms.py:105
+#: .\forms.py:79
 msgid "You must agree to the terms to register"
 msgstr "Vous devez accepter les conditions d'utilisation pour vous inscrire"
 
-#: forms.py:124
+#: .\forms.py:95
 msgid ""
 "This email address is already in use. Please supply a different email "
 "address."
-msgstr "Cette adresse email est déjà utilisée. Veuillez en indiquer une autre."
+msgstr "Cette adresse courriel est déjà utilisée. Veuillez en indiquer une autre."
 
-#: forms.py:149
+#: .\forms.py:122
 msgid ""
 "Registration using free email addresses is prohibited. Please supply a "
 "different email address."
-msgstr "L'inscription avec une adresse email d'un compte gratuit est interdite. Veuillez en indiquer une autre."
+msgstr ""
+"L'inscription avec adresse courriel de compte gratuit est interdite. "
+"Veuillez en indiquer une autre."
 
-#: models.py:188
+#: .\models.py:165
 msgid "user"
 msgstr "utilisateur"
 
-#: models.py:189
+#: .\models.py:166
 msgid "activation key"
 msgstr "clé d'activation"
 
-#: models.py:194
+#: .\models.py:171
 msgid "registration profile"
 msgstr "profil d'inscription"
 
-#: models.py:195
+#: .\models.py:172
 msgid "registration profiles"
 msgstr "profils d'inscription"

File registration/locale/it/LC_MESSAGES/django.mo

Binary file modified.

File registration/locale/it/LC_MESSAGES/django.po

-# translation of django.po to Italiano
+# translation of django.po to Italian
 # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
 # This file is distributed under the same license as the PACKAGE package.
 #
 # Nicola Larosa <nico@tekNico.net>, 2008.
+# Flavio Curella <flavio.curella@gmail.com>, 2011
 msgid ""
 msgstr ""
-"Project-Id-Version: django\n"
+"Project-Id-Version: django-registration 0.8 alpha-1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-09-19 19:30-0500\n"
-"PO-Revision-Date: 2008-05-27 15:05+0200\n"
-"Last-Translator: Nicola Larosa <nico@tekNico.net>\n"
-"Language-Team: Italiano\n"
+"POT-Creation-Date: 2010-07-01 14:33+0200\n"
+"PO-Revision-Date: 2011-08-04 12:41-0600\n"
+"Last-Translator: Flavio Curella <flavio.curella@gmail.com>\n"
+"Language-Team: Italiano <it@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Poedit-Language: Italian\n"
+"X-Poedit-Country: ITALY\n"
 
-#: forms.py:38
-msgid "username"
-msgstr "nome utente"
+#: .\admin.py:23
+msgid "Activate users"
+msgstr "Attiva utenti"
 
-#: forms.py:41
-msgid "email address"
+#: .\admin.py:43
+msgid "Re-send activation emails"
+msgstr "Re-invia email di attivazione"
+
+#: .\forms.py:35
+msgid "Username"
+msgstr "Nome utente"
+
+#: .\forms.py:36
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Questo valore può contenere solo lettere, numeri e sottolineature."
+
+#: .\forms.py:39
+msgid "Email address"
 msgstr "indirizzo email"
 
-#: forms.py:43
-msgid "password"
-msgstr "password"
+#: .\forms.py:41
+msgid "Password"
+msgstr "Password"
 
-#: forms.py:45
-msgid "password (again)"
-msgstr "password (di nuovo)"
+#: .\forms.py:43
+msgid "Password (again)"
+msgstr "Password (di nuovo)"
 
-#: forms.py:54
-msgid "Usernames can only contain letters, numbers and underscores"
-msgstr "I nomi utente possono contenere solo lettere, numeri e sottolineature"
+#: .\forms.py:55
+msgid "A user with that username already exists."
+msgstr "Questo nome utente è già usato."
 
-#: forms.py:59
-msgid "This username is already taken. Please choose another."
-msgstr "Questo nome utente è già usato. Scegline un altro."
+#: .\forms.py:67
+msgid "The two password fields didn't match."
+msgstr "Le password inserite non coincidono."
 
-#: forms.py:68
-msgid "You must type the same password each time"
-msgstr "Bisogna inserire la stessa password ogni volta"
-
-#: forms.py:96
+#: .\forms.py:78
 msgid "I have read and agree to the Terms of Service"
 msgstr "Dichiaro di aver letto e di approvare le Condizioni di Servizio"
 
-#: forms.py:105
+#: .\forms.py:79
 msgid "You must agree to the terms to register"
 msgstr "Per registrarsi bisogna approvare le condizioni"
 
-#: forms.py:124
-msgid "This email address is already in use. Please supply a different email "
-"address."
+#: .\forms.py:95
+msgid "This email address is already in use. Please supply a different email address."
 msgstr "Questo indirizzo email è già in uso. Inserisci un altro indirizzo email."
 
-#: forms.py:149
-msgid "Registration using free email addresses is prohibited. Please supply a "
-"different email address."
-msgstr "La registrazione con indirizzi email gratis non è permessa. "
-"Inserisci un altro indirizzo email."
+#: .\forms.py:122
+msgid "Registration using free email addresses is prohibited. Please supply a different email address."
+msgstr "La registrazione con indirizzi email gratis non è permessa. Inserisci un altro indirizzo email."
 
-#: models.py:188
+#: .\models.py:165
 msgid "user"
 msgstr "utente"
 
-#: models.py:189
+#: .\models.py:166
 msgid "activation key"
 msgstr "chiave di attivazione"
 
-#: models.py:194
+#: .\models.py:171
 msgid "registration profile"
 msgstr "profilo di registrazione"
 
-#: models.py:195
+#: .\models.py:172
 msgid "registration profiles"
 msgstr "profili di registrazione"
 

File registration/locale/nb/LC_MESSAGES/django.mo

Binary file added.

File registration/locale/nb/LC_MESSAGES/django.po

+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# jonklo <jon at funkbit dot no>, 2010.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: django-registration 0.8\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-12-15 21:37+0100\n"
+"PO-Revision-Date: 2010-12-15 21:37+0100\n"
+"Last-Translator: jonklo <jon at funkbit dot no>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.py:23
+msgid "Activate users"
+msgstr "Aktiver brukere"
+
+#: admin.py:43
+msgid "Re-send activation emails"
+msgstr "Send ny aktiveringsmail"
+
+#: forms.py:35
+msgid "Username"
+msgstr "Brukernavn"
+
+#: forms.py:36
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Dette feltet kan bare inneholde bokstaver, nummer og understreker."
+
+#: forms.py:39
+msgid "Email address"
+msgstr "E-postadresse"
+
+#: forms.py:41
+msgid "Password"
+msgstr "Passord"
+
+#: forms.py:43
+msgid "Password (again)"
+msgstr "Passord (gjenta)"
+
+#: forms.py:55
+msgid "A user with that username already exists."
+msgstr "Det eksisterer allerede en bruker med dette brukernavnet."
+
+#: forms.py:67
+msgid "The two password fields didn't match."
+msgstr "De to passordfeltene er ikke like."
+
+#: forms.py:78
+msgid "I have read and agree to the Terms of Service"
+msgstr "Jeg har lest og godtar betingelsene"
+
+#: forms.py:79
+msgid "You must agree to the terms to register"
+msgstr "Du må godta betingelsene for å registrere deg"
+
+#: forms.py:95
+msgid ""
+"This email address is already in use. Please supply a different email "
+"address."
+msgstr "Denne e-postadressen er allerede i bruk. Vennligst oppgi en annen "
+"e-postadresse."
+
+#: forms.py:122
+msgid ""
+"Registration using free email addresses is prohibited. Please supply a "
+"different email address."
+msgstr "Registrering med gratis e-postadresse er ikke tillatt. Vennligst "
+"oppgi en annen e-postadresse."
+
+#: models.py:168
+msgid "user"
+msgstr "bruker"
+
+#: models.py:169
+msgid "activation key"
+msgstr "aktiveringsnøkkel"
+
+#: models.py:174
+msgid "registration profile"
+msgstr "registrasjonsprofil"
+
+#: models.py:175
+msgid "registration profiles"
+msgstr "registrasjonsprofiler"

File registration/locale/pt/LC_MESSAGES/django.mo

Binary file added.

File registration/locale/pt/LC_MESSAGES/django.po

+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-03-26 10:54+0000\n"
+"PO-Revision-Date: 2011-01-24 12:20+0000\n"
+"Last-Translator: Nuno Mariz <nmariz@gmail.com>\n"
+"Language-Team: Nuno Mariz <nmariz@gmail.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.py:23
+msgid "Activate users"
+msgstr "Ativar utilizadores"
+
+#: admin.py:43
+msgid "Re-send activation emails"
+msgstr "Reenviar emails de ativação"
+
+#: forms.py:35
+msgid "Username"
+msgstr "Utilizador"
+
+#: forms.py:36
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Este valor apenas deverá conter letras, números e underscores."
+
+#: forms.py:39
+msgid "Email address"
+msgstr "Email"
+
+#: forms.py:41
+msgid "Password"
+msgstr "Password"
+
+#: forms.py:43
+msgid "Password (again)"
+msgstr "Password (novamente)"
+
+#: forms.py:55
+msgid "A user with that username already exists."
+msgstr "Um utilizador com o mesmo nome já se encontra registado."
+
+#: forms.py:67
+msgid "The two password fields didn't match."
+msgstr "As duas passwords não coincidem."
+
+#: forms.py:78
+msgid "I have read and agree to the Terms of Service"
+msgstr "Eu li e concordo com as Condiçoes de Serviço"
+
+#: forms.py:79
+msgid "You must agree to the terms to register"
+msgstr "Deverá concordar com as condições para se registar"
+
+#: forms.py:95
+msgid ""
+"This email address is already in use. Please supply a different email "
+"address."
+msgstr "Este email já se encontra registado. Por favor forneça um email diferente."
+
+#: forms.py:122
+msgid ""
+"Registration using free email addresses is prohibited. Please supply a "
+"different email address."
+msgstr "O registo com emails gratuitos é proibido. Por favor forneça um email diferente."
+
+#: models.py:168
+msgid "user"
+msgstr "utilizador"
+
+#: models.py:169
+msgid "activation key"
+msgstr "chave de ativação"
+
+#: models.py:174
+msgid "registration profile"
+msgstr "perfil de registo"
+
+#: models.py:175
+msgid "registration profiles"
+msgstr "perfis de registo"

File registration/locale/tr_TR/LC_MESSAGES/django.mo

Binary file added.

File registration/locale/tr_TR/LC_MESSAGES/django.po

+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2010-11-11 12:48+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: RECEP KIRMIZI <rkirmizi@gmail.com>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: admin.py:23
+msgid "Activate users"
+msgstr "Kullanıcıları aktive et"
+
+#: admin.py:43
+msgid "Re-send activation emails"
+msgstr "Aktivasyon e-postalarını yeniden gönder"
+
+#: forms.py:35
+msgid "Username"
+msgstr "Kullanıcı adı"
+
+#: forms.py:36
+msgid "This value must contain only letters, numbers and underscores."
+msgstr "Bu alan sadece harfler, numaralar ve alt çizgiler barındırabilir."
+
+#: forms.py:39
+msgid "Email address"
+msgstr "Eposta adresi"
+
+#: forms.py:41
+msgid "Password"
+msgstr "Parola"
+
+#: forms.py:43
+msgid "Password (again)"
+msgstr "Parola (tekrar)"
+
+#: forms.py:55
+msgid "A user with that username already exists."
+msgstr "Bu kullanıcı adına sahip bir kullanıcı bulunmakta."
+
+#: forms.py:67
+msgid "The two password fields didn't match."
+msgstr "İki parola birbiri ile uyuşmadı."
+
+#: forms.py:78
+msgid "I have read and agree to the Terms of Service"
+msgstr "Anlaşma kurallarını okudum ve kabul ediyorum."
+
+#: forms.py:79
+msgid "You must agree to the terms to register"
+msgstr "Kayıt olmak için kuralları kabul etmelisiniz."
+
+#: forms.py:95
+msgid ""
+"This email address is already in use. Please supply a different email "
+"address."
+msgstr "Bu eposta adresi kullanımda. Lütfen farklı bir eposta adresi veriniz."
+
+#: forms.py:122
+msgid ""
+"Registration using free email addresses is prohibited. Please supply a "
+"different email address."
+msgstr ""
+"Ücretsiz eposta adresleri ile kayıt kabul edilmemektedir. Lütfen farklı bir "
+"eposta adresi veriniz."
+
+#: models.py:168
+msgid "user"
+msgstr "kullanıcı"
+
+#: models.py:169
+msgid "activation key"
+msgstr "aktivasyon anahtarı"
+
+#: models.py:174
+msgid "registration profile"
+msgstr "kayıt profili"
+
+#: models.py:175
+msgid "registration profiles"
+msgstr "kayıt profilleri"

File registration/tests/backends.py

         
         """
         environ = {
-            'HTTP_COOKIE':      self.cookies,
-            'PATH_INFO':         '/',
-            'QUERY_STRING':      '',
-            'REMOTE_ADDR':       '127.0.0.1',
-            'REQUEST_METHOD':    'GET',
-            'SCRIPT_NAME':       '',
-            'SERVER_NAME':       'testserver',
-            'SERVER_PORT':       '80',
-            'SERVER_PROTOCOL':   'HTTP/1.1',
-            'wsgi.version':      (1,0),
-            'wsgi.url_scheme':   'http',
-            'wsgi.errors':       self.errors,
-            'wsgi.multiprocess': True,
-            'wsgi.multithread':  False,
-            'wsgi.run_once':     False,
+            'HTTP_COOKIE': self.cookies,
+            'PATH_INFO': '/',
+            'QUERY_STRING': '',
+            'REMOTE_ADDR': '127.0.0.1',
+            'REQUEST_METHOD': 'GET',
+            'SCRIPT_NAME': '',
+            'SERVER_NAME': 'testserver',
+            'SERVER_PORT': '80',
+            'SERVER_PROTOCOL': 'HTTP/1.1',
+            'wsgi.version': (1,0),
+            'wsgi.url_scheme': 'http',
+            'wsgi.errors': self.errors,
+            'wsgi.multiprocess':True,
+            'wsgi.multithread': False,
+            'wsgi.run_once': False,
+            'wsgi.input': None,
             }
         environ.update(self.defaults)
         environ.update(request)
     """
     Test the default registration backend.
 
-    Running these tests successfull will require two templates to be
+    Running these tests successfully will require two templates to be
     created for the sending of activation emails; details on these
     templates and their contexts may be found in the documentation for
     the default backend.
         """
         self.old_activation = getattr(settings, 'ACCOUNT_ACTIVATION_DAYS', None)
         if self.old_activation is None:
-            settings.ACCOUNT_ACTIVATION_DAYS = 7
+            settings.ACCOUNT_ACTIVATION_DAYS = 7 # pragma: no cover
 
     def tearDown(self):
         """
 
         """
         if self.old_activation is None:
-            settings.ACCOUNT_ACTIVATION_DAYS = self.old_activation
+            settings.ACCOUNT_ACTIVATION_DAYS = self.old_activation # pragma: no cover
 
     def test_registration(self):
         """
         
         """
         Site._meta.installed = False
-
         new_user = self.backend.register(_mock_request(),
                                          username='bob',
                                          email='bob@example.com',
                                             RegistrationProfile.objects.all())
         self.assertEqual(len(mail.outbox), 2) # No additional email because the account has activated.
 
+    def test_email_send_action_no_sites(self):
+        """
+        Test re-sending of activation emails via admin action when
+        ``django.contrib.sites`` is not installed; the fallback will
+        be a ``RequestSite`` instance.
+        
+        """
+        Site._meta.installed = False
+        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)
+        
+        alice = self.backend.register(_mock_request(),
+                                      username='alice',
+                                      email='alice@example.com',
+                                      password1='swordfish')
+        
+        admin_class.resend_activation_email(_mock_request(),
+                                            RegistrationProfile.objects.all())
+        self.assertEqual(len(mail.outbox), 2) # One on registering, one more on the resend.
+        
+        RegistrationProfile.objects.filter(user=alice).update(activation_key=RegistrationProfile.ACTIVATED)
+        admin_class.resend_activation_email(_mock_request(),
+                                            RegistrationProfile.objects.all())
+        self.assertEqual(len(mail.outbox), 2) # No additional email because the account has activated.
+        Site._meta.installed = True
+
     def test_activation_action(self):
         """
         Test manual activation of users view admin action.

File registration/tests/views.py

         """
         self.old_activation = getattr(settings, 'ACCOUNT_ACTIVATION_DAYS', None)
         if self.old_activation is None:
-            settings.ACCOUNT_ACTIVATION_DAYS = 7
+            settings.ACCOUNT_ACTIVATION_DAYS = 7 # pragma: no cover
 
     def tearDown(self):
         """
 
         """
         if self.old_activation is None:
-            settings.ACCOUNT_ACTIVATION_DAYS = self.old_activation
+            settings.ACCOUNT_ACTIVATION_DAYS = self.old_activation # pragma: no cover
 
     def test_registration_view_initial(self):
         """