Skip to content

Commit bfac48f

Browse files
authored
new role checking (#42)
* new role checking * changes * added can_hide validation check in views * bug fix * edit quetion validation changes
1 parent 3c2f83f commit bfac48f

4 files changed

Lines changed: 22 additions & 12 deletions

File tree

static/website/templates/get-question.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616

1717
<div class="row">
1818
<div class="question-wrapper col-lg-12 col-md-12 col-sm-12 col-xs-12">
19-
<div class="question {% if user|can_edit:question %}editable{% endif %}">
20-
<div class="title {% if user|can_edit:question %}title-editable{% endif %}">
19+
<div class="question {% if user|can_edit:question or user|can_hide_delete:question %}editable{% endif %}">
20+
<div class="title {% if user|can_edit:question or user|can_hide_delete:question %}title-editable{% endif %}">
2121
{{ question.title }}
2222
</div>
2323

@@ -27,7 +27,7 @@ <h5>Title</h5>
2727
<h5>Question</h5>
2828
</div>
2929
<div id="questionNicPanel"></div>
30-
<div id="{% if user|can_edit:question %}questionInstance{% endif %}" class="body">
30+
<div id="{% if user|can_edit:question or user|can_hide_delete:question %}questionInstance{% endif %}" class="body">
3131
{{ question.body|bleach }}
3232
</div>
3333
<br>
@@ -69,9 +69,10 @@ <h5>Question</h5>
6969
</a>
7070

7171
<span class="modify question-midify">
72-
{% if user|can_edit:question %}
73-
<a class="hide-question btn btn-xs btn-info" data-qid="{{ question.id }}" data-status="{{ question.status }} href="#">{% if question.status == 1 %} Hide {% else %} Show {% endif %}</a>
74-
<a class="delete-question btn btn-xs btn-info" data-qid="{{ question.id }}" href="#">Delete</a>
72+
{% if user|can_edit:question or user|can_hide_delete:question %}
73+
74+
<a class="hide-question btn btn-xs btn-info" data-qid="{{ question.id }}" data-status="{{ question.status }} href="#">{% if question.status == 1 %} Hide {% else %} Show {% endif %}</a>
75+
<a class="delete-question btn btn-xs btn-info" data-qid="{{ question.id }}" href="#">Delete</a>
7576
<a class="edit btn btn-xs btn-info" href="#">Edit</a>
7677
<a class="save btn btn-xs btn-success" data-qid="{{ question.id }}" href="#">Save</a>
7778
{% endif %}

website/permissions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
def is_administrator(user):
22
if user and user.groups.filter(name='Administrator').count() == 1:
33
return True
4+
5+
def is_forumsadmin(user):
6+
if user and user.groups.filter(name='Forums-Admin').count() == 1:
7+
return True

website/templatetags/permission_tags.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from django import template
22

3-
from website.permissions import is_administrator
3+
from website.permissions import is_administrator, is_forumsadmin
44

55
register = template.Library()
66

@@ -10,10 +10,15 @@ def can_edit(user, obj):
1010
return True
1111
return False
1212

13+
def can_hide_delete(user, obj):
14+
if user.id == obj.uid or is_forumsadmin(user):
15+
return True
16+
return False
1317

1418
def isadministrator(user):
1519
return is_administrator(user)
1620

1721

1822
register.filter(can_edit)
1923
register.filter(isadministrator)
24+
register.filter(can_hide_delete)

website/views.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from website.forms import NewQuestionForm, AnswerQuesitionForm
1515
from website.helpers import get_video_info, prettify, clean_user_data, get_similar_questions
1616
from django.conf import settings
17-
from website.templatetags.permission_tags import can_edit
17+
from website.templatetags.permission_tags import can_edit, can_hide_delete
1818
from spoken_auth.models import FossCategory
1919
from .sortable import SortableHeader, get_sorted_list, get_field_index
2020
from django.db.models import Count
@@ -476,7 +476,7 @@ def ajax_question_update(request):
476476
title = request.POST['question_title']
477477
body = request.POST['question_body']
478478
question = get_object_or_404(Question, pk=qid)
479-
if can_edit(user=request.user, obj=question):
479+
if can_edit(user=request.user, obj=question) or can_hide_delete(user=request.user, obj=question):
480480
question.title = title
481481
question.body = body
482482
question.save()
@@ -496,7 +496,7 @@ def ajax_details_update(request):
496496
minute_range = request.POST['minute_range']
497497
second_range = request.POST['second_range']
498498
question = get_object_or_404(Question, pk=qid)
499-
if can_edit(user=request.user, obj=question):
499+
if can_edit(user=request.user, obj=question) or can_hide_delete(user=request.user, obj=question):
500500
question.category = category
501501
question.tutorial = tutorial
502502
question.minute_range = minute_range
@@ -586,7 +586,7 @@ def ajax_delete_question(request):
586586
if request.method == "POST":
587587
key = request.POST['question_id']
588588
question = get_object_or_404(Question, pk=key)
589-
if can_edit(user=request.user, obj=question):
589+
if can_edit(user=request.user, obj=question) or can_hide_delete(user=request.user, obj=question):
590590
question.delete()
591591
result = True
592592
return HttpResponse(json.dumps(result), mimetype='application/json')
@@ -598,7 +598,7 @@ def ajax_hide_question(request):
598598
if request.method == "POST":
599599
key = request.POST['question_id']
600600
question = get_object_or_404(Question, pk=key)
601-
if can_edit(user=request.user, obj=question):
601+
if can_edit(user=request.user, obj=question) or can_hide_delete(user=request.user, obj=question):
602602
question.status = 0
603603
if request.POST['status'] == '0':
604604
question.status = 1

0 commit comments

Comments
 (0)