template restructuring part 1
This commit is contained in:
parent
3c44c8395e
commit
1641e84671
@ -22,6 +22,25 @@ class Article(models.Model):
|
||||
def get_absolute_url(self):
|
||||
return reverse('view_article', args=[self.title])
|
||||
|
||||
def is_public(self):
|
||||
return self.status == PUBLIC
|
||||
|
||||
def is_private(self):
|
||||
return self.status == PRIVATE
|
||||
|
||||
def is_locked(self):
|
||||
return self.status == LOCKED
|
||||
|
||||
def is_deleted(self):
|
||||
return self.status == DELETED
|
||||
|
||||
def is_editable_by_user(self, user):
|
||||
if self.status in (LOCKED, DELETED):
|
||||
return user.is_staff
|
||||
else:
|
||||
return user.is_authenticated()
|
||||
|
||||
|
||||
class ArticleVersion(models.Model):
|
||||
article = models.ForeignKey(Article, related_name='versions')
|
||||
author = models.ForeignKey(User, related_name='article_versions')
|
||||
|
@ -1,23 +0,0 @@
|
||||
<h2>{{article.title}}</h2>
|
||||
|
||||
{% if not article.locked %} <a href="{% url edit_article article.title %}">edit article</a> {% endif %}
|
||||
| <a href="{% url article_history article.title %}">view history</a>
|
||||
|
||||
{% if form %}
|
||||
<form method="POST" action="{% url update_article_status article.title %}">
|
||||
{{ form.as_ul }}
|
||||
<input type="submit" />
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
<div class="about">
|
||||
|
||||
</div>
|
||||
|
||||
<div class="body">
|
||||
{% if article.deleted %}
|
||||
This article has been deleted.
|
||||
{% else %}
|
||||
{{version.body}}
|
||||
{% endif %}
|
||||
</div>
|
@ -1,13 +0,0 @@
|
||||
<h2>Article "{{article.title}}" has been deleted</h2>
|
||||
|
||||
<a href="{% url edit_article article.title %}">edit article</a>
|
||||
|
||||
{% if form %}
|
||||
<form method="POST" action="{% url update_article_status article.title %}">
|
||||
{{ form.as_ul }}
|
||||
<input type="submit" />
|
||||
</form>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<p>Once an article has been deleted only a moderator can create an article with the same name.</p>
|
36
markupwiki/templates/markupwiki/article.html
Normal file
36
markupwiki/templates/markupwiki/article.html
Normal file
@ -0,0 +1,36 @@
|
||||
{% extends "markupwiki/base.html" %}
|
||||
|
||||
{% block title %} {{article.title}} {% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<h2 class="article_title">
|
||||
{% block article_title %}
|
||||
{{article.title}}
|
||||
{% if not version.is_latest %} [revision {{version.number}}] {% endif %}
|
||||
{% endblock %}
|
||||
</h2>
|
||||
|
||||
<div class="article_meta">
|
||||
{% block article_meta %}
|
||||
{% if article.editable %}
|
||||
<a href="{% url edit_article article.title %}">edit article</a> |
|
||||
{% endif %}
|
||||
<a href="{% url article_history article.title %}">view history</a>
|
||||
|
||||
{% if form %}
|
||||
<form method="POST" action="{% url update_article_status article.title %}">
|
||||
{{form.status.label_tag}} {{ form.status }}
|
||||
<input type="submit" />
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
<div class="article_body">
|
||||
{% block article_body %}
|
||||
{{version.body}}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
{% endblock content %}
|
1
markupwiki/templates/markupwiki/base.html
Normal file
1
markupwiki/templates/markupwiki/base.html
Normal file
@ -0,0 +1 @@
|
||||
{% extends "base.html" %}
|
9
markupwiki/templates/markupwiki/deleted_article.html
Normal file
9
markupwiki/templates/markupwiki/deleted_article.html
Normal file
@ -0,0 +1,9 @@
|
||||
{% extends "markupwiki/article.html" %}
|
||||
|
||||
{% block article_title %}
|
||||
{{article.title}} [deleted]
|
||||
{% endblock %}
|
||||
|
||||
{% block article_body %}
|
||||
<p>This article has been deleted.</p>
|
||||
{% endblock %}
|
@ -46,23 +46,28 @@ def view_article(request, title, n=None):
|
||||
version = article.versions.get(number=n)
|
||||
else:
|
||||
version = article.versions.latest()
|
||||
version.is_latest = True
|
||||
|
||||
# set editable flag on article
|
||||
article.editable = article.is_editable_by_user(request.user)
|
||||
|
||||
context = {'article':article, 'version': version}
|
||||
|
||||
|
||||
if request.user.is_staff:
|
||||
context['form'] = StaffModerationForm(instance=article)
|
||||
elif request.user == article.creator:
|
||||
elif request.user == article.creator and article.status in (PUBLIC, PRIVATE):
|
||||
context['form'] = ModerationForm(instance=article)
|
||||
|
||||
if article.status == DELETED:
|
||||
return render_to_response('deleted_article.html', context,
|
||||
if article.is_deleted():
|
||||
return render_to_response('markupwiki/deleted_article.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
elif (article.status == PRIVATE and request.user != article.creator
|
||||
elif (article.is_private() and request.user != article.creator
|
||||
and not request.user.is_staff):
|
||||
return render_to_response('private_article.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
return render_to_response('article.html', context,
|
||||
return render_to_response('markupwiki/article.html', context,
|
||||
context_instance=RequestContext(request))
|
||||
|
||||
@title_check
|
||||
@ -84,7 +89,7 @@ def edit_article(request, title):
|
||||
except Article.DoesNotExist:
|
||||
article = None
|
||||
|
||||
if article and article.locked:
|
||||
if article and article.is_locked():
|
||||
return render_to_response('locked_article.html', {'article': article})
|
||||
|
||||
if request.method == 'GET':
|
||||
@ -130,10 +135,10 @@ def article_status(request, title):
|
||||
article = get_object_or_404(Article, title=title)
|
||||
status = int(request.POST['status'])
|
||||
|
||||
# can only change status to/from LOCKED or DELETED if staff
|
||||
# can only change status to/from locked or deleted if staff
|
||||
if article.status in (LOCKED, DELETED) or status in (LOCKED, DELETED):
|
||||
perm_test = lambda u,a: u.is_staff
|
||||
# can only change status to/from PUBLIC/PRIVATE if staff or creator
|
||||
# can only change status to/from public/private if staff or creator
|
||||
elif article.status in (PUBLIC, PRIVATE) or status in (PUBLIC, PRIVATE):
|
||||
perm_test = lambda u,a: u.is_staff or u == a.creator
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user