You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2020/01/06 23:05:12 UTC
[allura] 04/04: More polishing
This is an automated email from the ASF dual-hosted git repository.
brondsem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/allura.git
commit 7f41e1514f224cad7394de389b08f1fa8d5e6898
Author: Dave Brondsema <da...@brondsema.net>
AuthorDate: Mon Jan 6 17:06:29 2020 -0500
More polishing
---
Allura/allura/templates/jinja_master/nav_menu.html | 14 +++++++++----
ForgeFeedback/forgefeedback/__init__.py | 16 +++++++++++++++
ForgeFeedback/forgefeedback/feedback_main.py | 24 +++++++++++-----------
ForgeFeedback/forgefeedback/model/feedback.py | 4 ++++
ForgeFeedback/forgefeedback/templates/__init__.py | 16 +++++++++++++++
5 files changed, 58 insertions(+), 16 deletions(-)
diff --git a/Allura/allura/templates/jinja_master/nav_menu.html b/Allura/allura/templates/jinja_master/nav_menu.html
index 9509334..3904896 100644
--- a/Allura/allura/templates/jinja_master/nav_menu.html
+++ b/Allura/allura/templates/jinja_master/nav_menu.html
@@ -64,6 +64,7 @@
{% endif %}
{% endif %}
+{% if c.project.rating %}{# hide if ratings haven't been used (project/site may not use ForgeFeedback) #}
<script>
document.getElementById("stars").innerHTML = getStars("{{c.project.rating}}");
@@ -74,17 +75,22 @@ function getStars(ratings) {
let output = [];
// Append all the filled whole stars
- for (var i = ratings; i >= 1; i--)
+ var i;
+ for (i = ratings; i >= 1; i--) {
output.push('<i class="fa fa-star" aria-hidden="true" style="color: orange;"></i> ');
+ }
// If there is a half a star, append it
- if (i == .5) output.push('<i class="fa fa-star-half-o" aria-hidden="true" style="color: orange;"></i> ');
+ if (i === .5) {
+ output.push('<i class="fa fa-star-half-o" aria-hidden="true" style="color: orange;"></i> ');
+ }
// Fill the empty stars
- for (let i = (5 - ratings); i >= 1; i--)
+ for (let i = (5 - ratings); i >= 1; i--) {
output.push('<i class="fa fa-star-o" aria-hidden="true" style="color: orange;"></i> ');
-
+ }
return output.join('');
}
</script>
+{% endif %}
\ No newline at end of file
diff --git a/ForgeFeedback/forgefeedback/__init__.py b/ForgeFeedback/forgefeedback/__init__.py
index e69de29..144e298 100755
--- a/ForgeFeedback/forgefeedback/__init__.py
+++ b/ForgeFeedback/forgefeedback/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
diff --git a/ForgeFeedback/forgefeedback/feedback_main.py b/ForgeFeedback/forgefeedback/feedback_main.py
index 4f04b61..889c0f1 100755
--- a/ForgeFeedback/forgefeedback/feedback_main.py
+++ b/ForgeFeedback/forgefeedback/feedback_main.py
@@ -20,7 +20,7 @@ import pymongo
# Non-stdlib imports
-from tg import expose, flash, url, config, request
+from tg import expose, flash, url, config, request, redirect
from tg.decorators import with_trailing_slash, without_trailing_slash
from tg import tmpl_context as c, app_globals as g
from ming.odm import session
@@ -121,7 +121,7 @@ class RootController(BaseController, FeedController):
rating_by_user = Feedback.query.find({
'reported_by_id': c.user._id, 'project_id': c.project._id}
).count()
- if (rating_by_user > 0):
+ if rating_by_user > 0:
user_has_already_reviewed = True
return dict(review_list=self.get_review_list(),
user_has_already_reviewed=user_has_already_reviewed,
@@ -150,8 +150,8 @@ class RootController(BaseController, FeedController):
M.main_orm_session.flush()
g.director.create_activity(c.user, 'posted', p, related_nodes=[
c.project], tags=['description'])
- return dict(review_list=self.get_review_list(),
- rating=self.getRating())
+ self.getRating() # force recalculation
+ redirect(c.app.url)
# called on click of the Feedback link
@with_trailing_slash
@@ -183,8 +183,8 @@ class RootController(BaseController, FeedController):
g.director.create_activity(
c.user, 'modified', self.rating,
related_nodes=[c.project], tags=['description'])
- return dict(
- review_list=self.get_review_list(), rating=self.getRating())
+ self.getRating() # force recalculation
+ redirect(c.app.url)
# called when user clicks on delete link in feedback page
@without_trailing_slash
@@ -198,7 +198,7 @@ class RootController(BaseController, FeedController):
Feedback.query.remove(dict(
{'reported_by_id': c.user._id, 'project_id': c.project._id}))
M.main_orm_session.flush()
- self.getRating()
+ self.getRating() # force recalculation
flash('Feedback successfully deleted')
return 'Success'
else:
@@ -231,7 +231,7 @@ class RootController(BaseController, FeedController):
sum_of_ratings = float(
fivestarcount + fourstarcount + threestarcount + twostarcount +
onestarcount)
- if (sum_of_ratings != 0):
+ if sum_of_ratings != 0:
average_user_ratings = float(
(5*fivestarcount) + (4*fourstarcount) +
(3*threestarcount) + (2*twostarcount) +
@@ -239,12 +239,12 @@ class RootController(BaseController, FeedController):
float_rating = float(average_user_ratings)
int_rating = int(float_rating)
float_point_value = float_rating - int_rating
- if(float_point_value < 0.25):
+ if float_point_value < 0.25:
c.project.rating = int_rating
- elif(float_point_value >= 0.25 < 0.75):
+ elif float_point_value >= 0.25 < 0.75:
c.project.rating = 0.5 + int_rating
- elif(float_point_value >= 0.75):
+ elif float_point_value >= 0.75:
c.project.rating = float(int_rating)+1
return average_user_ratings
- if (sum_of_ratings == 0):
+ if sum_of_ratings == 0:
c.project.rating = 0.0
diff --git a/ForgeFeedback/forgefeedback/model/feedback.py b/ForgeFeedback/forgefeedback/model/feedback.py
index 7cb61e5..9498f70 100755
--- a/ForgeFeedback/forgefeedback/model/feedback.py
+++ b/ForgeFeedback/forgefeedback/model/feedback.py
@@ -41,6 +41,9 @@ class Feedback(VersionedArtifact, ActivityObject):
class __mongometa__:
name = 'feedback'
+ indexes = [
+ ('project_id', 'reported_by_id'),
+ ]
type_s = 'Feedback'
_id = FieldProperty(schema.ObjectId)
@@ -55,6 +58,7 @@ class Feedback(VersionedArtifact, ActivityObject):
result = VersionedArtifact.index(self)
result.update(
created_date_dt=self.created_date,
+ reported_by_username_t=self.reported_by.username,
text=self.description,
)
return result
diff --git a/ForgeFeedback/forgefeedback/templates/__init__.py b/ForgeFeedback/forgefeedback/templates/__init__.py
index e69de29..144e298 100755
--- a/ForgeFeedback/forgefeedback/templates/__init__.py
+++ b/ForgeFeedback/forgefeedback/templates/__init__.py
@@ -0,0 +1,16 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.