Mercurial > libervia-web
annotate libervia/server/tasks/task.py @ 1346:cda5537c71d6
browser (photos/album): videos integrations:
videos can now be added to an album, the alternative media player is then used to display
them. Slides options are used to remove pagination and slidebar from slideshow (they don't
play well with media player), and video are reset when its slide is exited.
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 25 Aug 2020 08:31:56 +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) |