Update the IP info.

        Args:
            since_days (int): if checked less than this number of days ago,
                don't check again (default to 10 days).
            save (bool): whether to save anyway or not.
            force (bool): whether to update ip_info to last checked one.

        Returns:
            bool: check was run. IPInfo might not have been updated.

def update_ip_info(self, since_days=10, save=False, force=False):
        """
        Update the IP info.

        Args:
            since_days (int): if checked less than this number of days ago,
                don't check again (default to 10 days).
            save (bool): whether to save anyway or not.
            force (bool): whether to update ip_info to last checked one.

        Returns:
            bool: check was run. IPInfo might not have been updated.
        """
        # If ip already checked
        try:
            last_check = IPInfoCheck.objects.get(
                ip_address=self.client_ip_address)

            # If checked less than since_days ago, don't check again
            since_last = datetime.date.today() - last_check.date
            if since_last <= datetime.timedelta(days=since_days):
                if not self.ip_info or (
                        self.ip_info != last_check.ip_info and force):
                    self.ip_info = last_check.ip_info
                    self.save()
                    return True
                elif save:
                    self.save()
                return False

            # Get or create ip_info object
            ip_info, created = IPInfo.get_or_create_from_ip(
                self.client_ip_address)

            # Update check time
            last_check.date = datetime.date.today()
            last_check.save()

            # Maybe data changed
            if created:
                last_check.ip_info = ip_info
                self.ip_info = ip_info
                self.save()
                return True
            elif save:
                self.save()

            return False

        except IPInfoCheck.DoesNotExist:
            # Else if ip never checked, check it and set ip_info
            self.ip_info = IPInfoCheck.check_ip(self.client_ip_address)
            self.save()

            return True