Django

Code

Changeset 4242

Show
Ignore:
Timestamp:
12/26/06 20:49:28 (2 years ago)
Author:
adrian
Message:

per-object-permissions: Merged to trunk [4241]

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/per-object-permissions/AUTHORS

    r4096 r4242  
    119119    Petar Marić 
    120120    mark@junklight.com 
     121    Yasushi Masuda <whosaysni@gmail.com> 
    121122    mattycakes@gmail.com 
    122123    Jason McBrayer <http://www.carcosa.net/jason/> 
    123124    mccutchen@gmail.com 
    124125    michael.mcewan@gmail.com 
     126    mitakummaa@gmail.com 
    125127    mmarshall 
    126128    Eric Moritz <http://eric.themoritzfamily.com/> 
     
    152154    sopel 
    153155    Thomas Steinacher <tom@eggdrop.ch> 
     156    nowell strite 
    154157    Radek Švarz <http://www.svarz.cz/translate/> 
    155158    Swaroop C H <http://www.swaroopch.info> 
     
    160163    Joe Topjian <http://joe.terrarum.net/geek/code/python/django/> 
    161164    Karen Tracey <graybark@bellsouth.net> 
     165    Makoto Tsuyuki <mtsuyuki@gmail.com> 
    162166    Amit Upadhyay 
    163167    Geert Vanderkelen 
  • django/branches/per-object-permissions/django/conf/global_settings.py

    r4096 r4242  
    2626 
    2727# Local time zone for this installation. All choices can be found here: 
    28 # http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE 
     28# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE 
    2929TIME_ZONE = 'America/Chicago' 
    3030 
  • django/branches/per-object-permissions/django/conf/project_template/settings.py

    r3630 r4242  
    1818 
    1919# Local time zone for this installation. All choices can be found here: 
    20 # http://www.postgresql.org/docs/current/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE 
     20# http://www.postgresql.org/docs/8.1/static/datetime-keywords.html#DATETIME-TIMEZONE-SET-TABLE 
    2121TIME_ZONE = 'America/Chicago' 
    2222 
  • django/branches/per-object-permissions/django/conf/project_template/urls.py

    r2809 r4242  
    33urlpatterns = patterns('', 
    44    # Example: 
    5     # (r'^{{ project_name }}/', include('{{ project_name }}.apps.foo.urls.foo')), 
     5    # (r'^{{ project_name }}/', include('{{ project_name }}.foo.urls')), 
    66 
    77    # Uncomment this for admin: 
  • django/branches/per-object-permissions/django/contrib/admin/templates/admin/base.html

    r3630 r4242  
    3939        {% block pretitle %}{% endblock %} 
    4040        {% block content_title %}{% if title %}<h1>{{ title|escape }}</h1>{% endif %}{% endblock %} 
    41         {% block content %}{{ content }}{% endblock %} 
     41        {% block content %} 
     42        {% block object-tools %}{% endblock %} 
     43        {{ content }} 
     44        {% endblock %} 
    4245        {% block sidebar %}{% endblock %} 
    4346        <br class="clear" /> 
  • django/branches/per-object-permissions/django/contrib/admin/templates/admin/change_form.html

    r3843 r4242  
    1717{% endif %}{% endblock %} 
    1818{% block content %}<div id="content-main"> 
     19{% block object-tools %} 
    1920{% if change %}{% if not is_popup %} 
    2021  <ul class="object-tools"><li><a href="history/" class="historylink">{% trans "History" %}</a></li> 
     
    2324  </ul> 
    2425{% endif %}{% endif %} 
     26{% endblock %} 
    2527<form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.module_name }}_form">{% block form_top %}{% endblock %} 
    2628<div> 
  • django/branches/per-object-permissions/django/contrib/admin/templates/admin/change_list.html

    r3464 r4242  
    88{% block content %} 
    99<div id="content-main"> 
     10{% block object-tools %} 
    1011{% if has_add_permission %} 
    1112<ul class="object-tools"><li><a href="add/{% if is_popup %}?_popup=1{% endif %}" class="addlink">{% blocktrans with cl.opts.verbose_name|escape as name %}Add {{ name }}{% endblocktrans %}</a></li></ul> 
    1213{% endif %} 
     14{% endblock %} 
    1315<div class="module{% if cl.has_filters %} filtered{% endif %}" id="changelist"> 
    1416{% block search %}{% search_form cl %}{% endblock %} 
  • django/branches/per-object-permissions/django/contrib/admin/templates/admin/search_form.html

    r3097 r4242  
    88<input type="submit" value="{% trans 'Go' %}" /> 
    99{% if show_result_count %} 
    10     <span class="small quiet">{% blocktrans count cl.result_count as counter %}1 result{% plural %}{{ counter }} results{% endblocktrans %} (<a href="?">{% blocktrans with cl.full_result_count as full_result_count %}{{ full_result_count }} total{% endblocktrans %}</a>)</span> 
     10    <span class="small quiet">{% blocktrans count cl.result_count as counter %}1 result{% plural %}{{ counter }} results{% endblocktrans %} (<a href="?{% if cl.is_popup %}pop=1{% endif %}">{% blocktrans with cl.full_result_count as full_result_count %}{{ full_result_count }} total{% endblocktrans %}</a>)</span> 
    1111{% endif %} 
    1212{% for pair in cl.params.items %} 
  • django/branches/per-object-permissions/django/contrib/admin/views/auth.py

    r3940 r4242  
    33from django.contrib.auth.models import User 
    44from django.core.exceptions import PermissionDenied 
    5 from django import forms, template 
     5from django import oldforms, template 
    66from django.shortcuts import render_to_response 
    77from django.http import HttpResponseRedirect 
     
    2525    else: 
    2626        errors = new_data = {} 
    27     form = forms.FormWrapper(manipulator, new_data, errors) 
     27    form = oldforms.FormWrapper(manipulator, new_data, errors) 
    2828    return render_to_response('admin/auth/user/add_form.html', { 
    2929        'title': _('Add user'), 
  • django/branches/per-object-permissions/django/contrib/admin/views/main.py

    r3940 r4242  
    1 from django import forms, template 
     1from django import oldforms, template 
    22from django.conf import settings 
    33from django.contrib.admin.filterspecs import FilterSpec 
     
    228228    model = models.get_model(app_label, model_name) 
    229229    if model is None: 
    230         raise Http404, "App %r, model %r, not found" % (app_label, model_name
     230        raise Http404("App %r, model %r, not found" % (app_label, model_name)
    231231    opts = model._meta 
    232232 
     
    300300 
    301301    # Populate the FormWrapper. 
    302     form = forms.FormWrapper(manipulator, new_data, errors) 
     302    form = oldforms.FormWrapper(manipulator, new_data, errors) 
    303303 
    304304    c = template.RequestContext(request, { 
     
    319319    object_id = unquote(object_id) 
    320320    if model is None: 
    321         raise Http404, "App %r, model %r, not found" % (app_label, model_name
     321        raise Http404("App %r, model %r, not found" % (app_label, model_name)
    322322    opts = model._meta 
    323323 
     
    325325        manipulator = model.ChangeManipulator(object_id) 
    326326    except ObjectDoesNotExist: 
    327         raise Http404 
     327        raise Http404('%s object with primary key %r does not exist' % (model_name, escape(object_id))) 
    328328 
    329329    if not request.user.has_perm(app_label + '.' + opts.get_change_permission(), object=manipulator.original_object): 
     
    332332    if request.POST and request.POST.has_key("_saveasnew"): 
    333333        return add_stage(request, app_label, model_name, form_url='../../add/') 
    334  
    335  
    336334 
    337335    if request.POST: 
     
    401399 
    402400    # Populate the FormWrapper. 
    403     form = forms.FormWrapper(manipulator, new_data, errors) 
     401    form = oldforms.FormWrapper(manipulator, new_data, errors) 
    404402    form.original = manipulator.original_object 
    405403    form.order_objects = [] 
     
    520518    object_id = unquote(object_id) 
    521519    if model is None: 
    522         raise Http404, "App %r, model %r, not found" % (app_label, model_name
     520        raise Http404("App %r, model %r, not found" % (app_label, model_name)
    523521    opts = model._meta 
    524522 
     
    559557    object_id = unquote(object_id) 
    560558    if model is None: 
    561         raise Http404, "App %r, model %r, not found" % (app_label, model_name
     559        raise Http404("App %r, model %r, not found" % (app_label, model_name)
    562560    action_list = LogEntry.objects.filter(object_id=object_id, 
    563561        content_type__id__exact=ContentType.objects.get_for_model(model).id).select_related().order_by('action_time') 
     
    789787    model = models.get_model(app_label, model_name) 
    790788    if model is None: 
    791         raise Http404, "App %r, model %r, not found" % (app_label, model_name
     789        raise Http404("App %r, model %r, not found" % (app_label, model_name)
    792790    if not request.user.contains_permission(app_label + '.' + model._meta.get_change_permission(), model): 
    793791        raise PermissionDenied 
  • django/branches/per-object-permissions/django/contrib/admin/views/template.py

    r4096 r4242  
    11from django.contrib.admin.views.decorators import staff_member_required 
    22from django.core import validators 
    3 from django import template, forms 
     3from django import template, oldforms 
    44from django.template import loader 
    55from django.shortcuts import render_to_response 
     
    2626    return render_to_response('admin/template_validator.html', { 
    2727        'title': 'Template validator', 
    28         'form': forms.FormWrapper(manipulator, new_data, errors), 
     28        'form': oldforms.FormWrapper(manipulator, new_data, errors), 
    2929    }, context_instance=template.RequestContext(request)) 
    3030template_validator = staff_member_required(template_validator) 
    3131 
    32 class TemplateValidator(forms.Manipulator): 
     32class TemplateValidator(oldforms.Manipulator): 
    3333    def __init__(self, settings_modules): 
    3434        self.settings_modules = settings_modules 
    3535        site_list = Site.objects.in_bulk(settings_modules.keys()).values() 
    3636        self.fields = ( 
    37             forms.SelectField('site', is_required=True, choices=[(s.id, s.name) for s in site_list]), 
    38             forms.LargeTextField('template', is_required=True, rows=25, validator_list=[self.isValidTemplate]), 
     37            oldforms.SelectField('site', is_required=True, choices=[(s.id, s.name) for s in site_list]), 
     38            oldforms.LargeTextField('template', is_required=True, rows=25, validator_list=[self.isValidTemplate]), 
    3939        ) 
    4040 
  • django/branches/per-object-permissions/django/contrib/auth/forms.py

    r3940 r4242  
    44from django.template import Context, loader 
    55from django.core import validators 
    6 from django import forms 
     6from django import oldforms 
    77 
    8 class UserCreationForm(forms.Manipulator): 
     8class UserCreationForm(oldforms.Manipulator): 
    99    "A form that creates a user, with no privileges, from the given username and password." 
    1010    def __init__(self): 
    1111        self.fields = ( 
    12             forms.TextField(field_name='username', length=30, maxlength=30, is_required=True, 
     12            oldforms.TextField(field_name='username', length=30, maxlength=30, is_required=True, 
    1313                validator_list=[validators.isAlphaNumeric, self.isValidUsername]), 
    14             forms.PasswordField(field_name='password1', length=30, maxlength=60, is_required=True), 
    15             forms.PasswordField(field_name='password2', length=30, maxlength=60, is_required=True, 
     14            oldforms.PasswordField(field_name='password1', length=30, maxlength=60, is_required=True), 
     15            oldforms.PasswordField(field_name='password2', length=30, maxlength=60, is_required=True, 
    1616                validator_list=[validators.AlwaysMatchesOtherField('password1', _("The two password fields didn't match."))]), 
    1717        ) 
     
    2828        return User.objects.create_user(new_data['username'], '', new_data['password1']) 
    2929 
    30 class AuthenticationForm(forms.Manipulator): 
     30class AuthenticationForm(oldforms.Manipulator): 
    3131    """ 
    3232    Base class for authenticating users. Extend this to get a form that accepts 
     
    4242        self.request = request 
    4343        self.fields = [ 
    44             forms.TextField(field_name="username", length=15, maxlength=30, is_required=True, 
     44            oldforms.TextField(field_name="username", length=15, maxlength=30, is_required=True, 
    4545                validator_list=[self.isValidUser, self.hasCookiesEnabled]), 
    46             forms.PasswordField(field_name="password", length=15, maxlength=30, is_required=True), 
     46            oldforms.PasswordField(field_name="password", length=15, maxlength=30, is_required=True), 
    4747        ] 
    4848        self.user_cache = None 
     
    6969        return self.user_cache 
    7070 
    71 class PasswordResetForm(forms.Manipulator): 
     71class PasswordResetForm(oldforms.Manipulator): 
    7272    "A form that lets a user request a password reset" 
    7373    def __init__(self): 
    7474        self.fields = ( 
    75             forms.EmailField(field_name="email", length=40, is_required=True, 
     75            oldforms.EmailField(field_name="email", length=40, is_required=True, 
    7676                validator_list=[self.isValidUserEmail]), 
    7777        ) 
     
    106106        send_mail('Password reset on %s' % site_name, t.render(Context(c)), None, [self.user_cache.email]) 
    107107 
    108 class PasswordChangeForm(forms.Manipulator): 
     108class PasswordChangeForm(oldforms.Manipulator): 
    109109    "A form that lets a user change his password." 
    110110    def __init__(self, user): 
    111111        self.user = user 
    112112        self.fields = ( 
    113             forms.PasswordField(field_name="old_password", length=30, maxlength=30, is_required=True, 
     113            oldforms.PasswordField(field_name="old_password", length=30, maxlength=30, is_required=True, 
    114114                validator_list=[self.isValidOldPassword]), 
    115             forms.PasswordField(field_name="new_password1", length=30, maxlength=30, is_required=True, 
     115            oldforms.PasswordField(field_name="new_password1", length=30, maxlength=30, is_required=True, 
    116116                validator_list=[validators.AlwaysMatchesOtherField('new_password2', _("The two 'new password' fields didn't match."))]), 
    117             forms.PasswordField(field_name="new_password2", length=30, maxlength=30, is_required=True), 
     117            oldforms.PasswordField(field_name="new_password2", length=30, maxlength=30, is_required=True), 
    118118        ) 
    119119 
  • django/branches/per-object-permissions/django/contrib/auth/views.py

    r3464 r4242  
    11from django.contrib.auth.forms import AuthenticationForm 
    22from django.contrib.auth.forms import PasswordResetForm, PasswordChangeForm 
    3 from django import forms 
     3from django import oldforms 
    44from django.shortcuts import render_to_response 
    55from django.template import RequestContext 
     
    2727    request.session.set_test_cookie() 
    2828    return render_to_response(template_name, { 
    29         'form': forms.FormWrapper(manipulator, request.POST, errors), 
     29        'form': oldforms.FormWrapper(manipulator, request.POST, errors), 
    3030        REDIRECT_FIELD_NAME: redirect_to, 
    3131        'site_name': Site.objects.get_current().name, 
     
    6363                form.save(email_template_name=email_template_name) 
    6464            return HttpResponseRedirect('%sdone/' % request.path) 
    65     return render_to_response(template_name, {'form': forms.FormWrapper(form, new_data, errors)}, 
     65    return render_to_response(template_name, {'form': oldforms.FormWrapper(form, new_data, errors)}, 
    6666        context_instance=RequestContext(request)) 
    6767 
     
    7878            form.save(new_data) 
    7979            return HttpResponseRedirect('%sdone/' % request.path) 
    80     return render_to_response(template_name, {'form': forms.FormWrapper(form, new_data, errors)}, 
     80    return render_to_response(template_name, {'form': oldforms.FormWrapper(form, new_data, errors)}, 
    8181        context_instance=RequestContext(request)) 
    8282password_change = login_required(password_change) 
  • django/branches/per-object-permissions/django/contrib/comments/views/comments.py

    r3940 r4242  
    11from django.core import validators 
    2 from django import forms 
     2from django import oldforms 
    33from django.core.mail import mail_admins, mail_managers 
    44from django.http import Http404 
     
    2929                return [] 
    3030        self.fields.extend([ 
    31             forms.LargeTextField(field_name="comment", maxlength=3000, is_required=True, 
     31            oldforms.LargeTextField(field_name="comment", maxlength=3000, is_required=True, 
    3232                validator_list=[self.hasNoProfanities]), 
    33             forms.RadioSelectField(field_name="rating1", choices=choices, 
     33            oldforms.RadioSelectField(field_name="rating1", choices=choices, 
    3434                is_required=ratings_required and num_rating_choices > 0, 
    3535                validator_list=get_validator_list(1), 
    3636            ), 
    37             forms.RadioSelectField(field_name="rating2", choices=choices, 
     37            oldforms.RadioSelectField(field_name="rating2", choices=choices, 
    3838                is_required=ratings_required and num_rating_choices > 1, 
    3939                validator_list=get_validator_list(2), 
    4040            ), 
    41             forms.RadioSelectField(field_name="rating3", choices=choices, 
     41            oldforms.RadioSelectField(field_name="rating3", choices=choices, 
    4242                is_required=ratings_required and num_rating_choices > 2, 
    4343                validator_list=get_validator_list(3), 
    4444            ), 
    45             forms.RadioSelectField(field_name="rating4", choices=choices, 
     45            oldforms.RadioSelectField(field_name="rating4", choices=choices, 
    4646                is_required=ratings_required and num_rating_choices > 3, 
    4747                validator_list=get_validator_list(4), 
    4848            ), 
    49             forms.RadioSelectField(field_name="rating5", choices=choices, 
     49            oldforms.RadioSelectField(field_name="rating5", choices=choices, 
    5050                is_required=ratings_required and num_rating_choices > 4, 
    5151                validator_list=get_validator_list(5), 
    5252            ), 
    53             forms.RadioSelectField(field_name="rating6", choices=choices, 
     53            oldforms.RadioSelectField(field_name="rating6", choices=choices, 
    5454                is_required=ratings_required and num_rating_choices > 5, 
    5555                validator_list=get_validator_list(6), 
    5656            ), 
    57             forms.RadioSelectField(field_name="rating7", choices=choices, 
     57            oldforms.RadioSelectField(field_name="rating7", choices=choices, 
    5858                is_required=ratings_required and num_rating_choices > 6, 
    5959                validator_list=get_validator_list(7), 
    6060            ), 
    61             forms.RadioSelectField(field_name="rating8", choices=choices, 
     61            oldforms.RadioSelectField(field_name="rating8", choices=choices, 
    6262                is_required=ratings_required and num_rating_choices > 7, 
    6363                validator_list=get_validator_list(8), 
     
    118118        return c 
    119119 
    120 class PublicFreeCommentManipulator(forms.Manipulator): 
     120class PublicFreeCommentManipulator(oldforms.Manipulator): 
    121121    "Manipulator that handles public free (unregistered) comments" 
    122122    def __init__(self): 
    123123        self.fields = ( 
    124             forms.TextField(field_name="person_name", maxlength=50, is_required=True, 
     124            oldforms.TextField(field_name="person_name", maxlength=50, is_required=True, 
    125125                validator_list=[self.hasNoProfanities]), 
    126             forms.LargeTextField(field_name="comment", maxlength=3000, is_required=True, 
     126            oldforms.LargeTextField(field_name="comment", maxlength=3000, is_required=True, 
    127127                validator_list=[self.hasNoProfanities]), 
    128128        ) 
     
    222222        login(request, manipulator.get_user()) 
    223223    if errors or request.POST.has_key('preview'): 
    224         class CommentFormWrapper(forms.FormWrapper): 
     224        class CommentFormWrapper(oldforms.FormWrapper): 
    225225            def __init__(self, manipulator, new_data, errors, rating_choices): 
    226                 forms.FormWrapper.__init__(self, manipulator, new_data, errors) 
     226                oldforms.FormWrapper.__init__(self, manipulator, new_data, errors) 
    227227                self.rating_choices = rating_choices 
    228228            def ratings(self): 
     
    303303        return render_to_response('comments/free_preview.html', { 
    304304            'comment': comment, 
    305             'comment_form': forms.FormWrapper(manipulator, new_data, errors), 
     305            'comment_form': oldforms.FormWrapper(manipulator, new_data, errors), 
    306306            'options': options, 
    307307            'target': target, 
  • django/branches/per-object-permissions/django/contrib/contenttypes/management.py

    r3669 r4242  
    44 
    55from django.dispatch import dispatcher 
    6 from django.db.models import get_models, signals 
     6from django.db.models import get_apps, get_models, signals 
    77 
    8 def create_contenttypes(app, created_models, verbosity): 
     8def create_contenttypes(app, created_models, verbosity=2): 
    99    from django.contrib.contenttypes.models import ContentType 
    1010    app_models = get_models(app) 
     
    2323                print "Adding content type '%s | %s'" % (ct.app_label, ct.model) 
    2424 
     25def create_all_contenttypes(verbosity=2): 
     26    for app in get_apps(): 
     27        create_contenttypes(app, None, verbosity) 
     28 
    2529dispatcher.connect(create_contenttypes, signal=signals.post_syncdb) 
     30 
     31if __name__ == "__main__": 
     32    create_all_contenttypes() 
  • django/branches/per-object-permissions/django/contrib/csrf/middleware.py

    r2900 r4242  
    1212import itertools 
    1313 
    14 _ERROR_MSG = "<h1>403 Forbidden</h1><p>Cross Site Request Forgery detected.  Request aborted.</p>" 
     14_ERROR_MSG = '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"><body><h1>403 Forbidden</h1><p>Cross Site Request Forgery detected. Request aborted.</p></body></html>' 
    1515 
    1616_POST_FORM_RE = \ 
  • django/branches/per-object-permissions/django/contrib/sitemaps/__init__.py

    r3732 r4242  
    3030    from django.contrib.sites.models import Site 
    3131    current_site = Site.objects.get_current() 
    32     url = "%s%s" % (current_site.domain, sitemap
     32    url = "%s%s" % (current_site.domain, sitemap_url
    3333    params = urllib.urlencode({'sitemap':url}) 
    3434    urllib.urlopen("%s?%s" % (ping_url, params)) 
  • django/branches/per-object-permissions/django/core/handlers/base.py

    r4096 r4242  
    6161                return response 
    6262 
    63         resolver = urlresolvers.RegexURLResolver(r'^/', settings.ROOT_URLCONF) 
     63        # Get urlconf from request object, if available.  Otherwise use default. 
     64        urlconf = getattr(request, "urlconf", settings.ROOT_URLCONF) 
     65 
     66        resolver = urlresolvers.RegexURLResolver(r'^/', urlconf) 
    6467        try: 
    6568            callback, callback_args, callback_kwargs = resolver.resolve(request.path) 
     
    8588            # Complain if the view returned None (a common error). 
    8689            if response is None: 
    87                 raise ValueError, "The view %s.%s didn't return an HttpResponse object." % (callback.__module__, callback.func_name) 
     90                try: 
     91                    view_name = callback.func_name # If it's a function 
     92                except AttributeError: 
     93                    view_name = callback.__class__.__name__ + '.__call__' # If it's a class 
     94                raise ValueError, "The view %s.%s didn't return an HttpResponse object." % (callback.__module__, view_name) 
    8895 
    8996            return response 
  • django/branches/per-object-permissions/django/core/handlers/wsgi.py

    r4096 r4242  
    6363    """ 
    6464    if not size: 
    65         return copyfileobj(fsrc, fdst, length) 
     65        return 
    6666    while size > 0: 
    6767        buf = fsrc.read(min(length, size)) 
     
    158158        except AttributeError: 
    159159            buf = StringIO() 
    160             # CONTENT_LENGTH might be absent if POST doesn't have content at all (lighttpd) 
    161             content_length = int(self.environ.get('CONTENT_LENGTH', 0)) 
     160            try: 
     161                # CONTENT_LENGTH might be absent if POST doesn't have content at all (lighttpd) 
     162                content_length = int(self.environ.get('CONTENT_LENGTH', 0)) 
     163            except ValueError: # if CONTENT_LENGTH was empty string or not an integer 
     164                content_length = 0 
    162165            safe_copyfileobj(self.environ['wsgi.input'], buf, size=content_length) 
    163166            self._raw_post_data = buf.getvalue() 
  • django/branches/per-object-permissions/django/core/servers/fastcgi.py

    r4096 r4242  
    119119        return fastcgi_help("ERROR: Implementation must be one of prefork or thread.") 
    120120 
     121    wsgi_opts['debug'] = False # Turn off flup tracebacks 
     122 
    121123    # Prep up and go 
    122124    from django.core.handlers.wsgi import WSGIHandler 
  • django/branches/per-object-permissions/django/db/backends/postgresql/base.py

    r4096 r4242  
    119119    Database.register_type(Database.new_type((1082,), "DATE", util.typecast_date)) 
    120120except AttributeError: 
    121     raise Exception, "You appear to be using psycopg version 2, which isn't supported yet, because it's still in beta. Use psycopg version 1 instead: http://initd.org/projects/psycopg1
     121    raise Exception, "You appear to be using psycopg version 2. Set your DATABASE_ENGINE to 'postgresql_psycopg2' instead of 'postgresql'.
    122122Database.register_type(Database.new_type((1083,1266), "TIME", util.typecast_time)) 
    123123Database.register_type(Database.new_type((1114,1184), "TIMESTAMP", util.typecast_timestamp)) 
  • django/branches/per-object-permissions/django/db/models/fields/generic.py

    r3767 r4242  
    33""" 
    44 
    5 from django import forms 
     5from django import oldforms 
    66from django.core.exceptions import ObjectDoesNotExist 
    77from django.db import backend 
     
    9999    def get_manipulator_field_objs(self): 
    100100        choices = self.get_choices_default() 
    101         return [curry(forms.SelectMultipleField, size=min(max(len(choices), 5), 15), choices=choices)] 
     101        return [curry(oldforms.SelectMultipleField, size=min(max(len(choices), 5), 15), choices=choices)] 
    102102 
    103103    def get_choices_default(self): 
  • django/branches/per-object-permissions/django/db/models/fields/__init__.py

    r4096 r4242  
    33from django.conf import settings 
    44from django.core import validators 
    5 from django import forms 
     5from django import oldforms 
     6from django import newforms as forms 
    67from django.core.exceptions import ObjectDoesNotExist 
    78from django.utils.functional import curry 
     
    207208        if self.choices: 
    208209            if self.radio_admin: 
    209                 field_objs = [forms.RadioSelectField] 
     210                field_objs = [oldforms.RadioSelectField] 
    210211                params['ul_class'] = get_ul_class(self.radio_admin) 
    211212            else: 
    212                 field_objs = [forms.SelectField] 
     213                field_objs = [oldforms.SelectField] 
    213214 
    214215            params['choices'] = self.get_choices_default() 
     
    219220    def get_manipulator_fields(self, opts, manipulator, change, name_prefix='', rel=False, follow=True): 
    220221        """ 
    221         Returns a list of forms.FormField