models.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242
  1. from IPy import IP
  2. from django.db import models, connection, DEFAULT_DB_ALIAS
  3. from netfields import *
  4. class InetTestModel(models.Model):
  5. '''
  6. >>> cursor = connection.cursor()
  7. >>> InetTestModel(inet='10.0.0.1').save()
  8. >>> InetTestModel(inet=IP('10.0.0.1')).save()
  9. >>> InetTestModel(inet='').save()
  10. Traceback (most recent call last):
  11. ...
  12. IntegrityError: inet.inet may not be NULL
  13. >>> InetTestModel(inet='az').save()
  14. Traceback (most recent call last):
  15. ...
  16. ValueError: invalid literal for int() with base 10: 'az'
  17. >>> InetTestModel(inet=None).save()
  18. Traceback (most recent call last):
  19. ...
  20. IntegrityError: inet.inet may not be NULL
  21. >>> InetTestModel().save()
  22. Traceback (most recent call last):
  23. ...
  24. IntegrityError: inet.inet may not be NULL
  25. >>> InetTestModel.objects.filter(inet='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  26. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" = %s ', (u'10.0.0.1',))
  27. >>> InetTestModel.objects.filter(inet__exact='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  28. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" = %s ', (u'10.0.0.1',))
  29. >>> InetTestModel.objects.filter(inet__iexact='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  30. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" = %s ', (u'10.0.0.1',))
  31. >>> InetTestModel.objects.filter(inet__net_contains='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  32. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" >> %s ', (u'10.0.0.1',))
  33. >>> InetTestModel.objects.filter(inet__in=['10.0.0.1', '10.0.0.2']).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  34. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" IN (%s, %s)', (u'10.0.0.1', u'10.0.0.2'))
  35. >>> InetTestModel.objects.filter(inet__gt='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  36. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" > %s ', (u'10.0.0.1',))
  37. >>> InetTestModel.objects.filter(inet__gte='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  38. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" >= %s ', (u'10.0.0.1',))
  39. >>> InetTestModel.objects.filter(inet__lt='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  40. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" < %s ', (u'10.0.0.1',))
  41. >>> InetTestModel.objects.filter(inet__lte='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  42. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" <= %s ', (u'10.0.0.1',))
  43. >>> InetTestModel.objects.filter(inet__startswith='10.').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  44. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE HOST("inet"."inet") ILIKE %s ', (u'10.%',))
  45. >>> InetTestModel.objects.filter(inet__istartswith='10.').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  46. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE HOST("inet"."inet") ILIKE %s ', (u'10.%',))
  47. >>> InetTestModel.objects.filter(inet__endswith='.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  48. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE HOST("inet"."inet") ILIKE %s ', (u'%.1',))
  49. >>> InetTestModel.objects.filter(inet__iendswith='.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  50. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE HOST("inet"."inet") ILIKE %s ', (u'%.1',))
  51. >>> InetTestModel.objects.filter(inet__range=('10.0.0.1', '10.0.0.10')).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  52. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" BETWEEN %s and %s', (u'10.0.0.1', u'10.0.0.10'))
  53. >>> InetTestModel.objects.filter(inet__year=1).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  54. Traceback (most recent call last):
  55. ...
  56. ValueError: Invalid lookup type "year"
  57. >>> InetTestModel.objects.filter(inet__month=1).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  58. Traceback (most recent call last):
  59. ...
  60. ValueError: Invalid lookup type "month"
  61. >>> InetTestModel.objects.filter(inet__day=1).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  62. Traceback (most recent call last):
  63. ...
  64. ValueError: Invalid lookup type "day"
  65. >>> InetTestModel.objects.filter(inet__isnull=True).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  66. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" IS NULL', ())
  67. >>> InetTestModel.objects.filter(inet__isnull=False).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  68. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" IS NOT NULL', ())
  69. >>> InetTestModel.objects.filter(inet__search='10').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  70. Traceback (most recent call last):
  71. ...
  72. ValueError: Invalid lookup type "search"
  73. >>> InetTestModel.objects.filter(inet__regex=u'10').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  74. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE HOST("inet"."inet") ~* %s ', (u'10',))
  75. >>> InetTestModel.objects.filter(inet__iregex=u'10').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  76. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE HOST("inet"."inet") ~* %s ', (u'10',))
  77. >>> InetTestModel.objects.filter(inet__net_contains_or_equals='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  78. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" >>= %s ', (u'10.0.0.1',))
  79. >>> InetTestModel.objects.filter(inet__net_contained='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  80. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" << %s ', (u'10.0.0.1',))
  81. >>> InetTestModel.objects.filter(inet__net_contained_or_equal='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  82. ('SELECT "inet"."id", "inet"."inet" FROM "inet" WHERE "inet"."inet" <<= %s ', (u'10.0.0.1',))
  83. '''
  84. inet = InetAddressField()
  85. objects = NetManager()
  86. class Meta:
  87. db_table = 'inet'
  88. class NullInetTestModel(models.Model):
  89. '''
  90. >>> NullInetTestModel(inet='10.0.0.1').save()
  91. >>> NullInetTestModel(inet=IP('10.0.0.1')).save()
  92. >>> NullInetTestModel(inet='').save()
  93. >>> NullInetTestModel(inet=None).save()
  94. >>> NullInetTestModel().save()
  95. '''
  96. inet = InetAddressField(null=True)
  97. objects = NetManager()
  98. class Meta:
  99. db_table = 'nullinet'
  100. class CidrTestModel(models.Model):
  101. '''
  102. >>> CidrTestModel.objects.filter(cidr='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  103. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" = %s ', (u'10.0.0.1',))
  104. >>> CidrTestModel.objects.filter(cidr__exact='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  105. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" = %s ', (u'10.0.0.1',))
  106. >>> CidrTestModel.objects.filter(cidr__iexact='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  107. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" = %s ', (u'10.0.0.1',))
  108. >>> CidrTestModel.objects.filter(cidr__net_contains='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  109. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" >> %s ', (u'10.0.0.1',))
  110. >>> CidrTestModel.objects.filter(cidr__in=['10.0.0.1', '10.0.0.2']).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  111. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" IN (%s, %s)', (u'10.0.0.1', u'10.0.0.2'))
  112. >>> CidrTestModel.objects.filter(cidr__gt='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  113. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" > %s ', (u'10.0.0.1',))
  114. >>> CidrTestModel.objects.filter(cidr__gte='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  115. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" >= %s ', (u'10.0.0.1',))
  116. >>> CidrTestModel.objects.filter(cidr__lt='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  117. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" < %s ', (u'10.0.0.1',))
  118. >>> CidrTestModel.objects.filter(cidr__lte='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  119. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" <= %s ', (u'10.0.0.1',))
  120. >>> CidrTestModel.objects.filter(cidr__startswith='10.').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  121. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE TEXT("cidr"."cidr") ILIKE %s ', (u'10.%',))
  122. >>> CidrTestModel.objects.filter(cidr__istartswith='10.').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  123. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE TEXT("cidr"."cidr") ILIKE %s ', (u'10.%',))
  124. >>> CidrTestModel.objects.filter(cidr__endswith='.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  125. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE TEXT("cidr"."cidr") ILIKE %s ', (u'%.1',))
  126. >>> CidrTestModel.objects.filter(cidr__iendswith='.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  127. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE TEXT("cidr"."cidr") ILIKE %s ', (u'%.1',))
  128. >>> CidrTestModel.objects.filter(cidr__range=('10.0.0.1', '10.0.0.10')).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  129. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" BETWEEN %s and %s', (u'10.0.0.1', u'10.0.0.10'))
  130. >>> CidrTestModel.objects.filter(cidr__year=1).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  131. Traceback (most recent call last):
  132. ...
  133. ValueError: Invalid lookup type "year"
  134. >>> CidrTestModel.objects.filter(cidr__month=1).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  135. Traceback (most recent call last):
  136. ...
  137. ValueError: Invalid lookup type "month"
  138. >>> CidrTestModel.objects.filter(cidr__day=1).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  139. Traceback (most recent call last):
  140. ...
  141. ValueError: Invalid lookup type "day"
  142. >>> CidrTestModel.objects.filter(cidr__isnull=True).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  143. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" IS NULL', ())
  144. >>> CidrTestModel.objects.filter(cidr__isnull=False).query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  145. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" IS NOT NULL', ())
  146. >>> CidrTestModel.objects.filter(cidr__search='10').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  147. Traceback (most recent call last):
  148. ...
  149. ValueError: Invalid lookup type "search"
  150. >>> CidrTestModel.objects.filter(cidr__regex=u'10').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  151. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE TEXT("cidr"."cidr") ~* %s ', (u'10',))
  152. >>> CidrTestModel.objects.filter(cidr__iregex=u'10').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  153. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE TEXT("cidr"."cidr") ~* %s ', (u'10',))
  154. >>> CidrTestModel.objects.filter(cidr__net_contains_or_equals='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  155. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" >>= %s ', (u'10.0.0.1',))
  156. >>> CidrTestModel.objects.filter(cidr__net_contained='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  157. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" << %s ', (u'10.0.0.1',))
  158. >>> CidrTestModel.objects.filter(cidr__net_contained_or_equal='10.0.0.1').query.get_compiler(DEFAULT_DB_ALIAS).as_sql()
  159. ('SELECT "cidr"."id", "cidr"."cidr" FROM "cidr" WHERE "cidr"."cidr" <<= %s ', (u'10.0.0.1',))
  160. '''
  161. cidr = CidrAddressField()
  162. objects = NetManager()
  163. class Meta:
  164. db_table = 'cidr'
  165. class MACTestModel(models.Model):
  166. mac = MACAddressField(null=True)
  167. objects = NetManager()
  168. class Meta:
  169. db_table = 'mac'