Archived
1
0
This commit is contained in:
Jeff Becker 2016-11-07 07:02:03 -05:00
parent 2a744c45a2
commit c3224379ca
No known key found for this signature in database
GPG Key ID: AB950234D6EA286B
6 changed files with 79 additions and 41 deletions

View File

@ -9,6 +9,14 @@ div {
font-family: sans;
}
hr {
height: 0px;
border-width: 1px medium medium;
border-color: #b7c5d9;
border-style: solid none none;
width: 100%;
}
#navbar {
z-index: 20;
position: fixed;
@ -100,26 +108,38 @@ form {
flex-basis: 100%;
}
.post > .header {
.post-header {
padding-bottom: 1%;
flex-basis: 100%;
flex-direction: row-reverse;
}
.postbody {
font-family: serif;
font-size: 10pt;
white-space: pre-wrap;
word-wrap: break-word;
}
.name {
.post-name {
font-weight: bold;
color: #028241;
margin-left: 1%;
margin-right: 1%;
}
.subject {
.post-subject {
font-weight: bold;
color: #480188;
margin-left: 1%;
margin-right: 1%;
}
.post-date {
font-style: italic;
margin-left: 1%;
margin-right: 1%;
}
.posts {
flex-direction: column;
@ -143,8 +163,12 @@ footer {
padding-bottom: 5%;
}
.cite {
float: right;
.post-info {
flex-basis: 100%;
}
.post-cite {
align-self: flex-end;
}
.redtext {

View File

@ -71,11 +71,11 @@ def createPost(newsgroup, ref, form, files):
server = settings.NNTP_SERVER
server['readermode'] = True
msgid = None
response = None
try:
with nntplib.NNTP(**server) as nntp:
nntp.login(**settings.NNTP_LOGIN)
msgid = nntp.post(msg.as_bytes())
response = nntp.post(msg.as_bytes())
except Exception as e:
return None, e
return msgid, None
return None, 'connection to backend failed, {}'.format(e)
return response, None

View File

@ -41,8 +41,10 @@ class Postable:
ctx['msgid'], ctx['error'] = self.handle_post(request, **kwargs)
request.session['captcha'] = ''
request.session.save()
return render(request, 'frontend/postresult.html', ctx)
code = 201
if ctx['error']:
code = 200
return HttpResponse(content=render(request, 'frontend/postresult.html', ctx), status=code)
class BoardView(generic.View, Postable):
@ -79,7 +81,7 @@ class BoardView(generic.View, Postable):
begin = page * group.posts_per_page
end = begin + group.posts_per_page - 1
roots = self.model.objects.filter(newsgroup=group, reference='').order_by('-last_bumped')[begin:end]
ctx = self.context_for_get(request, {'threads': roots, 'page': page, 'name': newsgroup})
ctx = self.context_for_get(request, {'threads': roots, 'page': page, 'name': newsgroup, 'button': 'new thread'})
if page < group.max_pages:
ctx['nextpage'] = reverse('board', args=[name]) + '?p={}'.format(page + 1)
if page > 0:
@ -103,7 +105,7 @@ class ThreadView(generic.View, Postable):
def get(self, request, op):
posts = get_object_or_404(self.model, posthash=op)
ctx = self.context_for_get(request, {'op': posts})
ctx = self.context_for_get(request, {'op': posts, 'button': 'reply'})
return render(request, self.template_name, ctx)
class FrontPageView(generic.View):

View File

@ -16,12 +16,14 @@
{% for op in threads %}
<div id="{{op.posthash}}" class="thread">
<div class="post op">
<div class="header">
<span class="name">{{op.name}}</span> <span class="subject">{{op.subject}}</span>
<span class="posted">{{op.postdate|date}}</span>
<span class="cite"><a href="{{op.get_absolute_url}}">&gt;&gt;{{op.shorthash}}</a></span>
<div class="post-header">
<div class="post-cite"><a href="{{op.get_absolute_url}}">&gt;&gt;{{op.shorthash}}</a></div>
<div class="post-info">
<div class="post-name">{{op.name}}</div>
<div class="post-subject">{{op.subject}}</div>
<div class="post-date">{{op.postdate|date}}</div>
</div>
</div>
<div class="attachments">
{% for a in op.attachments.all %}
<a target="_blank" href="{{a.source}}"><img class="thumb" src="{{a.thumb}}"></img></a>
@ -31,10 +33,13 @@
</div>
{% for reply in op.get_board_replies %}
<div class="post reply" id="{{reply.posthash}}">
<div class="header">
<span class="name">{{reply.name}}</span> <span class="subject">{{reply.subject}}</span>
<span class="posted">{{reply.postdate|date}}</span>
<span class="cite"><a href="{{reply.get_absolute_url}}">&gt;&gt;{{reply.shorthash}}</a></span>
<div class="post-header">
<div class="post-cite"><a href="{{reply.get_absolute_url}}">&gt;&gt;{{reply.shorthash}}</a></div>
<div class="post-info">
<div class="post-name">{{reply.name}}</div>
<div class="post-subject">{{reply.subject}}</div>
<div class="post-date">{{reply.postdate|date}}</div>
</div>
</div>
<div class="attachments">
{% for a in reply.attachments.all %}
@ -45,6 +50,7 @@
</div>
{% endfor %}
</div>
<hr />
{% endfor %}
<div class="paginator">

View File

@ -4,14 +4,17 @@
<div class="frontpage posts">
{% for post in posts %}
<div class="post">
<div class="header">
<span class="boardname"><a href="{{post.newsgroup.get_absolute_url}}">{{post.newsgroup.name}}</a></span>
</div>
<div class="header">
<span class="name">{{post.name}}</span> <span class="subject">{{post.subject}}</span>
<span class="posted">{{post.postdate|date}}</span>
<span class="cite"><a href="{{post.get_absolute_url}}">&gt;&gt;{{post.shorthash}}</a></span>
<div class="boardname"><a href="{{post.newsgroup.get_absolute_url}}">{{post.newsgroup.name}}</a></div>
<div class="post-header">
<div class="post-cite"><a href="{{post.get_absolute_url}}">&gt;&gt;{{post.shorthash}}</a></div>
<div class="post-info">
<div class="post-name">{{post.name}}</div>
<div class="post-subject">{{post.subject}}</div>
<div class="post-date">{{post.postdate|date}}</div>
</div>
</div>
<div class="attachments">
{% for a in post.attachments.all %}
<a target="_blank" href="{{a.source}}"><img class="thumb" src="{{a.thumb}}"></img></a>

View File

@ -2,19 +2,20 @@
{% load chanup %}
{% block title %} {{op.subject}} {% endblock %}
{% block navbar_links %}
<span class="navbar_link"><a href="{{op.newsgroup.get_absolute_url}}">back to {{op.newsgroup.name}}</a></span>
<div class="navbar_link"><a href="{{op.newsgroup.get_absolute_url}}">back to {{op.newsgroup.name}}</a></div>
{% endblock %}
{% block content %}
{% include "frontend/postform.html" %}
<div id="{{op.posthash}}" class="thread">
<div class="post op">
<div class="header">
<span class="name">{{op.name}}</span> <span class="subject">{{op.subject}}</span>
<span class="msgid">{{op.msgid}}</span>
<span class="posted">{{op.postdate|date}}</span>
<span class="cite"><a href="{{op.get_absolute_url}}">&gt;&gt;{{op.shorthash}}</a></span>
<div class="post-header">
<div class="post-cite"><a href="{{op.get_absolute_url}}">&gt;&gt;{{op.shorthash}}</a></div>
<div class="post-info">
<div class="post-name">{{op.name}}</div>
<div class="post-subject">{{op.subject}}</div>
<div class="post-date">{{op.postdate|date}}</div>
</div>
</div>
<div class="attachments">
{% for a in op.attachments.all %}
<a target="_blank" href="{{a.source}}"><img class="thumb" src="{{a.thumb}}"></img></a>
@ -24,11 +25,13 @@
</div>
{% for reply in op.get_all_replies %}
<div class="post reply" id="{{reply.posthash}}">
<div class="header">
<span class="name">{{reply.name}}</span> <span class="subject">{{reply.subject}}</span>
<span class="msgid">{{reply.msgid}}</span>
<span class="posted">{{reply.postdate|date}}</span>
<span class="cite"><a href="{{reply.get_absolute_url}}">&gt;&gt;{{reply.shorthash}}</a></span>
<div class="post-header">
<div class="post-cite"><a href="{{reply.get_absolute_url}}">&gt;&gt;{{reply.shorthash}}</a></div>
<div class="post-info">
<div class="post-name">{{reply.name}}</div>
<div class="post-subject">{{reply.subject}}</div>
<div class="post-date">{{reply.postdate|date}}</div>
</div>
</div>
<div class="attachments">
{% for a in reply.attachments.all %}