Skip to content

Commit

Permalink
Merge pull request #375 from babsey/smt_list_filtered_by_date
Browse files Browse the repository at this point in the history
Filter record list by the date (smt list)
  • Loading branch information
apdavison committed Sep 11, 2017
2 parents de81c0a + 1afaefa commit 20821e8
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 9 deletions.
9 changes: 9 additions & 0 deletions sumatra/commands.py
Expand Up @@ -17,6 +17,7 @@
from textwrap import dedent
import warnings
import logging
import datetime
import sumatra

from sumatra.programs import get_executable
Expand Down Expand Up @@ -452,6 +453,7 @@ def list(argv): # add 'report' and 'log' as aliases
parser.add_argument('-P', '--parameter_table', action="store_const", const="parameter_table",
dest="mode", help="list records with parameter values")
parser.add_argument('-p', '--parameters', metavar='parameters', default=None, help="filter records by parameter values, separated by comma")
parser.add_argument('-d', '--date', dest='timestamp', help="filter records by the date (today or YYYYMMDD)")
args = parser.parse_args(argv)

project = load_project()
Expand All @@ -460,6 +462,13 @@ def list(argv): # add 'report' and 'log' as aliases
f.write('\n'.join(project.get_labels()))

kwargs = {'tags':args.tags, 'mode':args.mode, 'format':args.format, 'reverse':args.reverse}

if args.timestamp:
if args.timestamp == 'today':
date = datetime.datetime.today().date()
else:
date = datetime.datetime.strptime(args.timestamp, '%Y%m%d')
kwargs['timestamp__range'] = [date, date+datetime.timedelta(1)]
if args.main_file is not None: kwargs['main_file__startswith'] = args.main_file
if args.parameters:
parameters = {}
Expand Down
10 changes: 5 additions & 5 deletions sumatra/projects.py
Expand Up @@ -276,7 +276,7 @@ def add_record(self, record):
cnt += 1
if cnt == max_tries:
print("Reached maximum number of attempts to save record. Aborting.")

def save_record(self, record):
self.record_store.save(self.name, record)

Expand All @@ -302,14 +302,14 @@ def delete_by_tag(self, tag, delete_data=False):
self._most_recent = self.record_store.most_recent(self.name)
return n

def get_labels(self, tags=None, reverse=False):
labels = self.record_store.labels(self.name, tags=tags)
def get_labels(self, tags=None, reverse=False, *args, **kwargs):
labels = self.record_store.labels(self.name, tags=tags, *args, **kwargs)
if reverse:
labels.reverse()
return labels

def find_records(self, tags=None, reverse=False, parameters=None, *args, **kwargs):
records = self.record_store.list(self.name, tags, *args, **kwargs)
records = self.record_store.list(self.name, tags=tags, *args, **kwargs)
if reverse:
records.reverse()
if parameters is not None:
Expand All @@ -320,7 +320,7 @@ def find_records(self, tags=None, reverse=False, parameters=None, *args, **kwarg

def format_records(self, format='text', mode='short', tags=None, reverse=False, *args, **kwargs):
if format=='text' and mode=='short' and ('parameters' not in kwargs.keys()):
return '\n'.join(self.get_labels(tags=tags, reverse=reverse))
return '\n'.join(self.get_labels(tags=tags, reverse=reverse, *args, **kwargs))
else:
records = self.find_records(tags=tags, reverse=reverse, *args, **kwargs)
formatter = get_formatter(format)(records, project=self, tags=tags)
Expand Down
8 changes: 4 additions & 4 deletions sumatra/recordstore/django_store/__init__.py
Expand Up @@ -263,8 +263,8 @@ def get(self, project_name, label):
raise KeyError(label)
return db_record.to_sumatra()

def list(self, project_name, tags=None, *args, **kwarg):
db_records = self._manager.filter(project__id=project_name, *args, **kwarg).select_related()
def list(self, project_name, tags=None, *args, **kwargs):
db_records = self._manager.filter(project__id=project_name, *args, **kwargs).select_related()
if tags:
if not hasattr(tags, "__len__"):
tags = [tags]
Expand All @@ -281,8 +281,8 @@ def list(self, project_name, tags=None, *args, **kwarg):
raise Exception(errmsg)
return records

def labels(self, project_name, tags=None):
db_records = self._manager.filter(project__id=project_name).select_related()
def labels(self, project_name, tags=None, *args, **kwargs):
db_records = self._manager.filter(project__id=project_name, *args, **kwargs).select_related()
if tags:
if not hasattr(tags, "__len__"):
tags = [tags]
Expand Down

0 comments on commit 20821e8

Please sign in to comment.