[pyar] [django] Quitar accion del admin

Andres Vargas - zodman zodman en gmail.com
Vie Sep 26 12:16:24 ART 2014


class Restricted(admin.ModelAdmin):
    mymodel = None

    def has_add_permission(self, request):
        assert self.mymodel is not None, "No set mymodel var"
        if self.mymodel.objects.count() >= 1:
            return False
        else:
            return True

    def has_delete_permission(self, request, obj=None):
        return False



class MyAdminModel(models.ModelAdmin, Restricted):
      mymodel= MyModel

admin.site.register(MyModel, MyAdminModel)


El 26 de septiembre de 2014, 8:42, Martin Alderete<malderete en gmail.com>
escribió:

> Buenas!
> Como va?
>
> 2014-09-26 9:57 GMT-03:00 Nicolas Rebagliati <
> nicolas.rebagliati en aenima-x.com.ar>:
>
>> No es mas facil que el usuario no tenga permisos de delete_xxxx para
>> dicho modelo y listo?
>>
>>
> Si, eso tambien funciona :).
>
>
> saludos!
>
>
>
>> 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
>>
>
>
>
> --
> 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
>



-- 
Andres Vargas
www.zodman.com.mx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140926/73918112/attachment.html>


More information about the pyar mailing list