--- a/src/catedit/views/social.py Mon Mar 02 14:39:22 2015 +0100
+++ b/src/catedit/views/social.py Tue Mar 03 13:04:38 2015 +0100
@@ -7,7 +7,7 @@
from catedit.views.utils import check_user_status_and_repo_access, \
get_comments, post_comment, get_commits, \
get_issues, get_category_list_for_commit
-from catedit.utils import make_differences_list
+from catedit.utils import make_differences_list, compare_categories
from flask import render_template, request, redirect, url_for, \
abort, Blueprint, session
from flask_wtf import Form
@@ -102,13 +102,22 @@
@module.route("/<string:repository>/changesets/<string:changeset_id>",
methods=["GET", "POST"],
- defaults={"per_page": 10, "page": 1})
+ defaults={"per_page": 10, "page": 1, "details_cat_id": None})
@module.route(
"/<string:repository>/changesets/<string:changeset_id>"
+ "/page/<int:page>-per_page-<int:per_page>",
+ defaults={"details_cat_id": None},
methods=["GET", "POST"]
)
-def changeset(repository, changeset_id, per_page, page):
+@module.route("/<string:repository>/changesets/"
+ + "<string:changeset_id>/details_<string:details_cat_id>",
+ methods=["GET", "POST"],
+ defaults={"per_page": 10, "page": 1})
+@module.route("/<string:repository>/changesets/"
+ + "<string:changeset_id>/page/<int:page>-"
+ + "per_page-<int:per_page>-details_<string:details_cat_id>",
+ methods=["GET", "POST"])
+def changeset(repository, changeset_id, per_page, page, details_cat_id):
"""
View that displays a snapshot of the repository as it was for a given
changeset, and the related discussion to this changeset. Allows
@@ -146,7 +155,7 @@
category_differences_dict = {
list_type: [
- (first_category.label, second_category.label)
+ (first_category.label, second_category.label, first_category.cat_id)
for (first_category, second_category) in diff_list
] if list_type == "modifications" else [
category.label
@@ -158,6 +167,31 @@
).items()
}
+ changes_details = None
+ print(str(details_cat_id))
+ if details_cat_id is not None:
+ if (
+ details_cat_id not in [category.cat_id
+ for category in old_category_list]
+ or
+ details_cat_id not in [category.cat_id
+ for category in new_category_list]
+ ):
+ abort(404)
+ else:
+ old_category = next(
+ category
+ for category in old_category_list
+ if category.cat_id == details_cat_id
+ )
+ new_category = next(
+ category
+ for category in new_category_list
+ if category.cat_id == details_cat_id
+ )
+ changes_details = compare_categories(old_category, new_category)
+ changes_details["cat_id"] = details_cat_id
+
old_category_list_template = []
for category in old_category_list:
old_category_list_template.append({
@@ -183,6 +217,7 @@
old_cat_list=old_category_list_template,
new_cat_list=new_category_list_template,
differences=category_differences_dict,
+ changes_details=changes_details,
comments=comments_list,
changeset_id=changeset_id,
comment_form=comment_form,
@@ -201,7 +236,9 @@
"social.changeset",
repository=repository,
changeset_id=return_id,
- per_page=per_page
+ page=1,
+ per_page=per_page,
+ changes_details=changes_details
))
else:
# Form didn't validate
@@ -211,6 +248,7 @@
new_cat_list=new_category_list_template,
comments=comments_list,
changeset_id=changeset_id,
+ change_details=change_details,
comment_form=comment_form,
current_repository=repository,
comments_pagination=pagination,