types.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. import strawberry
  2. import strawberry_django
  3. from circuits import filtersets, models
  4. from dcim.graphql.mixins import CabledObjectMixin
  5. from extras.graphql.mixins import CustomFieldsMixin, TagsMixin, ContactsMixin
  6. from netbox.graphql.types import ObjectType, OrganizationalObjectType, NetBoxObjectType
  7. from .filters import *
  8. __all__ = (
  9. 'CircuitTerminationType',
  10. 'CircuitType',
  11. 'CircuitTypeType',
  12. 'ProviderType',
  13. 'ProviderAccountType',
  14. 'ProviderNetworkType',
  15. )
  16. @strawberry_django.type(
  17. models.Provider,
  18. fields='__all__',
  19. filters=ProviderFilter
  20. )
  21. class ProviderType(NetBoxObjectType, ContactsMixin):
  22. pass
  23. @strawberry_django.type(
  24. models.ProviderAccount,
  25. fields='__all__',
  26. filters=ProviderAccountFilter
  27. )
  28. class ProviderAccountType(NetBoxObjectType):
  29. pass
  30. @strawberry_django.type(
  31. models.ProviderNetwork,
  32. fields='__all__',
  33. filters=ProviderNetworkFilter
  34. )
  35. class ProviderNetworkType(NetBoxObjectType):
  36. pass
  37. @strawberry_django.type(
  38. models.CircuitTermination,
  39. fields='__all__',
  40. filters=CircuitTerminationFilter
  41. )
  42. class CircuitTerminationType(CustomFieldsMixin, TagsMixin, CabledObjectMixin, ObjectType):
  43. pass
  44. @strawberry_django.type(
  45. models.Circuit,
  46. fields='__all__',
  47. filters=CircuitFilter
  48. )
  49. class CircuitType(NetBoxObjectType, ContactsMixin):
  50. provider: ProviderType
  51. @strawberry_django.type(
  52. models.CircuitType,
  53. # fields='__all__',
  54. exclude=['color',], # bug - remove color from exclude
  55. filters=CircuitTypeFilter
  56. )
  57. class CircuitTypeType(OrganizationalObjectType):
  58. pass