models.py 10 KB

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