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
Example #2
0
    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
Example #3
0
 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
         
         node = Node(**{
             "id": old_node.id,
             "user_id": self.users_dict[old_node.email]['id'],
             "name": old_node.name,
             "slug": old_node.slug,
             "geometry": Point(old_node.lng, old_node.lat),
             "elev": old_node.alt,
             "description": old_node.description,
             "notes": old_node.notes,
             "added": old_node.added,
             "updated": old_node.updated,
             "data": {}
         })
         
         if LAYER_APP_INSTALLED:
             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 as e:
             self.message('Could not save node %s, got exception: %s' % (node.name, e))
     
     self.message('saved %d nodes into local DB' % len(saved_nodes))
     self.saved_nodes = saved_nodes