SipphoneNotExists
last analyzed

Complexity

Total Complexity 0

Size/Duplication

Total Lines 1
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 1
c 0
b 0
f 0
wmc 0
1
#!/usr/bin/env python
2
# -*- coding: utf-8 -*-
3
4
import logging
5
logger = logging.getLogger(__name__)
6
logger.debug("%s loaded", __name__)
7
8
import importlib
9
import doorpi
10
11
class SipphoneNotExists(Exception): pass
12
13
def load_sipphone():
14
    conf_pre = ''
15
    conf_post = ''
16
17
    sipphone_name = doorpi.DoorPi().config.get(
18
        'SIP-Phone',
19
        'sipphonetyp',
20
        find_first_installed_sipphone()
21
    )
22
23
    try:
24
        sipphone = importlib.import_module('doorpi.sipphone.from_'+sipphone_name).get(
25
            sipphone_name = sipphone_name,
26
            conf_pre = conf_pre,
27
            conf_post = conf_post
28
        )
29
    except ImportError as exp:
30
        logger.exception('sipphone %s not found @ sipphone.from_%s with exception %s', sipphone_name, sipphone_name, exp)
31
        logger.warning('use dummy sipphone after last exception!')
32
        sipphone = importlib.import_module('doorpi.sipphone.from_dummy').get(
33
            sipphone_name = sipphone_name,
34
            conf_pre = conf_pre,
35
            conf_post = conf_post
36
        )
37
38
    return sipphone
39
40
def find_first_installed_sipphone():
41
    sipphone_status = doorpi.DoorPi().get_status(['environment'], ['sipphone'])
42
43
    sipphones = sipphone_status.dictionary['environment']['sipphone']['libraries']
44
    for sipphone_name in sipphones.keys():
45
        if sipphones[sipphone_name]['status']['installed']:
46
            logger.info('found installed sipphone "%s" and use this as default', sipphone_name)
47
            return sipphone_name
48
49
    logger.warning('found no installed sipphones and use dummy as default')
50
    return 'dummy'
51