Completed
Push — master ( 32acac...19ae40 )
by Lakshmi
11:34
created

SetTemperatureAction   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 27
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 27
rs 10
c 0
b 0
f 0
wmc 9

1 Method

Rating   Name   Duplication   Size   Complexity  
F run() 0 26 9
1
from lib import actions
2
3
4
class SetTemperatureAction(actions.BaseAction):
5
    def run(self, scale, structure=None, device=None, temp=None, temp_low=None, temp_high=None):
6
        temperature = None
7
        mode = None
8
9
        # Assume temp if a range is not provided
10
        if temp_low and temp_high:
11
            temperature = (self._convert_temperature(temp_low, scale),
12
                           self._convert_temperature(temp_high, scale))
13
            # Automatically flip the mode to 'range' to accept the range temp
14
            mode = 'range'
15
        else:
16
            temperature = self._convert_temperature(temp, scale)
17
18
        if structure and device:
19
            nest = self._get_device(structure, device)
20
            if mode:
21
                nest.mode = mode
22
            nest.temperature = temperature
23
        else:
24
            for structure in self._nest.structures:
25
                for device in structure.devices:
26
                    if mode:
27
                        device.mode = mode
28
                    device.temperature = temperature
29
30
        return temperature
31