#100 Delete applications by admin/superuser only: part2
This commit is contained in:
parent
81bc19730b
commit
537571ec69
@ -313,6 +313,13 @@ class Application(models.Model, SlideMixin):
|
|||||||
Return a list of all the allowed status.
|
Return a list of all the allowed status.
|
||||||
"""
|
"""
|
||||||
actions = []
|
actions = []
|
||||||
|
is_admin = False
|
||||||
|
if user:
|
||||||
|
try:
|
||||||
|
user.profile
|
||||||
|
is_admin = True
|
||||||
|
except Profile.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
# check if user allowed to withdraw an application
|
# check if user allowed to withdraw an application
|
||||||
if ((self.status == "pub"
|
if ((self.status == "pub"
|
||||||
@ -350,11 +357,13 @@ class Application(models.Model, SlideMixin):
|
|||||||
or user.has_perm("application.can_manage_application"):
|
or user.has_perm("application.can_manage_application"):
|
||||||
actions.append("edit")
|
actions.append("edit")
|
||||||
|
|
||||||
#Check if the user can delete the application
|
# Check if the user can delete the application (admin, manager, owner)
|
||||||
if self.number is None \
|
# reworked as requiered in #100
|
||||||
and self.status == "pub" \
|
if is_admin \
|
||||||
and (self.submitter == user \
|
or (user.has_perm("application.can_manage_application") \
|
||||||
or user.has_perm("application.can_manage_application")):
|
and (self.status == "pub" or self.number is None)) \
|
||||||
|
or (self.submitter == user \
|
||||||
|
and (self.status == "pub" or self.number is None)):
|
||||||
actions.append("delete")
|
actions.append("delete")
|
||||||
|
|
||||||
#For the rest, all actions need the manage permission
|
#For the rest, all actions need the manage permission
|
||||||
|
@ -42,7 +42,8 @@
|
|||||||
<th><a href="?sort=time{% if 'time' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Creation Time" %}<a></th>
|
<th><a href="?sort=time{% if 'time' in request.GET.sort and 'reverse' not in request.GET %}&reverse{%endif%}">{%trans "Creation Time" %}<a></th>
|
||||||
<th style="width: 1px;">{% trans "Actions" %}</th>
|
<th style="width: 1px;">{% trans "Actions" %}</th>
|
||||||
</tr>
|
</tr>
|
||||||
{% for application in applications %}
|
{% for app_info in applications %}
|
||||||
|
{% with application=app_info.application useractions=app_info.actions %}
|
||||||
<tr class="{% cycle '' 'odd' %}
|
<tr class="{% cycle '' 'odd' %}
|
||||||
{% if application.active %}activeline{% endif %}">
|
{% if application.active %}activeline{% endif %}">
|
||||||
<td>{% if application.number %}{{ application.number }}{% else %}-{% endif %}</td>
|
<td>{% if application.number %}{{ application.number }}{% else %}-{% endif %}</td>
|
||||||
@ -69,12 +70,15 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
{% if perms.application.can_manage_application %}
|
{% if perms.application.can_manage_application %}
|
||||||
<a href="{% url application_edit application.id %}"><img src="{% static 'images/icons/edit.png' %}" title="{% trans 'Edit application' %}"></a>
|
<a href="{% url application_edit application.id %}"><img src="{% static 'images/icons/edit.png' %}" title="{% trans 'Edit application' %}"></a>
|
||||||
|
{% if "delete" in useractions %}
|
||||||
<a href="{% url application_delete application.id %}"><img src="{% static 'images/icons/delete.png' %}" title="{% trans 'Delete application' %}"></a>
|
<a href="{% url application_delete application.id %}"><img src="{% static 'images/icons/delete.png' %}" title="{% trans 'Delete application' %}"></a>
|
||||||
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url print_application application.id %}" title="{%trans 'Application as PDF' %}"><img src="{% static 'pdf.png' %}"></a>
|
<a href="{% url print_application application.id %}" title="{%trans 'Application as PDF' %}"><img src="{% static 'pdf.png' %}"></a>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
{% endwith %}
|
||||||
{% empty %}
|
{% empty %}
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="7"><i>{%trans "No applications available." %}</i></td>
|
<td colspan="7"><i>{%trans "No applications available." %}</i></td>
|
||||||
|
@ -113,6 +113,24 @@ def overview(request):
|
|||||||
else:
|
else:
|
||||||
applications = query
|
applications = query
|
||||||
|
|
||||||
|
if type(applications) is not list:
|
||||||
|
applications = list(query.all())
|
||||||
|
|
||||||
|
# not the most efficient way to do this but 'get_allowed_actions'
|
||||||
|
# is not callable from within djangos templates..
|
||||||
|
for (i, application) in enumerate(applications):
|
||||||
|
try:
|
||||||
|
applications[i] = {
|
||||||
|
'actions' : application.get_allowed_actions(request.user),
|
||||||
|
'application' : application
|
||||||
|
}
|
||||||
|
except:
|
||||||
|
# todo: except what?
|
||||||
|
applications[i] = {
|
||||||
|
'actions' : [],
|
||||||
|
'application' : application
|
||||||
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
'applications': applications,
|
'applications': applications,
|
||||||
'min_supporters': int(config['application_min_supporters']),
|
'min_supporters': int(config['application_min_supporters']),
|
||||||
|
Loading…
Reference in New Issue
Block a user