def save(self, *args, **kwargs):
<EOL>if isinstance(self.geometry, GeometryCollection) and <NUM_LIT:0> < len(self.geometry) < <NUM_LIT:2>:<EOL><INDENT>self.geometry = self.geometry[<NUM_LIT:0>]<EOL><DEDENT>if not self.status and not self.status_id:<EOL><INDENT>try:<EOL><INDENT>self.status = Status.objects.filter(is_default=True)[<NUM_LIT:0>]<EOL><DEDENT>except IndexError:<EOL><INDENT>pass<EOL><DEDENT><DEDENT>super(Node, self).save(*args, **kwargs)<EOL>if (self.status and self._current_status and self.status.id != self._current_status) or(self.status_id and self._current_status and self.status_id != self._current_status):<EOL><INDENT>node_status_changed.send(<EOL>sender=self.__class__,<EOL>instance=self,<EOL>old_status=Status.objects.get(pk=self._current_status),<EOL>new_status=self.status<EOL>)<EOL><DEDENT>self._current_status = self.status_id<EOL>
Custom save method does the following things:
    * converts geometry collections of just 1 item to that item (eg: a collection of 1 Point becomes a Point)
    * intercepts changes to status and fires node_status_changed signal
    * set default status