annotate sat_frontends/primitivus/config.py @ 2901:f6b0088ce247

code (xmpp): store version after roster item update + fix item removal: roster version is now stored after roster item has been added or removed. This way if something interrupting the process happens, former item update will be received and roster should be updated correctly. Roster item removal was crashing because `load()` is not used (local PersistentDict cache is then not updated, and the key to remove is missing there). The exception is now catched and ignored to avoid loading the data only to remove an item.
author Goffi <goffi@goffi.org>
date Wed, 10 Apr 2019 21:04:41 +0200
parents 003b8b4b56a7
children ab2696e34d29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1934
2daf7b4c6756 use of /usr/bin/env instead of /usr/bin/python in shebang
Goffi <goffi@goffi.org>
parents: 1766
diff changeset
1 #!/usr/bin/env python2
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
3
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
4 # Primitivus: a SAT frontend
2771
003b8b4b56a7 date update
Goffi <goffi@goffi.org>
parents: 2624
diff changeset
5 # Copyright (C) 2009-2019 Jérôme Poisson (goffi@goffi.org)
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
6
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
7 # This program is free software: you can redistribute it and/or modify
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
8 # it under the terms of the GNU Affero General Public License as published by
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
9 # the Free Software Foundation, either version 3 of the License, or
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
10 # (at your option) any later version.
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
11
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
12 # This program is distributed in the hope that it will be useful,
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
15 # GNU Affero General Public License for more details.
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
16
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
17 # You should have received a copy of the GNU Affero General Public License
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
18 # along with this program. If not, see <http://www.gnu.org/licenses/>.
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
19
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
20 """This module manage configuration specific to Primitivus"""
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
21
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
22 from sat_frontends.primitivus.constants import Const as C
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
23 from sat_frontends.primitivus.keys import action_key_map
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
24 import ConfigParser
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
25
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
26
1165
ca15fb1abbc4 primitivus: added disable_mouse config option /!\ minimal Urwid version is now 1.2.0
Goffi <goffi@goffi.org>
parents: 1159
diff changeset
27 def applyConfig(host):
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
28 """Parse configuration and apply found change
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
29
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
30 raise: can raise various Exceptions if configuration is not good
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
31 """
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
32 config = ConfigParser.SafeConfigParser()
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
33 config.read(C.CONFIG_FILES)
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
34 try:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
35 options = config.items(C.CONFIG_SECTION)
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
36 except ConfigParser.NoSectionError:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
37 options = []
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
38 shortcuts = {}
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
39 for name, value in options:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
40 if name.startswith(C.CONFIG_OPT_KEY_PREFIX.lower()):
2624
56f94936df1e code style reformatting using black
Goffi <goffi@goffi.org>
parents: 2562
diff changeset
41 action = name[len(C.CONFIG_OPT_KEY_PREFIX) :].upper()
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
42 shortcut = value
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
43 if not action or not shortcut:
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
44 raise ValueError("Bad option: {} = {}".format(name, value))
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
45 shortcuts[action] = shortcut
1165
ca15fb1abbc4 primitivus: added disable_mouse config option /!\ minimal Urwid version is now 1.2.0
Goffi <goffi@goffi.org>
parents: 1159
diff changeset
46 if name == "disable_mouse":
ca15fb1abbc4 primitivus: added disable_mouse config option /!\ minimal Urwid version is now 1.2.0
Goffi <goffi@goffi.org>
parents: 1159
diff changeset
47 host.loop.screen.set_mouse_tracking(False)
1159
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
48
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
49 action_key_map.replace(shortcuts)
85fd02356dba primitivus: key can be changed in config:
Goffi <goffi@goffi.org>
parents:
diff changeset
50 action_key_map.check_namespaces()