Django

Code

Changeset 3486

Show
Ignore:
Timestamp:
07/29/06 11:00:23 (2 years ago)
Author:
clong
Message:

[per-object-permissions] Very basic integration of RLPs into admin interface.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/branches/per-object-permissions/django/contrib/admin/templates/admin/change_form.html

    r3464 r3486  
    6565{% endif %} 
    6666</div> 
    67 </form></div> 
     67</form> 
     68 
     69{% if rlp_form_list %} 
     70{% include "admin/row_level_permission.html" %} 
     71{% endif %} 
     72 
     73</div> 
    6874{% endblock %} 
  • django/branches/per-object-permissions/django/contrib/admin/urls.py

    r3247 r3486  
    2929    ('^doc/templates/(?P<template>.*)/$', 'django.contrib.admin.views.doc.template_detail'), 
    3030 
     31    #Row level permissions 
     32    ('^auth/row_level_permission/(?P<ct_id>\d+)/(?P<rlp_id>\d+)/(?P<hash>\w+)/delete/(?P<ajax>.*)$', 'django.contrib.admin.views.row_level_permissions.delete_row_level_permission'), 
     33    ('^auth/row_level_permission/(?P<ct_id>\d+)/(?P<rlp_id>\d+)/(?P<hash>\w+)/change/(?P<ajax>.*)$', 'django.contrib.admin.views.row_level_permissions.change_row_level_permission'), 
     34    ('^auth/row_level_permission/add/(?P<ct_id>\d+)/(?P<obj_id>\d+)/(?P<ajax>.*)$', 'django.contrib.admin.views.row_level_permissions.add_row_level_permission'),     
     35 
    3136    # Add/change/delete/history 
    3237    ('^([^/]+)/([^/]+)/$', 'django.contrib.admin.views.main.change_list'), 
     
    3742) 
    3843 
     44 
    3945del i18n_view 
  • django/branches/per-object-permissions/django/contrib/admin/utils.py

    r3464 r3486  
    101101    for name, urlbase in ROLES.items(): 
    102102        create_reference_role(name, urlbase) 
     103         
     104#Based off work by Ian Holsman 
     105#http://svn.zyons.python-hosting.com/trunk/zilbo/common/utils/misc.py 
     106def verify_objref_hash( content_type_id, object_id, hash ): 
     107    import sha 
     108    from django.conf import settings  
     109    hash_match = sha.new("%s/%s" % (content_type_id, object_id) + settings.SECRET_KEY).hexdigest() 
     110    if hash == hash_match: 
     111        return True 
     112    else: 
     113        return False 
  • django/branches/per-object-permissions/django/contrib/admin/views/main.py

    r3464 r3486  
    392392        'original': manipulator.original_object, 
    393393        'is_popup': request.REQUEST.has_key('_popup'), 
     394        'is_row_level_perm': model._meta.row_level_permissions, 
    394395    }) 
     396 
     397    if model._meta.row_level_permissions: 
     398        from django.contrib.admin.row_level_perm_manipulator import AddRLPManipulator, ChangeRLPManipulator 
     399        model_instance = manipulator.original_object 
     400        model_ct = ContentType.objects.get_for_model(model) 
     401        rlp_list = model_instance.row_level_permissions.order_by('owner_ct', 'owner_id') 
     402        rlp_errors = rlp_new_data = {} 
     403        add_rlp_manip = AddRLPManipulator(model_instance, model_ct) 
     404        edit_rlp_manip = ChangeRLPManipulator(model_ct) 
     405        new_rlp_form = forms.FormWrapper(add_rlp_manip, rlp_new_data, rlp_errors) 
     406        rlp_form_list = [] 
     407        for r in rlp_list: 
     408            owner_val = str(r.owner_ct)+"-"+str(r.owner_id) 
     409            data = {'id':r.id, 'owner':owner_val, 'perm':r.permission.id, 'negative':r.negative} 
     410            rlp_form_list.append({'form':forms.FormWrapper(edit_rlp_manip, data, rlp_errors), 'rlp':r}) 
     411        rlp_context = {'new_rlp_form':new_rlp_form, 'rlp_form_list':rlp_form_list,} 
     412        c.update(rlp_context) 
     413     
    395414    return render_change_form(model, manipulator, c, change=True) 
    396415change_stage = staff_member_required(never_cache(change_stage))