roundabout,
created on Thursday, 23 May 2024, 06:40:26 (1716446426),
received on Wednesday, 31 July 2024, 06:54:48 (1722408888)
Author identity: vlad <vlad.muntoiu@gmail.com>
d0ebe40a67ebeccbb830d9eb7b6bb944d9e3a644
app.py
@@ -808,6 +808,7 @@ def repository_commit(username, repository, sha):
data=db.session.get(Commit, f"/{username}/{repository}/{sha}"),
repo_data=repo_data,
comment_query=Comment.query,
permission_level=get_permission_level(flask.session.get("username"), username, repository),
)
@@ -840,6 +841,43 @@ def repository_commit_add_comment(username, repository, sha):
)
@repositories.route("/<username>/<repository>/commit/<sha>/delete_comment/<int:id>", methods=["POST"])
def repository_commit_delete_comment(username, repository, sha, id):
repo_data = Repo.query.filter_by(route=f"/{username}/{repository}").first()
print(f"/{username}/{repository}/{flask.request.form.get('id')}")
comment = Comment.query.filter_by(identifier=f"/{username}/{repository}/{id}").first()
commit = Commit.query.filter_by(identifier=f"/{username}/{repository}/{sha}").first()
if (
comment.owner.username == flask.session.get("username")
or get_permission_level(flask.session.get("username"), username, repository) >= 2
or comment.commit.owner.username == flask.session.get("username")
):
db.session.delete(comment)
db.session.commit()
return flask.redirect(
flask.url_for(".repository_commit", username=username, repository=repository, sha=sha),
code=303
)
@repositories.route("/<username>/<repository>/commit/<sha>/resolve_comment/<int:id>", methods=["POST"])
def repository_commit_resolve_comment(username, repository, sha, id):
comment = Comment.query.filter_by(identifier=f"/{username}/{repository}/{id}").first()
if (
comment.commit.owner.username == flask.session.get("username")
or get_permission_level(flask.session.get("username"), username, repository) >= 2
or comment.owner.username == flask.session.get("username")
):
comment.state = int(not comment.state)
db.session.commit()
return flask.redirect(
flask.url_for(".repository_commit", username=username, repository=repository, sha=sha),
code=303
)
@repositories.route("/<username>/<repository>/forum/")
def repository_forum(username, repository):
server_repo_location = os.path.join(config.REPOS_PATH, username, repository)
static/style.css
@@ -292,7 +292,7 @@ x-buttonbox.segmented > * {
text-align: center;
}
.reply-area {
.reply-area, .resolved-comments {
box-shadow: var(--shadow-card);
margin: var(--margin-card);
border-radius: var(--radius-card);
@@ -305,7 +305,7 @@ x-buttonbox.segmented > * {
height: 100%;
}
.reply-area > summary {
.reply-area > summary, .resolved-comments > summary {
display: flex;
align-items: center;
cursor: pointer;
@@ -321,7 +321,7 @@ x-buttonbox.segmented > * {
padding-top: var(--padding-card-top);
}
.reply-area > summary::before {
.reply-area > summary::before, .resolved-comments > summary::before {
content: " ";
background-image: url("/static/efficient-ui/icons/expand.svg");
transform: rotate(-90deg);
@@ -332,7 +332,7 @@ x-buttonbox.segmented > * {
transition: transform 250ms cubic-bezier(0.33, 1, 0.68, 1);
}
.reply-area[open] > summary::before {
.reply-area[open] > summary::before, .resolved-comments[open] > summary::before {
transform: rotate(0);
}
@@ -597,4 +597,11 @@ strong, em {
z-index: 2;
border-radius: var(--radius-card);
border: var(--border-card);
display: flex;
flex-flow: column nowrap;
}
.resolved-comments {
grid-column: 1 / -1;
font: var(--body-font);
}
templates/repository/repo-commit.html
@@ -65,14 +65,48 @@
{% endif %}
{% endif %}
{% endif %}
{% for comment in comment_query.filter_by(commit=data, file=file, line_number=vars.original_line).all() %}
{% for comment in comment_query.filter_by(commit=data, file=file, line_number=vars.original_line, state=1).all() %}
<div class="comment">
{{ comment.message }}
<x-buttonbox>
{% if comment.author == current_user or data.owner == current_user or permission_level >= 2 %}
<form method="post" action="{{ repo_data.route }}/commit/{{ data.sha }}/resolve_comment/{{ comment.number }}">
<button type="submit">
Resolve
</button>
</form>
<form method="post" action="{{ repo_data.route }}/commit/{{ data.sha }}/delete_comment/{{ comment.number }}">
<button type="submit" class="button-flat">Delete</button>
</form>
{% endif %}
</x-buttonbox>
</div>
{% endfor %}
{% if comment_query.filter_by(commit=data, file=file, line_number=vars.original_line, state=0).count() %}
<details class="resolved-comments">
<summary>{% trans count=comment_query.filter_by(commit=data, file=file, line_number=vars.original_line, state=0).count() %}Resolved comments ({{ count }}){% endtrans %}</summary>
{% for comment in comment_query.filter_by(commit=data, file=file, line_number=vars.original_line, state=0).all() %}
<div class="comment">
{{ comment.message }}
<x-buttonbox>
{% if comment.author == current_user or data.owner == current_user or permission_level >= 2 %}
<form method="post" action="{{ repo_data.route }}/commit/{{ data.sha }}/resolve_comment/{{ comment.number }}">
<button type="submit">
Un-resolve
</button>
</form>
<form method="post" action="{{ repo_data.route }}/commit/{{ data.sha }}/delete_comment/{{ comment.number }}">
<button type="submit" class="button-flat">Delete</button>
</form>
{% endif %}
</x-buttonbox>
</div>
{% endfor %}
</details>
{% endif %}
{% endfor %}
{% if vars.hunk_started %}
</pre> <!-- close the last hunk -->
</pre> {# close the last hunk #}
{% endif %}
</section>
</article>