Mercurial > libervia-web
annotate libervia/server/tasks/task.py @ 1301:ff44f822bfdd
browser (photos): albums can now be deleted:
when albums are deleted, there are removed from list of interest, and all photos inside
are also deleted.
Doesn't check permissions before deletion yet, so the button is always present even when it
may fail.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 19 Jun 2020 16:47:51 +0200 |
parents | a46d0e0f383b |
children | 822bd0139769 |
rev | line source |
---|---|
1239 | 1 #!/usr/bin/env python3 |
2 | |
1146 | 3 # Libervia: a Salut à Toi frontend |
1237 | 4 # Copyright (C) 2011-2020 Jérôme Poisson <goffi@goffi.org> |
1146 | 5 |
6 # This program is free software: you can redistribute it and/or modify | |
7 # it under the terms of the GNU Affero General Public License as published by | |
8 # the Free Software Foundation, either version 3 of the License, or | |
9 # (at your option) any later version. | |
10 | |
11 # This program is distributed in the hope that it will be useful, | |
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 # GNU Affero General Public License for more details. | |
15 | |
16 # You should have received a copy of the GNU Affero General Public License | |
17 # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
18 from twisted.python.procutils import which | |
1245 | 19 from sat.core.log import getLogger |
20 from sat.tools.common import async_process | |
1146 | 21 from sat.core import exceptions |
22 from sat.core.i18n import _ | |
1245 | 23 from typing import Optional |
1146 | 24 |
25 log = getLogger(__name__) | |
26 | |
27 | |
1245 | 28 class Task: |
1146 | 29 """Handle tasks of a Libervia site""" |
1245 | 30 # can be "stop" or "continue" |
31 ON_ERROR: str = "stop" | |
32 LOG_OUTPUT: bool = True | |
33 # list of directories to check for restarting this task | |
1260 | 34 # Task.onDirEvent will be called if it exists, otherwise |
35 # the task will be run and Task.start will be called | |
1245 | 36 WATCH_DIRS: Optional[list] = None |
1261
a46d0e0f383b
tasks: `AFTER` attribute to handle tasks order:
Goffi <goffi@goffi.org>
parents:
1260
diff
changeset
|
37 # list of task names which must be prepared/started before this one |
a46d0e0f383b
tasks: `AFTER` attribute to handle tasks order:
Goffi <goffi@goffi.org>
parents:
1260
diff
changeset
|
38 AFTER: Optional[list] = None |
1146 | 39 |
1261
a46d0e0f383b
tasks: `AFTER` attribute to handle tasks order:
Goffi <goffi@goffi.org>
parents:
1260
diff
changeset
|
40 def __init__(self, manager, task_name): |
1245 | 41 self.manager = manager |
1261
a46d0e0f383b
tasks: `AFTER` attribute to handle tasks order:
Goffi <goffi@goffi.org>
parents:
1260
diff
changeset
|
42 self.name = task_name |
1245 | 43 |
44 @property | |
45 def host(self): | |
46 return self.manager.host | |
47 | |
48 @property | |
49 def resource(self): | |
50 return self.manager.resource | |
1146 | 51 |
52 @property | |
53 def site_path(self): | |
1245 | 54 return self.manager.site_path |
1146 | 55 |
56 @property | |
57 def build_path(self): | |
58 """path where generated files will be build for this site""" | |
1245 | 59 return self.manager.build_path |
1146 | 60 |
61 def getConfig(self, key, default=None, value_type=None): | |
1147
02afab1b15c5
server, pages, tasks: moved getConfig to backend, and added shorcut version in LiberviaPage and TasksManager
Goffi <goffi@goffi.org>
parents:
1146
diff
changeset
|
62 return self.host.getConfig(self.resource, key=key, default=default, |
02afab1b15c5
server, pages, tasks: moved getConfig to backend, and added shorcut version in LiberviaPage and TasksManager
Goffi <goffi@goffi.org>
parents:
1146
diff
changeset
|
63 value_type=value_type) |
1146 | 64 |
65 @property | |
66 def site_name(self): | |
67 return self.resource.site_name | |
68 | |
69 def findCommand(self, name, *args): | |
70 """Find full path of a shell command | |
71 | |
72 @param name(unicode): name of the command to find | |
73 @param *args(unicode): extra names the command may have | |
74 @return (unicode): full path of the command | |
75 @raise exceptions.NotFound: can't find this command | |
76 """ | |
77 names = (name,) + args | |
78 for n in names: | |
79 try: | |
1216 | 80 cmd_path = which(n)[0] |
1146 | 81 except IndexError: |
82 pass | |
1189
170802865156
server (tasks): fixed findCommand when first name can't be found
Goffi <goffi@goffi.org>
parents:
1166
diff
changeset
|
83 else: |
170802865156
server (tasks): fixed findCommand when first name can't be found
Goffi <goffi@goffi.org>
parents:
1166
diff
changeset
|
84 return cmd_path |
1146 | 85 raise exceptions.NotFound(_( |
1216 | 86 "Can't find {name} command, did you install it?").format(name=name)) |
1146 | 87 |
88 def runCommand(self, command, *args, **kwargs): | |
1245 | 89 kwargs['verbose'] = self.LOG_OUTPUT |
1146 | 90 return async_process.CommandProtocol.run(command, *args, **kwargs) |