contacts.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import django_tables2 as tables
  2. from netbox.tables import NetBoxTable, columns
  3. from tenancy.models import *
  4. from utilities.tables import linkify_phone
  5. __all__ = (
  6. 'ContactAssignmentTable',
  7. 'ContactGroupTable',
  8. 'ContactRoleTable',
  9. 'ContactTable',
  10. )
  11. class ContactGroupTable(NetBoxTable):
  12. name = columns.MPTTColumn(
  13. linkify=True
  14. )
  15. contact_count = columns.LinkedCountColumn(
  16. viewname='tenancy:contact_list',
  17. url_params={'group_id': 'pk'},
  18. verbose_name='Contacts'
  19. )
  20. tags = columns.TagColumn(
  21. url_name='tenancy:contactgroup_list'
  22. )
  23. class Meta(NetBoxTable.Meta):
  24. model = ContactGroup
  25. fields = (
  26. 'pk', 'name', 'contact_count', 'description', 'slug', 'tags', 'created', 'last_updated', 'actions',
  27. )
  28. default_columns = ('pk', 'name', 'contact_count', 'description')
  29. class ContactRoleTable(NetBoxTable):
  30. name = tables.Column(
  31. linkify=True
  32. )
  33. class Meta(NetBoxTable.Meta):
  34. model = ContactRole
  35. fields = ('pk', 'name', 'description', 'slug', 'created', 'last_updated', 'actions')
  36. default_columns = ('pk', 'name', 'description')
  37. class ContactTable(NetBoxTable):
  38. name = tables.Column(
  39. linkify=True
  40. )
  41. group = tables.Column(
  42. linkify=True
  43. )
  44. phone = tables.Column(
  45. linkify=linkify_phone,
  46. )
  47. comments = columns.MarkdownColumn()
  48. assignment_count = tables.Column(
  49. verbose_name='Assignments'
  50. )
  51. tags = columns.TagColumn(
  52. url_name='tenancy:tenant_list'
  53. )
  54. class Meta(NetBoxTable.Meta):
  55. model = Contact
  56. fields = (
  57. 'pk', 'name', 'group', 'title', 'phone', 'email', 'address', 'link', 'comments', 'assignment_count', 'tags',
  58. 'created', 'last_updated',
  59. )
  60. default_columns = ('pk', 'name', 'group', 'assignment_count', 'title', 'phone', 'email')
  61. class ContactAssignmentTable(NetBoxTable):
  62. content_type = columns.ContentTypeColumn(
  63. verbose_name='Object Type'
  64. )
  65. object = tables.Column(
  66. linkify=True,
  67. orderable=False
  68. )
  69. contact = tables.Column(
  70. linkify=True
  71. )
  72. role = tables.Column(
  73. linkify=True
  74. )
  75. actions = columns.ActionsColumn(
  76. actions=('edit', 'delete')
  77. )
  78. class Meta(NetBoxTable.Meta):
  79. model = ContactAssignment
  80. fields = ('pk', 'content_type', 'object', 'contact', 'role', 'priority', 'actions')
  81. default_columns = ('pk', 'content_type', 'object', 'contact', 'role', 'priority')