Exemple #1
0
 def clean_ip(self, update_reverse_domain=True):
     """The clean method in Ip is different from the rest. It needs
     to be called with the update_reverse_domain flag. Sometimes we
     need to not update the reverse domain of an IP (i.e. when we are
     deleting a reverse_domain).
     """
     # TODO, it's a f*****g hack. Car babies.
     validate_ip_type(self.ip_type)
     self._validate_ip_str()
     if self.ip_type == '4':
         try:
             ip = ipaddr.IPv4Address(self.ip_str)
             self.ip_str = str(ip)
         except ipaddr.AddressValueError, e:
             raise ValidationError("Invalid Ip address {0}".
                                   format(self.ip_str))
         if update_reverse_domain:
             self.reverse_domain = ip_to_reverse_domain(self.ip_str,
                                                        ip_type='4')
         self.ip_upper = 0
         self.ip_lower = int(ip)
Exemple #2
0
                                      format(self.ip_str))
            if update_reverse_domain:
                self.reverse_domain = ip_to_reverse_domain(self.ip_str,
                                                           ip_type='4')
            self.ip_upper = 0
            self.ip_lower = int(ip)
        else:
            try:
                ip = ipaddr.IPv6Address(self.ip_str)
                self.ip_str = str(ip)
            except ipaddr.AddressValueError, e:
                raise ValidationError("Invalid ip {0} for IPv6s.".
                                      format(self.ip_str))

            if update_reverse_domain:
                self.reverse_domain = ip_to_reverse_domain(self.ip_str,
                                                           ip_type='6')
            self.ip_upper, self.ip_lower = ipv6_to_longs(int(ip))

    def __int__(self):
        if self.ip_type == '4':
            self.ip_lower
        if self.ip_type == '6':
            return (self.ip_upper * (2 ** 64)) + self.ip_lower

    def _validate_ip_str(self):
        if isinstance(self.ip_str, str) or isinstance(self.ip_str, unicode):
            return
        else:
            raise ValidationError("Plase provide the string representation"
                                  "of the IP")