roundabout,
created on Thursday, 7 March 2024, 08:19:22 (1709799562),
received on Wednesday, 31 July 2024, 06:54:42 (1722408882)
Author identity: vlad <vlad.muntoiu@gmail.com>
e86d8071f3443ad8117f3069160c0a643b1b34a4
models.py
@@ -189,6 +189,7 @@ with (app.app_context()):
vote_sum = db.Column(db.Integer, nullable=False, default=0)
parent_id = db.Column(db.String(109), db.ForeignKey("post.identifier"), nullable=True)
root_id = db.Column(db.String(109), db.ForeignKey("post.identifier"), nullable=True)
state = db.Column(db.SmallInteger, nullable=True, default=1)
date = db.Column(db.DateTime, default=datetime.now)
@@ -197,8 +198,16 @@ with (app.app_context()):
message = db.Column(db.UnicodeText)
repo = db.relationship("Repo", back_populates="posts")
owner = db.relationship("User", back_populates="posts")
parent = db.relationship("Post", back_populates="children", remote_side="Post.identifier")
children = db.relationship("Post", back_populates="parent", remote_side="Post.parent_id")
parent = db.relationship("Post", back_populates="children",
primaryjoin="Post.parent_id==Post.identifier",
foreign_keys="[Post.parent_id]", remote_side="Post.identifier")
root = db.relationship("Post",
primaryjoin="Post.root_id==Post.identifier",
foreign_keys="[Post.root_id]", remote_side="Post.identifier")
children = db.relationship("Post",
remote_side="Post.parent_id",
primaryjoin="Post.identifier==Post.parent_id",
foreign_keys="[Post.parent_id]")
def __init__(self, owner, repo, parent, subject, message):
self.identifier = f"{repo.route}/{repo.last_post_id}"
@@ -210,6 +219,7 @@ with (app.app_context()):
self.subject = subject
self.message = message
self.parent = parent
self.root = parent.parent if parent.parent else parent
repo.last_post_id += 1
def update_date(self):
static/style.css
@@ -323,4 +323,17 @@ x-buttonbox.segmented > * {
.reply-area[open] > summary {
box-shadow: var(--shadow-card);
}
.post-author {
color: inherit;
text-decoration: inherit;
}
.post-details {
color: var(--color-caption-text);
}
#forum-banner {
background: #37474f;
}
templates/post.html
@@ -10,12 +10,12 @@
</x-hbox>
</a>
{% endif %}
<p class="post-details"><a href="/{{ post.owner.username }}" class="post-author">{{ post.owner.username }}</a> • {{ post.date | strftime("%A, %e %B %Y, %H:%M:%S") }}</p>
{% if level %}
<h2><a href="{{ post.number }}">{{ post.subject }}</a></h2>
{% else %}
<h2>{{ post.subject }}</h2>
{% endif %}
<p><a href="/{{ post.owner.username }}">{{ post.owner.username }}</a> • {{ post.date | strftime("%A, %e %B %Y, %H:%M:%S") }}</p>
<p>
{{ post.message }}
</p>
templates/repository/repo-forum-thread.html
@@ -8,6 +8,9 @@
{% block content %}
<script src="/static/voting.js"></script>
<x-vbox>
<div id="forum-banner">
<h1></h1>
</div>
<x-frame style="--width: 896px;" class="flexible-space">
<x-vbox>
{% set post = parent %}
templates/repository/repo-forum.html
@@ -8,18 +8,22 @@
<x-vbox>
<x-frame style="--width: 896px;" class="flexible-space">
<x-vbox>
<form method="POST" action="new">
<x-vbox>
<x-vbox class="nopad">
<label for="subject">Subject</label>
<input id="subject" name="subject" required>
<details class="reply-area">
<summary>Post topic</summary>
<form method="POST" action="new">
<x-vbox>
<x-vbox class="nopad">
<label for="subject">Subject</label>
<input id="subject" name="subject" required>
</x-vbox>
<textarea name="message" style="box-sizing: border-box;" rows="8" required></textarea>
<x-buttonbox>
<button type="submit">Submit</button>
</x-buttonbox>
</x-vbox>
<textarea name="message" style="box-sizing: border-box;" rows="8" required></textarea>
<x-buttonbox>
<button type="submit">Add new topic</button>
</x-buttonbox>
</x-vbox>
</form>
</form>
</details>
{% for post in Post.query.filter_by(repo=repo_data, parent=none).order_by(Post.last_updated.desc()) %}
<article class="card card-horizontal">
<figure class="branch-icon">