Django

Code

Changeset 3086

Show
Ignore:
Timestamp:
06/05/06 20:21:49 (2 years ago)
Author:
jkocherhans
Message:

multi-auth: Merged to [3085]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/multi-auth/django/conf/global_settings.py

    r3052 r3086  
    204204TIME_FORMAT = 'P' 
    205205 
     206# Default formatting for date objects when only the year and month are relevant. 
     207# See all available format strings here: 
     208# http://www.djangoproject.com/documentation/templates/#now 
     209YEAR_MONTH_FORMAT = 'F Y' 
     210 
     211# Default formatting for date objects when only the month and day are relevant. 
     212# See all available format strings here: 
     213# http://www.djangoproject.com/documentation/templates/#now 
     214MONTH_DAY_FORMAT = 'F j' 
     215 
    206216# Whether to enable Psyco, which optimizes Python code. Requires Psyco. 
    207217# http://psyco.sourceforge.net/ 
  • django/branches/multi-auth/django/conf/locale/nl/LC_MESSAGES/django.po

    r2998 r3086  
    7373#: db/models/fields/__init__.py:468 core/validators.py:132 
    7474msgid "Enter a valid date/time in YYYY-MM-DD HH:MM format." 
    75 msgstr "Geef geldige datum/tijd in JJJJ-MM-DD HH:MM formaat." 
     75msgstr "Geef geldige datum/tijd in JJJJ-MM-DD UU:MM formaat." 
    7676 
    7777#: db/models/fields/__init__.py:562 
     
    117117#: conf/global_settings.py:46 
    118118msgid "Galician" 
    119 msgstr "Galisisch" 
     119msgstr "Galicisch" 
    120120 
    121121#: conf/global_settings.py:47 
     
    177177#: conf/global_settings.py:61 
    178178msgid "Ukrainian" 
    179 msgstr "Ukraiens" 
     179msgstr "Oekraïens" 
    180180 
    181181#: conf/global_settings.py:62 
     
    221221#: core/validators.py:103 
    222222msgid "Empty values are not allowed here." 
    223 msgstr "Lege waarden niet toegestaan." 
     223msgstr "Lege waarden zijn hier niet toegestaan." 
    224224 
    225225#: core/validators.py:107 
    226226msgid "Non-numeric characters aren't allowed here." 
    227 msgstr "Niet-numerieke karakters niet toegestaan." 
     227msgstr "Niet-numerieke karakters zijn hier niet toegestaan." 
    228228 
    229229#: core/validators.py:111 
     
    245245#: core/validators.py:128 
    246246msgid "Enter a valid time in HH:MM format." 
    247 msgstr "Geef een geldige tijd in HH:MM formaat." 
     247msgstr "Geef een geldige tijd in UU:MM formaat." 
    248248 
    249249#: core/validators.py:136 
     
    322322#: core/validators.py:255 
    323323msgid "Please enter something for at least one field." 
    324 msgstr "Geef in minimaal één veld een waarde." 
     324msgstr "Voer tenminste één veld in." 
    325325 
    326326#: core/validators.py:264 core/validators.py:275 
     
    356356msgid_plural "" 
    357357"Please enter a valid decimal number with at most %s total digits." 
    358 msgstr[0] "Geef een geldig decimaal getal met maximaal %s cijfer." 
    359 msgstr[1] "Geef een geldig decimaal getal met maximaal %s cijfers." 
     358msgstr[0] "Geef een geldig decimaal getal met hooguit %s cijfer." 
     359msgstr[1] "Geef een geldig decimaal getal met hooguit %s cijfers." 
    360360 
    361361#: core/validators.py:352 
     
    364364msgid_plural "" 
    365365"Please enter a valid decimal number with at most %s decimal places." 
    366 msgstr[0] "Geef een decimaal getal met maximaal %s cijfer achter de komma." 
    367 msgstr[1] "Geef een decimaal getal met maximaal %s cijfers achter de komma." 
     366msgstr[0] "Geef een decimaal getal met hooguit %s cijfer achter de komma." 
     367msgstr[1] "Geef een decimaal getal met hooguit %s cijfers achter de komma." 
    368368 
    369369#: core/validators.py:362 
    370370#, python-format 
    371371msgid "Make sure your uploaded file is at least %s bytes big." 
    372 msgstr "Zorg ervoor dat het bestand minimaal %s bytes groot is." 
     372msgstr "Zorg ervoor dat het bestand minstens %s bytes groot is." 
    373373 
    374374#: core/validators.py:363 
    375375#, python-format 
    376376msgid "Make sure your uploaded file is at most %s bytes big." 
    377 msgstr "Zorg ervoor dat het bestand maximaal %s bytes groot is." 
     377msgstr "Zorg ervoor dat het bestand hoogstens %s bytes groot is." 
    378378 
    379379#: core/validators.py:376 
     
    457457"required for logging in." 
    458458msgstr "" 
    459 "Het lijkt erop dat uw browser geen cookies accepteerd. Om u aan te melden " 
     459"Het lijkt erop dat uw browser geen cookies accepteerd. Om aan te melden " 
    460460"moeten cookies worden geaccepteerd." 
    461461 
     
    466466"sensitive." 
    467467msgstr "" 
    468 "Geef een correcte gebruikersnaam en wachtwoord. Let op de velden zijn " 
     468"Voer een correcte gebruikersnaam en wachtwoord in. Let op, de velden zijn " 
    469469"hoofdletter-gevoelig." 
    470470 
     
    523523#: contrib/auth/models.py:60 
    524524msgid "Designates whether the user can log into this admin site." 
    525 msgstr "Bepaalt of de gebruiker kan inloggen op deze admin site
     525msgstr "Bepaalt of de gebruiker kan inloggen op deze admin site.
    526526 
    527527#: contrib/auth/models.py:61 
     
    683683#, python-format 
    684684msgid "Your e-mail address is not your username. Try '%s' instead." 
    685 msgstr "Uw e-mail adres is niet uw gebruikersnaam. Probeer '%s' eens." 
     685msgstr "Uw e-mailadres is niet uw gebruikersnaam. Probeer '%s' eens." 
    686686 
    687687#: contrib/admin/views/main.py:226 
     
    735735#, python-format 
    736736msgid "The %(name)s \"%(obj)s\" was changed successfully." 
    737 msgstr "Wijzigen %(name)s \"%(obj)s\" is geslaagd." 
     737msgstr "Het wijzigen van %(name)s \"%(obj)s\" is geslaagd." 
    738738 
    739739#: contrib/admin/views/main.py:354 
     
    741741msgid "" 
    742742"The %(name)s \"%(obj)s\" was added successfully. You may edit it again below." 
    743 msgstr "De %(name)s \"%(obj)s\" toegevoegd. U kunt het hieronder wijzigen." 
     743msgstr "De %(name)s \"%(obj)s\" was toegevoegd. U kunt het hieronder wijzigen." 
    744744 
    745745#: contrib/admin/views/main.py:392 
     
    761761#, python-format 
    762762msgid "The %(name)s \"%(obj)s\" was deleted successfully." 
    763 msgstr "Verwijdering %(name)s \"%(obj)s\" is geslaagd." 
     763msgstr "De verwijdering van %(name)s \"%(obj)s\" is geslaagd." 
    764764 
    765765#: contrib/admin/views/main.py:511 
     
    770770#, python-format 
    771771msgid "Change history: %s" 
    772 msgstr "Wijzigingshistorie: %s" 
     772msgstr "Wijzigingsgeschiedenis: %s" 
    773773 
    774774#: contrib/admin/views/main.py:565 
     
    795795#, python-format 
    796796msgid "String (up to %(maxlength)s)" 
    797 msgstr "Karakterreeks (maximaal %(maxlength)s)" 
     797msgstr "Karakterreeks (hooguit %(maxlength)s)" 
    798798 
    799799#: contrib/admin/views/doc.py:280 
     
    940940"types of objects:" 
    941941msgstr "" 
    942 "Verwijderen van %(object_name)s '%(object)s' zal ook gerelateerde objecten
    943 "verwijderen. Echter u heeft geen rechten om de volgende typen objecten te
    944 "verwijderen:" 
     942"Het verwijderen van %(object_name)s '%(object)s' zal ook gerelateerde
     943"objecten verwijderen. Echter u heeft geen rechten om de volgende typen
     944"objecten te verwijderen:" 
    945945 
    946946#: contrib/admin/templates/admin/delete_confirmation.html:21 
     
    964964#: contrib/admin/templates/admin/404.html:10 
    965965msgid "We're sorry, but the requested page could not be found." 
    966 msgstr "De gevraagde pagina komt niet voor." 
     966msgstr "Onze excuses, maar de gevraagde pagina komt niet voor." 
    967967 
    968968#: contrib/admin/templates/admin/change_form.html:15 
     
    10741074"admin site." 
    10751075msgstr "" 
    1076 "Dit object heeft geen geschiedenis. Mogelijk niet via de admin site " 
    1077 "toegevoegd." 
     1076"Dit object heeft geen wijzigingsgeschiedenis. Het is mogelijk niet via de " 
     1077"admin site toegevoegd." 
    10781078 
    10791079#: contrib/admin/templates/admin/500.html:4 
     
    10941094"mail and should be fixed shortly. Thanks for your patience." 
    10951095msgstr "" 
    1096 "Er is een fout opgetreden. Dit is inmiddels doorgegevens aan de " 
    1097 "sitebeheerder via e-mail en zal binnenkort worden gerepareerd. Bedankt voor " 
    1098 "uw geduld" 
     1096"Er is een fout opgetreden. Dit is inmiddels doorgegeven aan de sitebeheerder " 
     1097"via e-mail en zal spoedig worden gerepareerd. Bedankt voor uw geduld." 
    10991098 
    11001099#: contrib/admin/templates/admin/search_form.html:8 
     
    11891188#: contrib/admin/templates/admin_doc/bookmarklets.html:29 
    11901189msgid "As above, but opens the admin page in a new window." 
    1191 msgstr "Als boven, maar opent de beheerpagina in een nieuw venster." 
     1190msgstr "Zoals hierboven, maar opent de beheerpagina in een nieuw venster." 
    11921191 
    11931192#: contrib/admin/templates/widget/date_time.html:3 
     
    12191218"your password and e-mail the new one to you." 
    12201219msgstr "" 
    1221 "Wachtwoord vergeten? Geef u e-mail adres op en we herstellen uw wachtwoord
    1222 "en zullen u het nieuwe wachtwoord per e-mail toesturen." 
     1220"Uw wachtwoord vergeten? Geef uw e-mailadres op en er zal een nieuw
     1221"wachtwoord worden toegekend en aan u worden toegezonden." 
    12231222 
    12241223#: contrib/admin/templates/registration/password_reset_form.html:16 
     
    12321231#: contrib/admin/templates/registration/password_reset_email.html:2 
    12331232msgid "You're receiving this e-mail because you requested a password reset" 
    1234 msgstr "U krijgt een e-mail omdat u om een nieuw wachtwoord heeft gevraagd" 
     1233msgstr "U krijgt deze e-mail omdat u om een nieuw wachtwoord heeft gevraagd" 
    12351234 
    12361235#: contrib/admin/templates/registration/password_reset_email.html:3 
     
    12791278"should be receiving it shortly." 
    12801279msgstr "" 
    1281 "Een nieuw wachtwoord is per e-mail verstuurd. U zult het binnenkort " 
    1282 "ontvangen." 
     1280"Een nieuw wachtwoord is per e-mail verstuurd. U zult het spoedig ontvangen." 
    12831281 
    12841282#: contrib/admin/templates/registration/password_change_form.html:4 
     
    12941292"password twice so we can verify you typed it in correctly." 
    12951293msgstr "" 
    1296 "Geef voor de veiligheid uw oude wachtwoord op en twee keer een nieuw
    1297 "wachtwoord, zodat we kunnen controleren of er geen typefouten zijn gemaakt." 
     1294"Vanwege de beveiliging moet u uw oude en twee keer een nieuw wachtwoord
     1295"invoeren, zodat we kunnen controleren of er geen typefouten zijn gemaakt." 
    12981296 
    12991297#: contrib/admin/templates/registration/password_change_form.html:17 
     
    13411339msgid "" 
    13421340"Example: '/about/contact/'. Make sure to have leading and trailing slashes." 
    1343 msgstr "Voorbeeld: '/about/contact/'. Zorg voor slashes aan begin en eind" 
     1341msgstr "" 
     1342"Voorbeeld: '/about/contact/'. Zorg voor slashes aan het begin en eind." 
    13441343 
    13451344#: contrib/flatpages/models.py:9 
     
    13741373msgid "If this is checked, only logged-in users will be able to view the page." 
    13751374msgstr "" 
    1376 "Alleen ingelogde gebruikers kunnen deze pagina zien, indien dit is
    1377 "aangekruist." 
     1375"Indien dit is aangekruist kunnen alleen ingelogde gebruikers deze pagina
     1376"bekijken." 
    13781377 
    13791378#: contrib/flatpages/models.py:18 
     
    14061405"'http://'." 
    14071406msgstr "" 
    1408 "Dit kan een absoluut pad zijn (zoals boven) of een volledige URL beginnend
    1409 "met 'http://'." 
     1407"Dit kan een absoluut pad (zoals hierboven) zijn of een volledige URL
     1408"beginnend met 'http://'." 
    14101409 
    14111410#: contrib/redirects/models.py:12 
     
    14721471#: contrib/comments/models.py:84 contrib/comments/models.py:170 
    14731472msgid "is public" 
    1474 msgstr "is publiek
     1473msgstr "is openbaar
    14751474 
    14761475#: contrib/comments/models.py:86 
     
    15191518#: contrib/comments/models.py:173 
    15201519msgid "approved by staff" 
    1521 msgstr "goegekeurd door de staf" 
     1520msgstr "goedgekeurd door de staf" 
    15221521 
    15231522#: contrib/comments/models.py:176 
     
    16051604#: contrib/comments/views/karma.py:25 
    16061605msgid "No voting for yourself" 
    1607 msgstr "Niet op jezelf stemmen" 
     1606msgstr "Niet op uzelf stemmen" 
    16081607 
    16091608#: contrib/comments/views/comments.py:28 
     
    16111610"This rating is required because you've entered at least one other rating." 
    16121611msgstr "" 
    1613 "Deze waardering is verplicht omdat je op zijn minst een andere waardering
    1614 "hebt ingevoerd." 
     1612"Deze waardering is verplicht omdat u tenminste één andere waardering hebt
     1613"ingevoerd." 
    16151614 
    16161615#: contrib/comments/views/comments.py:112 
     
    16271626"%(text)s" 
    16281627msgstr[0] "" 
    1629 "Deze opmerking is gepost door een gebruiker welke minder dan %(count)s opmerking
    1630 "heeft gepost:\n" 
     1628"Deze opmerking is gepost door een gebruiker die minder dan %(count)s
     1629"opmerking heeft gepost:\n" 
    16311630"\n" 
    16321631"%(text)s" 
    16331632msgstr[1] "" 
    1634 "Deze opmerking is gepost door een gebruiker welke minder dan %(count)s opmerkingen
    1635 "heeft gepost:\n" 
     1633"Deze opmerking is gepost door een gebruiker die minder dan %(count)s
     1634"opmerkingen heeft gepost:\n" 
    16361635"\n" 
    16371636"%(text)s" 
     
    16561655#: contrib/comments/views/comments.py:284 
    16571656msgid "One or more of the required fields wasn't submitted" 
    1658 msgstr "Een of meerdere verplichte velden is niet ingevuld" 
     1657msgstr "Een of meerdere verplichte velden zijn niet ingevuld" 
    16591658 
    16601659#: contrib/comments/views/comments.py:197 
     
    17111710#: contrib/comments/templates/comments/freeform.html:4 
    17121711msgid "Your name:" 
    1713 msgstr "Uw gebruikernaam:" 
     1712msgstr "Uw gebruikersnaam:" 
    17141713 
    17151714#: contrib/sessions/models.py:35 
     
    17391738#: contrib/contenttypes/models.py:28 
    17401739msgid "content type" 
    1741 msgstr "inhoudtype" 
     1740msgstr "inhoudstype" 
    17421741 
    17431742#: contrib/contenttypes/models.py:29 
    17441743msgid "content types" 
    1745 msgstr "inhoudtypen" 
     1744msgstr "inhoudstypen" 
    17461745 
    17471746#: forms/__init__.py:380 
     
    17491748msgid "Ensure your text is less than %s character." 
    17501749msgid_plural "Ensure your text is less than %s characters." 
    1751 msgstr[0] "Zorg ervoor dat uw tekst korter is dan %s teken." 
    1752 msgstr[1] "Zorg ervoor dat uw tekst korter is dan %S tekens." 
     1750msgstr[0] "Zorg ervoor dat uw tekst korter is dan %s karakter." 
     1751msgstr[1] "Zorg ervoor dat uw tekst korter is dan %s karakters." 
    17531752 
    17541753#: forms/__init__.py:385 
     
    17791778#: utils/dates.py:6 
    17801779msgid "Monday" 
    1781 msgstr "Maandag" 
     1780msgstr "maandag" 
    17821781 
    17831782#: utils/dates.py:6 
    17841783msgid "Tuesday" 
    1785 msgstr "Dinsdag" 
     1784msgstr "dinsdag" 
    17861785 
    17871786#: utils/dates.py:6 
    17881787msgid "Wednesday" 
    1789 msgstr "Woensdag" 
     1788msgstr "woensdag" 
    17901789 
    17911790#: utils/dates.py:6 
    17921791msgid "Thursday" 
    1793 msgstr "Donderdag" 
     1792msgstr "donderdag" 
    17941793 
    17951794#: utils/dates.py:6 
    17961795msgid "Friday" 
    1797 msgstr "Vrijdag" 
     1796msgstr "vrijdag" 
    17981797 
    17991798#: utils/dates.py:7 
    18001799msgid "Saturday" 
    1801 msgstr "Zaterdag" 
     1800msgstr "zaterdag" 
    18021801 
    18031802#: utils/dates.py:7 
    18041803msgid "Sunday" 
    1805 msgstr "Zondag" 
     1804msgstr "zondag" 
    18061805 
    18071806#: utils/dates.py:14 
     
    18911890#: utils/dates.py:20 
    18921891msgid "oct" 
    1893 msgstr "oct" 
     1892msgstr "okt" 
    18941893 
    18951894#: utils/dates.py:20 
  • django/branches/multi-auth/django/conf/urls/registration.py

    r2809 r3086  
    22 
    33urlpatterns = patterns('', 
    4     (r'^login/$', 'django.contrib.auth.view.login'), 
     4    (r'^login/$', 'django.contrib.auth.views.login'), 
    55    (r'^logout/$', 'django.contrib.auth.views.logout'), 
    66    (r'^login_another/$', 'django.contrib.auth.views.logout_then_login'), 
  • django/branches/multi-auth/django/contrib/admin/media/css/changelists.css

    r2809 r3086  
    55#changelist table { width:100%; } 
    66.change-list .filtered table { border-right:1px solid #ddd;  } 
    7 .change-list .filtered { min-height:400px; _height:400px;
     7.change-list .filtered { min-height:400px;
    88.change-list .filtered { background:white url(../img/admin/changelist-bg.gif) top right repeat-y !important; } 
    99.change-list .filtered table, .change-list .filtered .paginator, .filtered #toolbar, .filtered div.xfull { margin-right:160px !important; width:auto !important; } 
     
    2828#changelist-filter h2 { font-size:11px; padding:2px 5px; border-bottom:1px solid #ddd; } 
    2929#changelist-filter h3 { font-size:12px; margin-bottom:0; } 
    30 #changelist-filter ul { padding-left:0;margin-left:10px;_margin-right:-10px;
     30#changelist-filter ul { padding-left:0;margin-left:10px;
    3131#changelist-filter li { list-style-type:none; margin-left:0; padding-left:0; } 
    3232#changelist-filter a { color:#999; } 
  • django/branches/multi-auth/django/contrib/admin/media/css/global.css

    r2809 r3086  
    8787 
    8888/*  FORM BUTTONS  */ 
    89 input[type=submit], input[type=button], .submit-row input { background:white url(../img/admin/nav-bg.gif) bottom repeat-x; padding:3px; color:black;
     89input[type=submit], input[type=button], .submit-row input { background:white url(../img/admin/nav-bg.gif) bottom repeat-x; padding:3px; color:black; border:1px solid #bbb; border-color:#ddd #aaa #aaa #ddd;
    9090input[type=submit]:active, input[type=button]:active { background-image:url(../img/admin/nav-bg-reverse.gif); background-position:top; } 
    9191input[type=submit].default, .submit-row input.default { border:2px solid #5b80b2; background:#7CA0C7 url(../img/admin/default-bg.gif) bottom repeat-x; font-weight:bold; color:white; } 
  • django/branches/multi-auth/django/contrib/admin/media/css/layout.css

    r2891 r3086  
    44#header { width:100%; } 
    55#content-main { float:left; width:100%; } 
    6 #content-related { float:right; width:220px; position:relative; margin-right:-230px; } 
     6#content-related { float:right; width:18em; position:relative; margin-right:-19em; } 
    77#footer { clear:both; padding:10px; } 
    88 
    99/*  COLUMN TYPES  */ 
    10 .colMS { margin-right:245px !important; } 
    11 .colSM { margin-left:245px !important; } 
    12 .colSM #content-related { float:left; margin-right:0; margin-left:-230px; } 
     10.colMS { margin-right:20em !important; } 
     11.colSM { margin-left:20em !important; } 
     12.colSM #content-related { float:left; margin-right:0; margin-left:-19em; } 
    1313.colSM #content-main { float:right; } 
    1414.popup .colM { width:95%; } 
  • django/branches/multi-auth/django/contrib/admin/media/css/patch-iewin.css

    r2809 r3086  
    55* html .dashboard #content { width:768px; } /* proper fixed width for dashboard in IE6 */ 
    66* html .dashboard #content-main { width:535px; } /* proper fixed width for dashboard in IE6 */ 
     7* html #changelist-filter ul { margin-right:-10px; } /* fix right margin for changelist filters in IE6 */ 
     8* html .change-list .filtered { height:400px; } /* IE ignores min-height, but treats height as if it were min-height */ 
  • django/branches/multi-auth/django/contrib/admin/media/js/admin/RelatedObjectLookups.js

    r2809 r3086  
    44function showRelatedObjectLookupPopup(triggeringLink) { 
    55    var name = triggeringLink.id.replace(/^lookup_/, ''); 
     6    // IE doesn't like periods in the window name, so convert temporarily. 
     7    name = name.replace(/\./g, '___'); 
    68    var href; 
    79    if (triggeringLink.href.search(/\?/) >= 0) { 
     
    1618 
    1719function dismissRelatedLookupPopup(win, chosenId) { 
    18     var elem = document.getElementById(win.name); 
     20    var name = win.name.replace(/___/g, '.'); 
     21    var elem = document.getElementById(name); 
    1922    if (elem.className.indexOf('vRawIdAdminField') != -1 && elem.value) { 
    2023        elem.value += ',' + chosenId; 
    2124    } else { 
    22         document.getElementById(win.name).value = chosenId; 
     25        document.getElementById(name).value = chosenId; 
    2326    } 
    2427    win.close(); 
  • django/branches/multi-auth/django/contrib/admin/templates/admin/base.html

    r2117 r3086  
    2020        {% block branding %}{% endblock %} 
    2121        </div> 
    22         {% if not user.is_anonymous %} 
     22        {% if not user.is_anonymous %}{% if user.is_staff %} 
    2323        <div id="user-tools">{% trans 'Welcome,' %} <strong>{% if user.first_name %}{{ user.first_name }}{% else %}{{ user.username }}{% endif %}</strong>. {% block userlinks %}<a href="doc/">{% trans 'Documentation' %}</a> / <a href="password_change/">{% trans 'Change password' %}</a> / <a href="logout/">{% trans 'Log out' %}</a>{% endblock %}</div> 
    24         {% endif %} 
     24        {% endif %}{% endif %} 
    2525        {% block nav-global %}{% endblock %} 
    2626    </div> 
  • django/branches/multi-auth/django/contrib/admin/templatetags/admin_list.py

    r2844 r3086  
    33from django.contrib.admin.views.main import MAX_SHOW_ALL_ALLOWED, ALL_VAR 
    44from django.contrib.admin.views.main import ORDER_VAR, ORDER_TYPE_VAR, PAGE_VAR, SEARCH_VAR 
    5 from django.contrib.admin.views.main import IS_POPUP_VAR, EMPTY_CHANGELIST_VALUE, MONTHS 
     5from django.contrib.admin.views.main import IS_POPUP_VAR, EMPTY_CHANGELIST_VALUE 
    66from django.core.exceptions import ObjectDoesNotExist 
    77from django.db import models 
     
    99from django.utils.html import escape 
    1010from django.utils.text import capfirst 
    11 from django.utils.translation import get_date_formats 
     11from django.utils.translation import get_date_formats, get_partial_date_formats 
    1212from django.template import Library 
     13import datetime 
    1314 
    1415register = Library() 
     
    194195        month_lookup = cl.params.get(month_field) 
    195196        day_lookup = cl.params.get(day_field) 
     197        year_month_format, month_day_format = get_partial_date_formats() 
    196198 
    197199        link = lambda d: cl.get_query_string(d, [field_generic]) 
    198200 
    199201        if year_lookup and month_lookup and day_lookup: 
    200             month_name = MONTHS[int(month_lookup)] 
     202            day = datetime.date(int(year_lookup), int(month_lookup), int(day_lookup)) 
    201203            return { 
    202204                'show': True, 
    203205                'back': { 
    204206                    'link': link({year_field: year_lookup, month_field: month_lookup}), 
    205                     'title': "%s %s" % (month_name, year_lookup
     207                    'title': dateformat.format(day, year_month_format
    206208                }, 
    207                 'choices': [{'title': "%s %s" % (month_name, day_lookup)}] 
     209                'choices': [{'title': dateformat.format(day, month_day_format)}] 
    208210            } 
    209211        elif year_lookup and month_lookup: 
     
    217219                'choices': [{ 
    218220                    'link': link({year_field: year_lookup, month_field: month_lookup, day_field: day.day}), 
    219                     'title': day.strftime('%B %d'
     221                    'title': dateformat.format(day, month_day_format
    220222                } for day in days] 
    221223            } 
     
    230232                'choices': [{ 
    231233                    'link': link({year_field: year_lookup, month_field: month.month}), 
    232                     'title': "%s %s" % (month.strftime('%B'), month.year
     234                    'title': dateformat.format(month, year_month_format
    233235                } for month in months] 
    234236            } 
  • django/branches/multi-auth/django/contrib/admin/utils.py

    r2809 r3086  
    8282 
    8383def create_reference_role(rolename, urlbase): 
    84     def _role(name, rawtext, text, lineno, inliner, options={}, content=[]): 
     84    def _role(name, rawtext, text, lineno, inliner, options=None, content=None): 
     85        if options is None: options = {} 
     86        if content is None: content = [] 
    8587        node = docutils.nodes.reference(rawtext, text, refuri=(urlbase % (inliner.document.settings.link_base, text.lower())), **options) 
    8688        return [node], [] 
    8789    docutils.parsers.rst.roles.register_canonical_role(rolename, _role) 
    8890 
    89 def default_reference_role(name, rawtext, text, lineno, inliner, options={}, content=[]): 
     91def default_reference_role(name, rawtext, text, lineno, inliner, options=None, content=None): 
     92    if options is None: options = {} 
     93    if content is None: content = [] 
    9094    context = inliner.document.settings.default_reference_context 
    9195    node = docutils.nodes.reference(rawtext, text, refuri=(ROLES[context] % (inliner.document.settings.link_base, text.lower())), **options) 
  • django/branches/multi-auth/django/contrib/admin/views/main.py

    r3052 r3086  
    580580        return filter_specs, bool(filter_specs) 
    581581 
    582     def get_query_string(self, new_params={}, remove=[]): 
     582    def get_query_string(self, new_params=None, remove=None): 
     583        if new_params is None: new_params = {} 
     584        if remove is None: remove = [] 
    583585        p = self.params.copy() 
    584586        for r in remove: 
  • django/branches/multi-auth/django/contrib/auth/forms.py

    r2887 r3086  
    3636        if self.user_cache is None: 
    3737            raise validators.ValidationError, _("Please enter a correct username and password. Note that both fields are case-sensitive.") 
     38        elif not self.user_cache.is_active: 
     39            raise validators.ValidationError, _("This account is inactive.") 
    3840 
    3941    def get_user_id(self): 
  • django/branches/multi-auth/django/core/management.py

    r3052 r3086  
    10561056            raise ImportError 
    10571057        import IPython 
    1058         shell = IPython.Shell.IPShell() 
     1058        # Explicitly pass an empty list as arguments, because otherwise IPython 
     1059        # would use sys.argv from this script. 
     1060        shell = IPython.Shell.IPShell(argv=[]) 
    10591061        shell.mainloop() 
    10601062    except ImportError: 
     
    11381140    sys.exit(1) 
    11391141 
    1140 def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING): 
     1142def execute_from_command_line(action_mapping=DEFAULT_ACTION_MAPPING, argv=None): 
     1143    # Use sys.argv if we've not passed in a custom argv 
     1144    if argv is None: 
     1145        argv = sys.argv 
     1146 
    11411147    # Parse the command-line arguments. optparse handles the dirty work. 
    11421148    parser = DjangoOptionParser(usage=get_usage(action_mapping), version=get_version()) 
     
    11471153    parser.add_option('--plain', action='store_true', dest='plain', 
    11481154        help='Tells Django to use plain Python, not IPython, for "shell" command.') 
    1149     options, args = parser.parse_args(
     1155    options, args = parser.parse_args(argv[1:]
    11501156 
    11511157    # Take care of options. 
     
    11621168        parser.print_usage_and_exit() 
    11631169    if not action_mapping.has_key(action): 
    1164         print_error("Your action, %r, was invalid." % action, sys.argv[0]) 
     1170        print_error("Your action, %r, was invalid." % action, argv[0]) 
    11651171 
    11661172    # Switch to English, because django-admin.py creates database content 
     
    12211227            print style.SQL_KEYWORD("COMMIT;") 
    12221228 
    1223 def execute_manager(settings_mod): 
     1229def execute_manager(settings_mod, argv=None): 
    12241230    # Add this project to sys.path so that it's importable in the conventional 
    12251231    # way. For example, if this file (manage.py) lives in a directory 
     
    12481254 
    12491255    # Run the django-admin.py command. 
    1250     execute_from_command_line(action_mapping
     1256    execute_from_command_line(action_mapping, argv
  • django/branches/multi-auth/django/core/urlresolvers.py

    r2921 r3086  
    2323    dot = callback.rindex('.') 
    2424    return callback[:dot], callback[dot+1:] 
     25 
     26def reverse_helper(regex, *args, **kwargs): 
     27    """ 
     28    Does a "reverse" lookup -- returns the URL for the given args/kwargs. 
     29    The args/kwargs are applied to the given compiled regular expression. 
     30    For example: 
     31 
     32        >>> reverse_helper(re.compile('^places/(\d+)/$'), 3) 
     33        'places/3/' 
     34        >>> reverse_helper(re.compile('^places/(?P<id>\d+)/$'), id=3) 
     35        'places/3/' 
     36        >>> reverse_helper(re.compile('^people/(?P<state>\w\w)/(\w+)/$'), 'adrian', state='il') 
     37        'people/il/adrian/' 
     38 
     39    Raises NoReverseMatch if the args/kwargs aren't valid for the regex. 
     40    """ 
     41    # TODO: Handle nested parenthesis in the following regex. 
     42    result = re.sub(r'\(([^)]+)\)', MatchChecker(args, kwargs), regex.pattern) 
     43    return result.replace('^', '').replace('$', '') 
    2544 
    2645class MatchChecker(object): 
     
    109128 
    110129    def reverse_helper(self, *args, **kwargs): 
    111         """ 
    112         Does a "reverse" lookup -- returns the URL for the given args/kwargs. 
    113     &nbs