Mercurial > getan > getan
diff getan/states.py @ 400:527168c08ae4
Added possibility to move starting datetime of entries.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Mon, 12 Sep 2016 10:19:21 +0200 |
parents | cf0406ed424a |
children | 150180e972d3 |
line wrap: on
line diff
--- a/getan/states.py Thu Jan 28 10:08:32 2016 +0100 +++ b/getan/states.py Mon Sep 12 10:19:21 2016 +0200 @@ -543,6 +543,14 @@ entry)) return True + if keys.get_entry_adjust() in key: + entry = self.view.item_in_focus() + if entry: + self.set_next_state(AdjustEntryState(self.projectlist_state, + self.controller, self.view, + entry)) + return True + return False @@ -774,6 +782,55 @@ self.controller.view.set_focus("entries") self.view.frame.set_focus("footer") +class AdjustEntryState(HandleUserInputState): + + messages = { + 'adjust_entry': _('Adjust datetime of entry: '), + } + + def __init__(self, state, controller, view, entry): + view.set_footer_text(self.msg('adjust_entry'), + 'question', True) + super(AdjustEntryState, self).__init__(controller, view, + None, view.footer) + + # we only care up to seconds (which is 19 characters). + # for usability the default value has to match the strptime fmt below. + self.footer.set_edit_text(str(entry.start)[:19]) + self.footer.set_edit_pos(len(self.footer.edit_text)) + self.entry = entry + self.state = state + logger.debug("AdjustEntryState: Entry %s" % entry) + + def enter(self): + entry_datetime = self.footer.get_edit_text() # + + entry = self.entry + duration = entry.get_duration() + + try: + entry.start = datetime.strptime(entry_datetime, "%Y-%m-%d %H:%M:%S") + except: + return self + + entry.end = entry.start + duration + + self.controller.update_entry(entry) + self.view.node_in_focus().update() + return self.exit() + + def exit(self): + self.view.set_footer_text("", 'entry_footer', False) + self.set_next_state(DefaultEntryListState(self.state, self.controller, + self.view)) + return True + + def set_focus(self): + self.controller.view.set_focus("entries") + self.view.frame.set_focus("footer") + + + class ProjectEditKeyState(AlterProjectState):