| | 26 | È molto semplice integrare le azioni in un blocco. La classe `rest.views.blocks.Action` è fatta appositamente. |
| | 27 | Nel nostro blocco non dovremo far altro che: |
| | 28 | |
| | 29 | 1. definire l'azione |
| | 30 | 2. restituirla su richiesta secondo il ruolo dell'utente implementando il metodo `_get_user_actions(request)` |
| | 31 | |
| | 32 | NOTA: queste azioni dovrebbero apparire in alto a destra di ogni blocco di riferimento, |
| | 33 | ma per ora non importa che appaiano sopra la lista di risorse in modo molto rudimentale. |
| | 34 | |
| | 35 | Questa la parte da implementare nel blocco |
| | 36 | |
| | 37 | {{{ |
| | 38 | |
| | 39 | # Actions |
| | 40 | ACTION_CREATE_GAS = Action( |
| | 41 | name=CREATE, |
| | 42 | verbose_name=_("Add GAS"), |
| | 43 | url=urlresolvers.reverse('admin:gas_gas_add') |
| | 44 | ) |
| | 45 | |
| | 46 | def _get_user_actions(self, request): |
| | 47 | |
| | 48 | user_actions = [] |
| | 49 | if request.user.has_perm("di creare un GAS"): |
| | 50 | user_actions.append(self.ACTION_CREATE_GAS) |
| | 51 | return user_actions |
| | 52 | |
| | 53 | }}} |
| | 54 | |
| | 55 | '''IMPORTANTE''': le azioni possono specificare un url apposito come in questo caso, oppure |
| | 56 | assumere l'url predefinito che fa sì che ci si ritrovi il nome dell'azione (nell'esempio precedente `CREATE`), |
| | 57 | come valore del parametro `args` del metodo `get_response(request, resource_type, resource_id, args)` |