Skip to content
This repository has been archived by the owner on Jan 15, 2019. It is now read-only.

Commit

Permalink
closes #17 and closes #18. thanks @SmileyChris
Browse files Browse the repository at this point in the history
  • Loading branch information
bryanhelmig committed Feb 24, 2012
1 parent 4faaecd commit f359a44
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 21 deletions.
12 changes: 10 additions & 2 deletions knowledge/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -104,15 +104,19 @@ def switch(self, status, save=True):

def public(self, save=True):
self.switch('public', save)
public.alters_data = True

def private(self, save=True):
self.switch('private', save)
private.alters_data = True

def inherit(self, save=True):
self.switch('inherit', save)
inherit.alters_data = True

def internal(self, save=True):
self.switch('internal', save)
internal.alters_data = True

class Meta:
abstract = True
Expand Down Expand Up @@ -161,10 +165,11 @@ def inherit(self):
def internal(self):
pass

def flip_lock(self, save=True):
def lock(self, save=True):
self.locked = not self.locked
if save:
self.save()
lock.alters_data = True

###################
#### RESPONSES ####
Expand All @@ -191,6 +196,7 @@ def accepted(self):

def clear_accepted(self):
self.get_responses().update(accepted=False)
clear_accepted.alters_data = True

def accept(self, response=None):
"""
Expand All @@ -205,12 +211,13 @@ def accept(self, response=None):
return True
else:
return False
accept.alters_data = True

def states(self):
"""
Handy for checking for mod bar button state.
"""
return [self.status, 'flip_lock' if self.locked else None]
return [self.status, 'lock' if self.locked else None]

@property
def url(self):
Expand Down Expand Up @@ -257,6 +264,7 @@ def states(self):

def accept(self):
self.question.accept(self)
accept.alters_data = True

def __unicode__(self):
return self.body[0:100] + u'...'
Expand Down
7 changes: 5 additions & 2 deletions knowledge/static/knowledge/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -163,10 +163,13 @@
-khtml-opacity: 0.5;
opacity: 0.5;
float: right; }
.dk-inner .dk-content .dk-widget .dk-mod-bar a {
text-decoration: none; }
.dk-inner .dk-content .dk-widget .dk-mod-bar .dk-label {
margin: 0 2px; }
.dk-inner .dk-content .dk-widget .dk-mod-bar form {
display: inline-block; }
.dk-inner .dk-content .dk-widget .dk-mod-bar form input {
border: none;
cursor: pointer; }
.dk-inner .dk-sidebar {
width: 25%;
float: right;
Expand Down
15 changes: 10 additions & 5 deletions knowledge/static/knowledge/scss/main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -186,14 +186,19 @@
@include opacity(0.5);
float:right;

a {
text-decoration:none;
}

.dk-label {
margin:0 2px;
}
}

form {
display:inline-block;

input {
border:none;
cursor:pointer;
}
}
} // .dk-mod-bar

} // dk-widget
} // .dk-content
Expand Down
2 changes: 1 addition & 1 deletion knowledge/templates/django_knowledge/mod_bar.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{% if request.user.is_staff %}
<div class="dk-mod-bar">
{% for mod in allowed_mods %}
<a class="dk-label{% if mod in node.states %} dk-label-warning{% endif %}" href="{% url knowledge_moderate type node.id mod %}">{{ mod }}</a>
<form method="post" action="{% url knowledge_moderate type node.id mod %}">{% csrf_token %}<input class="dk-label{% if mod in node.states %} dk-label-warning{% endif %}" type="submit" value="{{ mod }}" /></form>
{% endfor %}
</div>
{% endif %}
5 changes: 4 additions & 1 deletion knowledge/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
ALLOWED_MODS = {
'question': [
'private', 'public',
'delete', 'flip_lock',
'delete', 'lock',
'clear_accepted'
],
'response': [
Expand Down Expand Up @@ -129,6 +129,9 @@ def knowledge_moderate(
"""

if request.method != 'POST':
raise Http404

if model == 'question':
Model, perm = Question, 'change_question'
elif model == 'response':
Expand Down
2 changes: 1 addition & 1 deletion tests/mock/tests/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def test_response_form_display(self):
)

# lock the question...
self.question.flip_lock()
self.question.lock()

self.assertEqual(
None,
Expand Down
6 changes: 3 additions & 3 deletions tests/mock/tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -232,12 +232,12 @@ def test_urls(self):

def test_locking(self):
self.assertFalse(self.question.locked)
self.assertNotIn('flip_lock', self.question.states())
self.assertNotIn('lock', self.question.states())

self.question.flip_lock()
self.question.lock()

self.assertTrue(self.question.locked)
self.assertIn('flip_lock', self.question.states())
self.assertIn('lock', self.question.states())


def test_url(self):
Expand Down
21 changes: 15 additions & 6 deletions tests/mock/tests/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,29 +94,38 @@ def test_moderate(self):
r = c.get(reverse('knowledge_moderate', args=['question', self.question.id, 'public']))
self.assertEquals(r.status_code, 404)

r = c.get(reverse('knowledge_moderate', args=['response', self.response.id, 'public']))
r = c.post(reverse('knowledge_moderate', args=['question', self.question.id, 'public']))
self.assertEquals(r.status_code, 404)

r = c.post(reverse('knowledge_moderate', args=['response', self.response.id, 'public']))
self.assertEquals(r.status_code, 404)


c.login(username='admin', password='secret')

r = c.get(reverse('knowledge_moderate', args=['question', self.question.id, 'notreal']))
r = c.post(reverse('knowledge_moderate', args=['question', self.question.id, 'notreal']))
self.assertEquals(r.status_code, 404)

# nice try buddy!
r = c.get(reverse('knowledge_moderate', args=['user', self.admin.id, 'delete']))
r = c.post(reverse('knowledge_moderate', args=['user', self.admin.id, 'delete']))
self.assertEquals(r.status_code, 404)

# GET does not work
r = c.get(reverse('knowledge_moderate', args=['question', self.question.id, 'public']))
self.assertEquals(r.status_code, 404)

self.assertEquals(Question.objects.get(id=self.question.id).status, 'private')
r = c.post(reverse('knowledge_moderate', args=['question', self.question.id, 'public']))
self.assertEquals(r.status_code, 302)
self.assertEquals(Question.objects.get(id=self.question.id).status, 'public')

r = c.get(reverse('knowledge_moderate', args=['response', self.response.id, 'public']))
r = c.post(reverse('knowledge_moderate', args=['response', self.response.id, 'public']))
self.assertEquals(r.status_code, 302)

r = c.get(reverse('knowledge_moderate', args=['question', self.question.id, 'delete']))
r = c.post(reverse('knowledge_moderate', args=['question', self.question.id, 'delete']))
self.assertEquals(r.status_code, 302)

r = c.get(reverse('knowledge_moderate', args=['question', self.question.id, 'delete']))
r = c.post(reverse('knowledge_moderate', args=['question', self.question.id, 'delete']))
self.assertEquals(r.status_code, 404)


Expand Down

0 comments on commit f359a44

Please sign in to comment.