changeset 4901:409eaadc0054

pullrequests: on 'my pullrequests' show the user's own vote as second column next to 'latest vote'
author Mads Kiilerich <madski@unity3d.com>
date Wed, 11 Mar 2015 01:17:33 +0100
parents 9ecd1d4836cc
children 03bbd33bc084
files kallithea/model/db.py kallithea/templates/pullrequests/pullrequest_data.html
diffstat 2 files changed, 20 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/kallithea/model/db.py	Wed Mar 11 00:24:25 2015 +0100
+++ b/kallithea/model/db.py	Wed Mar 11 01:17:33 2015 +0100
@@ -2188,6 +2188,7 @@
         Index('cs_version_idx', 'version'),
         Index('cs_pull_request_id_idx', 'pull_request_id'),
         Index('cs_changeset_comment_id_idx', 'changeset_comment_id'),
+        Index('cs_pull_request_id_user_id_version_idx', 'pull_request_id', 'user_id', 'version'),
         UniqueConstraint('repo_id', 'revision', 'version'),
         {'extend_existing': True, 'mysql_engine': 'InnoDB',
          'mysql_charset': 'utf8', 'sqlite_autoincrement': True}
@@ -2292,6 +2293,16 @@
     def last_review_status(self):
         return str(self.statuses[-1].status) if self.statuses else ''
 
+    def user_review_status(self, user_id):
+        """Return the user's latest status votes on PR"""
+        # note: no filtering on repo - that would be redundant
+        status = ChangesetStatus.query()\
+            .filter(ChangesetStatus.pull_request == self)\
+            .filter(ChangesetStatus.user_id == user_id)\
+            .order_by(ChangesetStatus.version)\
+            .first()
+        return str(status.status) if status else ''
+
     def __json__(self):
         return dict(
             revisions=self.revisions
--- a/kallithea/templates/pullrequests/pullrequest_data.html	Wed Mar 11 00:24:25 2015 +0100
+++ b/kallithea/templates/pullrequests/pullrequest_data.html	Wed Mar 11 01:17:33 2015 +0100
@@ -21,14 +21,21 @@
     </thead>
 % for pr in pullrequests:
     <tr class="${'pr-closed' if pr.is_closed() else ''}">
-      <td width="60px">
+      <td width="80px">
         ## review status
         %if pr.last_review_status:
-          <i class="icon-circle changeset-status-${pr.last_review_status}" title="${_("Someone voted: %s") % pr.last_review_status}"></i>
+          <i class="icon-circle changeset-status-${pr.last_review_status}" title="${_("Latest vote: %s") % pr.last_review_status}"></i>
         %else:
           <i class="icon-circle changeset-status-not_reviewed" title="${_("Nobody voted")}"></i>
         %endif
 
+        <% status = pr.user_review_status(c.authuser.user_id) %>
+        %if status:
+          <i class="icon-circle changeset-status-${status}" title="${_("You voted: %s") % status}"></i>
+        %else:
+          <i class="icon-circle changeset-status-not_reviewed" title="${_("You didn't vote")}"></i>
+        %endif
+
         ## delete button
         %if pr.author.user_id == c.authuser.user_id:
           ${h.form(url('pullrequest_delete', repo_name=pr.other_repo.repo_name, pull_request_id=pr.pull_request_id),method='delete', style="display:inline-block")}