[pyar] [django] Quitar accion del admin

Daniel dmlistapython en gmail.com
Dom Sep 28 20:12:31 ART 2014


El 26 de septiembre de 2014, 9:57, Nicolas Rebagliati <
nicolas.rebagliati en aenima-x.com.ar> escribió:

> No es mas facil que el usuario no tenga permisos de delete_xxxx para dicho
> modelo y listo?
>

Lo que pasa es que los permisos lo gestionaría el usuario, y quería
bloquear por código que no
se puedan hacer borrados "accidentales" gravísimos... en los que en útlima
instancia me echarían la culpa
a mi :S



>
> 2014-09-25 21:07 GMT-03:00 Martin Alderete <malderete en gmail.com>:
>
> Si lo desabilitas globalmente para habilitarlo en un modelo hacete tu
>> clase modeladmin  y dentro de actions = ['delete_selected'] con eso debería
>> estar.
>> Saludos
>> El sep 25, 2014 8:55 PM, "Daniel" <dmlistapython en gmail.com> escribió:
>>
>> Bien, si doy vuelta la pregunta completo lo que buscaba y puedo safar
>>>
>>> suponiendo que hago admin.site.disable_action('delete_selected')
>>> como hago un "enabled" del delete en determinado modelo?
>>>
>>>
>>>
>>> El 25 de septiembre de 2014, 20:14, Martin Alderete <malderete en gmail.com
>>> > escribió:
>>>
>>>> Hola! Como estas?
>>>>
>>>> Si, eso saca el delete de todo el admin.
>>>>
>>>> Hay varias formas de lograr lo que queres y depende de lo que estas
>>>> haciendo etc,
>>>> una opcion es hacer algo como:
>>>>
>>>> class AlgunModelAdmin(admin.ModelAdmin):
>>>>     actions = ['action1', 'action2', .......'actionN']
>>>>
>>>> El tema es que aca tenes que poner las acciones que SI QUERES, si tenes
>>>> muchas es medio feo este approach.
>>>>
>>>>
>>>> Otra forma un poco mas versatil es.
>>>>
>>>> class AlgunModelAdmin(admin.ModelAdmin):
>>>>     """
>>>>     Mixin para desabilitar algunas acciones
>>>>     """"
>>>>     def get_actions(self, request):
>>>>         actions = super(AlgunModelAdmin, self).get_actions(request)
>>>>         # eliminamos el delete
>>>>         if 'delete_selected'' in actions:
>>>>             del actions['delete_selected']
>>>>         return actions
>>>>
>>>>
>>>> y generalizando esta idea podes tener algo como....
>>>>
>>>>
>>>> class ModelAdminNoDeleteMixin(object):
>>>>     def get_disable_actions(self, request):
>>>>         return []
>>>>
>>>>     def get_actions(self, request):
>>>>         actions = super(ModelAdminNoDeleteMixin,
>>>> self).get_actions(request)
>>>>          for act_name in self.get_disable_actions(request):
>>>>            del  actions[act_name]
>>>>         return actions
>>>>
>>>> class AlgunModelAdmin(ModelAdminNoDeleteMixin, admin.ModelAdmin):
>>>>     def get_disable_actions(self, request):
>>>>         return ('delete_selected', )
>>>>
>>>> Bueno, espero que te sirva y se entienda.... no probe el codigo asi que
>>>> puede haber typos :), cualquier duda consulta :).
>>>>
>>>> Aca te dejo la doc de Django por las dudas,
>>>> https://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions
>>>>
>>>> Saludos!
>>>>
>>>>
>>>>
>>>>
>>>> 2014-09-25 17:11 GMT-03:00 Daniel <dmlistapython en gmail.com>:
>>>>
>>>>> si hago esto
>>>>>     admin.site.disable_action('delete_selected')
>>>>>
>>>>> deshabilito el borrado para todo el sitio
>>>>>
>>>>> ¿cómo puedo hacer esto para determinados modelos nomás?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> pyar mailing list pyar en python.org.ar
>>>>> http://listas.python.org.ar/listinfo/pyar
>>>>>
>>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>>
>>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>>> Argentina - http://www.usla.org.ar
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Martin Alderete
>>>>
>>>> _______________________________________________
>>>> pyar mailing list pyar en python.org.ar
>>>> http://listas.python.org.ar/listinfo/pyar
>>>>
>>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>>
>>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>>> Argentina - http://www.usla.org.ar
>>>>
>>>
>>>
>>>
>>> --
>>> Daniel Malisani
>>>
>>> _______________________________________________
>>> pyar mailing list pyar en python.org.ar
>>> http://listas.python.org.ar/listinfo/pyar
>>>
>>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>>
>>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>>> Argentina - http://www.usla.org.ar
>>>
>>
>> _______________________________________________
>> pyar mailing list pyar en python.org.ar
>> http://listas.python.org.ar/listinfo/pyar
>>
>> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>>
>> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
>> Argentina - http://www.usla.org.ar
>>
>
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>



-- 
Daniel Malisani
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140928/39116360/attachment.html>


More information about the pyar mailing list