def import_nodes(self): """ import nodes into local DB """ self.message('saving nodes into local DB...') saved_nodes = [] # loop over all old node and create new nodes for old_node in self.old_nodes: # if this old node is unconfirmed skip to next cycle if old_node.status == 'u': continue try: node = Node.objects.get(pk=old_node.id) except Node.DoesNotExist: node = Node(id=old_node.id) node.data = {} node.user_id = self.users_dict[old_node.email]['id'] node.name = old_node.name node.slug = old_node.slug node.geometry = Point(old_node.lng, old_node.lat) node.elev = old_node.alt node.description = old_node.description node.notes = old_node.notes node.added = old_node.added node.updated = old_node.updated intersecting_layers = node.intersecting_layers # if more than one intersecting layer if len(intersecting_layers) > 1: # prompt user answer = self.prompt_layer_selection(node, intersecting_layers) if isinstance(answer, int): node.layer_id = answer elif answer == 'default' and self.default_layer is not False: node.layer_id = self.default_layer else: self.message('Node %s discarded' % node.name) continue # if one intersecting layer select that elif 2 > len(intersecting_layers) > 0: node.layer = intersecting_layers[0] # if no intersecting layers else: if self.default_layer is False: # discard node if no default layer specified self.message("""Node %s discarded because is not contained in any specified layer and no default layer specified""" % node.name) continue else: node.layer_id = self.default_layer if old_node.postal_code: # additional info node.data['postal_code'] = old_node.postal_code # is it a hotspot? if old_node.status in ['h', 'ah']: node.data['is_hotspot'] = 'true' # determine status according to settings if self.status_mapping: node.status_id = self.get_status(old_node.status) try: node.full_clean() node.save(auto_update=False) saved_nodes.append(node) self.verbose('Saved node %s in layer %s with status %s' % (node.name, node.layer, node.status.name)) except Exception: tb = traceback.format_exc() self.message('Could not save node %s, got exception:\n\n%s' % (node.name, tb)) self.message('saved %d nodes into local DB' % len(saved_nodes)) self.saved_nodes = saved_nodes
def import_nodes(self): """ import nodes into local DB """ self.message('saving nodes into local DB...') saved_nodes = [] # loop over all old node and create new nodes for old_node in self.old_nodes: # if this old node is unconfirmed skip to next cycle if old_node.status == 'u': continue try: node = Node.objects.get(pk=old_node.id) except Node.DoesNotExist: node = Node(id=old_node.id) node.data = {} node.user_id = self.users_dict[old_node.email]['id'] node.name = old_node.name node.slug = old_node.slug node.geometry = Point(old_node.lng, old_node.lat) node.elev = old_node.alt node.description = old_node.description node.notes = old_node.notes node.added = old_node.added node.updated = old_node.updated node.data['imported'] = 'true' intersecting_layers = node.intersecting_layers # if more than one intersecting layer if len(intersecting_layers) > 1: # prompt user answer = self.prompt_layer_selection(node, intersecting_layers) if isinstance(answer, int): node.layer_id = answer elif answer == 'default' and self.default_layer is not False: node.layer_id = self.default_layer else: self.message('Node %s discarded' % node.name) continue # if one intersecting layer select that elif 2 > len(intersecting_layers) > 0: node.layer = intersecting_layers[0] # if no intersecting layers else: if self.default_layer is False: # discard node if no default layer specified self.message("""Node %s discarded because is not contained in any specified layer and no default layer specified""" % node.name) continue else: node.layer_id = self.default_layer if old_node.postal_code: # additional info node.data['postal_code'] = old_node.postal_code # is it a hotspot? if old_node.status in ['h', 'ah']: node.data['is_hotspot'] = 'true' # determine status according to settings if self.status_mapping: node.status_id = self.get_status(old_node.status) try: node.full_clean() node.save(auto_update=False) saved_nodes.append(node) self.verbose('Saved node %s in layer %s with status %s' % (node.name, node.layer, node.status.name)) except Exception: tb = traceback.format_exc() self.message('Could not save node %s, got exception:\n\n%s' % (node.name, tb)) self.message('saved %d nodes into local DB' % len(saved_nodes)) self.saved_nodes = saved_nodes