Hide fully reviewed projects by default
So I find scrolling around to find the next project to review in gets to be a bit of a nuisance. This patch hides fully reviewed projects unless 'a' is pushed. Change-Id: I09813184c17464171b0af8530f6e394b37b9a10d
This commit is contained in:
parent
f4118833af
commit
85bd6eed69
17
gertty/db.py
17
gertty/db.py
@ -24,6 +24,7 @@ from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String,
|
||||
from sqlalchemy.schema import ForeignKey
|
||||
from sqlalchemy.orm import mapper, sessionmaker, relationship, column_property, scoped_session
|
||||
from sqlalchemy.orm.session import Session
|
||||
from sqlalchemy.sql import exists
|
||||
from sqlalchemy.sql.expression import and_
|
||||
|
||||
metadata = MetaData()
|
||||
@ -420,11 +421,19 @@ class DatabaseSession(object):
|
||||
def delete(self, obj):
|
||||
self.session().delete(obj)
|
||||
|
||||
def getProjects(self, subscribed=False):
|
||||
def getProjects(self, subscribed=False, active_only=False):
|
||||
"""Retrieve projects.
|
||||
|
||||
:param subscribed: If True limit to only subscribed projects.
|
||||
:param active_only: If True limit to only projects with unreviewed
|
||||
reviews.
|
||||
"""
|
||||
query = self.session().query(Project)
|
||||
if subscribed:
|
||||
return self.session().query(Project).filter_by(subscribed=subscribed).order_by(Project.name).all()
|
||||
else:
|
||||
return self.session().query(Project).order_by(Project.name).all()
|
||||
query = query.filter_by(subscribed=subscribed)
|
||||
if active_only:
|
||||
query = query.filter(exists().where(Project.unreviewed_changes))
|
||||
return query.order_by(Project.name).all()
|
||||
|
||||
def getProject(self, key):
|
||||
try:
|
||||
|
@ -67,6 +67,7 @@ class ProjectListHeader(urwid.WidgetWrap):
|
||||
|
||||
class ProjectListView(urwid.WidgetWrap):
|
||||
_help = """
|
||||
<a> Toggle hiding of projects with no active reviews (default: hidden).
|
||||
<l> Toggle whether only subscribed projects or all projects are listed.
|
||||
<s> Toggle the subscription flag for the currently selected project.
|
||||
<ctrl-r> Sync all projects.
|
||||
@ -78,6 +79,7 @@ class ProjectListView(urwid.WidgetWrap):
|
||||
def __init__(self, app):
|
||||
super(ProjectListView, self).__init__(urwid.Pile([]))
|
||||
self.app = app
|
||||
self.active_only = True
|
||||
self.subscribed = True
|
||||
self.project_rows = {}
|
||||
self.listbox = urwid.ListBox(urwid.SimpleFocusListWalker([]))
|
||||
@ -99,11 +101,14 @@ class ProjectListView(urwid.WidgetWrap):
|
||||
self.title = u'Subscribed Projects'
|
||||
else:
|
||||
self.title = u'All Projects'
|
||||
if self.active_only:
|
||||
self.title += u' with unreviewed reviews'
|
||||
self.app.status.update(title=self.title)
|
||||
unseen_keys = set(self.project_rows.keys())
|
||||
with self.app.db.getSession() as session:
|
||||
i = 0
|
||||
for project in session.getProjects(subscribed=self.subscribed):
|
||||
for project in session.getProjects(
|
||||
subscribed=self.subscribed, active_only=self.active_only):
|
||||
row = self.project_rows.get(project.key)
|
||||
if not row:
|
||||
row = ProjectRow(project, self.onSelect)
|
||||
@ -133,6 +138,10 @@ class ProjectListView(urwid.WidgetWrap):
|
||||
project_name, unreviewed=True))
|
||||
|
||||
def keypress(self, size, key):
|
||||
if key=='a':
|
||||
self.active_only = not self.active_only
|
||||
self.refresh()
|
||||
return None
|
||||
if key=='l':
|
||||
self.subscribed = not self.subscribed
|
||||
self.refresh()
|
||||
|
Loading…
x
Reference in New Issue
Block a user