Mercurial > getan > getan
annotate getan/controller.py @ 136:92b7582b8f44
Use new style classes
author | Björn Ricks <bjoern.ricks@intevation.de> |
---|---|
date | Wed, 31 Oct 2012 14:22:23 +0100 |
parents | ce707fbb9666 |
children | ac7c6594fc0e |
rev | line source |
---|---|
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
2 # |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
3 # (c) 2010 by Ingo Weinzierl <ingo.weinzierl@intevation.de> |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
4 # (c) 2011 by Björn Ricks <bjoern.ricks@intevation.de> |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
5 # |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
6 # A python worklog-alike to log what you have 'getan' (done). |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
7 # |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
8 # This is Free Software licensed under the terms of GPLv3 or later. |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
9 # For details see LICENSE coming with the source of 'getan'. |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
10 # |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
11 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
12 import logging |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
13 from datetime import datetime |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
14 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
15 from getan.view import GetanView |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
16 from getan.states import PausedProjectsState |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
17 from getan.utils import format_time |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
18 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
19 logger = logging.getLogger() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
20 |
136
92b7582b8f44
Use new style classes
Björn Ricks <bjoern.ricks@intevation.de>
parents:
135
diff
changeset
|
21 class GetanController(object): |
92b7582b8f44
Use new style classes
Björn Ricks <bjoern.ricks@intevation.de>
parents:
135
diff
changeset
|
22 |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
23 def __init__(self, backend, pv_class, ev_class): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
24 self.ev_class = ev_class |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
25 self.pv_class = pv_class |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
26 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
27 self.backend = backend |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
28 projects, entries = self.load_projects() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
29 self.projects = projects |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
30 self.running = [] |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
31 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
32 self.project_view = pv_class(self, self.projects) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
33 self.entries_view = ev_class(entries) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
34 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
35 self.view = GetanView(self, self.project_view, self.entries_view) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
36 self.state = PausedProjectsState(self, self.project_view) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
37 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
38 def main(self): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
39 self.view.run() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
40 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
41 def unhandled_keypress(self, key): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
42 self.state = self.state.keypress(key) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
43 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
44 def input_filter(self, input, raw_input): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
45 if 'window resize' in input: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
46 self.view.loop.screen_size = None |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
47 self.view.loop.draw_screen() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
48 else: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
49 self.state = self.state.keypress(input) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
50 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
51 def load_projects(self): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
52 projects = self.backend.load_projects() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
53 if projects: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
54 entries = self.backend.load_entries(projects[0].id) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
55 else: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
56 entries = [] |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
57 return (projects, entries) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
58 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
59 def update_entries(self, project): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
60 logger.debug("GetanController: update entries.") |
135
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
61 if project: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
62 entries = self.backend.load_entries(project.id) |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
63 else: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
64 entries = [] |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
65 self.entries_view.set_rows(entries) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
66 self.view.update_view() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
67 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
68 def move_selected_entries(self, project): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
69 old_project = None |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
70 entries = [] |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
71 try: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
72 while self.entries_view.selection: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
73 node = self.entries_view.selection.pop() |
135
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
74 if node.selected: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
75 node.select() |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
76 entries.append(node.item) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
77 logger.info("GetanController: move entry '%s' (id = %d, "\ |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
78 "project id = %d) to project '%s'" |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
79 % (node.item.desc, node.item.id, |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
80 node.item.project_id, project.desc)) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
81 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
82 if not old_project: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
83 old_project = self.project_by_id(node.item.project_id) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
84 finally: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
85 self.backend.move_entries(entries, project.id) |
135
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
86 if not old_project: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
87 return |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
88 project.entries = self.backend.load_entries(project.id) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
89 old_project.entries = self.backend.load_entries(old_project.id) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
90 self.update_entries(old_project) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
91 self.project_view.update_all() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
92 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
93 def delete_entries(self, entry_nodes): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
94 if not entry_nodes: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
95 return |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
96 proj = self.project_by_id(entry_nodes[0].project_id) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
97 entries = entry_nodes |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
98 self.backend.delete_entries(entries) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
99 proj.entries = self.backend.load_entries(proj.id) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
100 self.update_entries(proj) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
101 self.project_view.update() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
102 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
103 def update_project_list(self): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
104 self.project_view.update() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
105 self.view.update_view() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
106 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
107 def exit(self): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
108 self.view.exit() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
109 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
110 def project_by_key(self, key): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
111 for proj in self.projects: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
112 if proj.key == key: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
113 return proj |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
114 return None |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
115 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
116 def project_by_id(self, id): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
117 for proj in self.projects: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
118 if proj.id == id: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
119 return proj |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
120 return None |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
121 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
122 def start_project(self, project): |
135
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
123 if not project: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
124 return |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
125 self.running.append(project) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
126 project.start = datetime.now() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
127 logger.info("Start project '%s' at %s." |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
128 % (project.desc, format_time(datetime.now()))) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
129 self.view.set_footer_text(" Running on '%s'" % project.desc, 'running') |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
130 logger.debug('All running projects: %r' % self.running) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
131 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
132 def stop_project(self, desc='-no description-', display=True): |
135
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
133 if not self.running: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
134 return |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
135 project = self.running.pop() |
135
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
136 if not project: |
ce707fbb9666
Change coding style of if clauses
Björn Ricks <bjoern.ricks@intevation.de>
parents:
112
diff
changeset
|
137 return |
112
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
138 logger.info("Stop project '%s' at %s." |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
139 % (project.desc, format_time(datetime.now()))) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
140 project.stop = datetime.now() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
141 self.backend.insert_project_entry(project, datetime.now(), desc) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
142 if display: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
143 self.update_entries(project) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
144 self.update_project_list() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
145 logger.debug('Still running projects: %r' % self.running) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
146 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
147 def add_project(self, key, description): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
148 if not key or not description: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
149 return |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
150 self.backend.insert_project(key, description) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
151 self.update_projects() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
152 self.update_project_list() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
153 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
154 def update_entry(self, entry): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
155 self.backend.update_entry(entry) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
156 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
157 def shutdown(self): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
158 for project in self.running: |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
159 self.stop_project(display=False) |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
160 |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
161 def update_projects(self): |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
162 projects, entries = self.load_projects() |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
163 self.projects = projects |
d85b2a25797c
Move GetanController to it's own module
Björn Ricks <bjoern.ricks@intevation.de>
parents:
diff
changeset
|
164 self.project_view.load_rows(projects) |