70 lines
2.3 KiB
Python
Executable File
70 lines
2.3 KiB
Python
Executable File
from .consts import C__CATG__NETWORK_PORT
|
|
from .category import IDoitCategory
|
|
from copy import deepcopy
|
|
|
|
|
|
class IDoitNetworkPort(IDoitCategory):
|
|
|
|
CATEGORY = C__CATG__NETWORK_PORT
|
|
|
|
def __init__(self, cfg):
|
|
super().__init__(cfg, self.CATEGORY)
|
|
|
|
def convert_field_with_name_active(self, data):
|
|
return int(data['active']['value'])
|
|
|
|
def convert_field_with_name_interface(self, data):
|
|
if len(data['interface']) == 0:
|
|
return None
|
|
return int(data['interface'][0]['id'])
|
|
|
|
def convert_field_with_name_speed(self, data):
|
|
return float(data['speed']['title'])
|
|
|
|
def convert_field_with_name_cable(self, data):
|
|
return self.conv_array_field('cable', data, 'id')
|
|
|
|
def convert_field_with_name_addresses(self, data):
|
|
return self.convert_list(data['addresses'])
|
|
|
|
def convert_field_with_name_layer2_assignment(self, data):
|
|
if data['layer2_assignment'] == []:
|
|
return None
|
|
# else:
|
|
raise Exception('unknown conversion ', data)
|
|
|
|
def convert_field_with_name_assigned_connector(self, data):
|
|
return self.conv_array_field('assigned_connector', data, 'ref_id')
|
|
|
|
def convert_field_with_name_relation_direction(self, data):
|
|
return int(data['relation_direction']['id'])
|
|
|
|
def save_category_if_changed(self, objId, data):
|
|
raise Exception(
|
|
'Funktioniert nur wenn es nur eine Kategorie gibt, ' +
|
|
'muss mit ID spezifiziert werden')
|
|
|
|
def fix_obj(self, cdata):
|
|
#if ('interface' in cdata.keys()) and (cdata['interface'] is not None):
|
|
# cdata['interface'] = "%d_C__CATG__NETWORK_INTERFACE" % cdata['interface']
|
|
|
|
if ('addresses' in cdata.keys()) :
|
|
if cdata['addresses'] is None:
|
|
cdata['addresses'] = None
|
|
# FIXME Das geht im Moment nicht. siehe Idoit Bug #20429 (sanders)
|
|
else:
|
|
rtn = []
|
|
for ele in cdata['addresses']:
|
|
rtn.append(str(ele))
|
|
cdata['addresses'] = rtn
|
|
|
|
def save_category(self, objId, data):
|
|
cdata = deepcopy(data)
|
|
self.fix_obj(cdata)
|
|
return super().save_category(objId, cdata)
|
|
|
|
def update_category(self, objId, data):
|
|
cdata = deepcopy(data)
|
|
self.fix_obj(cdata)
|
|
return super().update_category(objId, cdata)
|