Search code examples
pythondjangotemplatespermissionsdjango-tables2

Django-Tables column templates with django permissions


So, I'm using Django-Tables to generate my project datatables, but now I'm facing a new problem.

I've got this Table Class to generate my Model datatables, using the DjangoTables app. Then I use the TemplateColumn to create a new column for base operations just like Edit, Copy, Delete... This stuff goes into the template that is loaded into the column of each row.

class ReservationTable(tables.Table):
    operations = tables.TemplateColumn(template_name='base_table_operations_btn.html', verbose_name= _('Operations'))

So inside the template i've got this:

{% if perms.reservation.add_reservation %}
    <a href="/reservation/reservation/{{ record.id }}/copy" class="btn btn-success"><span class="glyphicon glyphicon-paperclip"></span></a>
{% endif %}

So, using the django templates perms tags, is not working here but it does in to the normal django template.

Any tips on how can I handle those perms into this kind of template? I'm kinda losen.

Thanks in advance!


Solution

  • So, its not just like a "perfect answer" for this problem, but here is how I managed to solve this:

    Instead of using in Template django permisions, I managed to setup the permissions in the route url config. Just by adding:

    permission_required('permision_name',raise_exception=True)
    

    Function in the url.py. So here comes the full url line:

    url(r'^reservation/flight/add/$', permission_required('reservation.add_reservation',raise_exception=True)(FlightReservationCreate.as_view()), name='reservation-flight-create'),
    

    This allow me to add perms to the View instead of filtering into the themplate view.

    That's not a perfect solution, because its a different way to manage permissions, and the problem with the django-tables2 column template is still there.

    By the way, the final result is the same for me, so its OK.