41 lines
1.6 KiB
Python
41 lines
1.6 KiB
Python
def filter_actions(modeladmin, ticket, request):
|
|
if not hasattr(modeladmin, 'change_view_actions_backup'):
|
|
modeladmin.change_view_actions_backup = list(modeladmin.change_view_actions)
|
|
actions = modeladmin.change_view_actions_backup
|
|
if ticket.state == modeladmin.model.CLOSED:
|
|
del_actions = actions
|
|
else:
|
|
from .actions import action_map
|
|
del_actions = [action_map.get(ticket.state, None)]
|
|
if ticket.owner == request.user:
|
|
del_actions.append('take')
|
|
exclude = lambda a: not (a == action or a.url_name == action)
|
|
for action in del_actions:
|
|
actions = filter(exclude, actions)
|
|
return actions
|
|
|
|
|
|
def markdown_formated_changes(changes):
|
|
markdown = ''
|
|
for name, values in changes.items():
|
|
context = (name.capitalize(), values[0], values[1])
|
|
markdown += '* **%s** changed from _%s_ to _%s_\n' % context
|
|
return markdown + '\n'
|
|
|
|
|
|
def get_ticket_changes(modeladmin, request, ticket):
|
|
ModelForm = modeladmin.get_form(request, ticket)
|
|
form = ModelForm(request.POST, request.FILES)
|
|
changes = {}
|
|
if form.is_valid():
|
|
for attr in ['state', 'priority', 'owner', 'queue']:
|
|
old_value = getattr(ticket, attr)
|
|
new_value = form.cleaned_data[attr]
|
|
if old_value != new_value:
|
|
choices = dict(form.fields[attr].choices)
|
|
if old_value in choices:
|
|
old_value = choices[old_value]
|
|
new_value = choices[new_value]
|
|
changes[attr] = (old_value, new_value)
|
|
return changes
|