admin_utils.py 4.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. from tickets.models import *
  2. from django.contrib.contenttypes.models import ContentType
  3. from django.contrib.auth.models import Group, Permission
  4. from django.http import HttpResponse
  5. import csv
  6. def add_perm(group, permissions, contenttype):
  7. tct = ContentType.objects.get_for_model(contenttype)
  8. for i in permissions:
  9. group.permissions.add(Permission.objects.get(codename=i, content_type=tct))
  10. def export_to_csv(modeladmin, request, queryset):
  11. meta = modeladmin.model._meta
  12. field_names = [field.name for field in meta.fields]
  13. #field_show_names = [field.verbose_name for field in meta.fields]
  14. response = HttpResponse(content_type='text/csv')
  15. response['Content-Disposition'] = 'attachment; filename={}.csv'.format(meta)
  16. writer = csv.writer(response)
  17. writer.writerow(field_names)
  18. #writer.writerow(field_show_names)
  19. for obj in queryset:
  20. row = writer.writerow([getattr(obj, field) for field in field_names])
  21. return response
  22. def add_default_ticketstype():
  23. if not TicketType.objects.filter(name="SERVICE_REQUEST"):
  24. TicketType.objects.create(name="SERVICE_REQUEST", life_cycle="210-211-251,211-212-220-238-249,212-221-229-238-249,221-222-238-249,220-211-238-249,229-211-251,222-231-238-249,231-241-238-249,238-231-239-211-212-221-220-222-249,239-231-239-211-212-221-220")
  25. TicketType.objects.create(name="ST_REQUEST", life_cycle="111-121-149-159,110-121-149-159,121-131-149-159,131-141-149,141-151-110,149-151-110,159,151")
  26. TicketType.objects.create(name="NEG_REQUEST", life_cycle="420-421-459,421,459")
  27. TicketType.objects.create(name="ACCESS_REQUEST", life_cycle="320-321-359,321,359")
  28. def add_default_group():
  29. if not Group.objects.filter(name="meta-user"):
  30. #Meta user
  31. group = Group.objects.create(name="meta-user")
  32. add_perm(group, ['add_task', 'change_task', 'view_task'], Task)
  33. #Platform admin
  34. group = Group.objects.create(name="platform-admin")
  35. add_perm(group, ['add_attachment', 'view_attachment'], Attachment)
  36. add_perm(group, [ 'add_comment', 'view_comment'], Comment)
  37. add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task)
  38. group = Group.objects.create(name="platform-supervisor")
  39. add_perm(group, ['add_attachment', 'view_attachment'], Attachment)
  40. add_perm(group, [ 'add_comment', 'view_comment'], Comment)
  41. add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task)
  42. group = Group.objects.create(name="platform-support")
  43. add_perm(group, [ 'add_comment', 'view_comment'], Comment)
  44. add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task)
  45. group = Group.objects.create(name="platform-techsupport")
  46. add_perm(group, ['add_attachment', 'view_attachment'], Attachment)
  47. add_perm(group, [ 'add_comment', 'view_comment'], Comment)
  48. add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task)
  49. def add_default_tickets_list(request):
  50. if not TaskList.objects.filter(name="Заявки клиентов"):
  51. if not Group.objects.filter(name="TestGroup"):
  52. group = Group.objects.create(name="TestGroup")
  53. group.user_set.add(request.user)
  54. else:
  55. group = Group.objects.get(pk=1)
  56. TaskList.objects.create(name="Заявки клиентов", slug="customer-applications", group=group)
  57. def add_default_ticketstype_admin(modeladmin, request, queryset):
  58. add_default_ticketstype()
  59. def add_default_group_admin(modeladmin, request, queryset):
  60. add_default_group()
  61. def add_default_tickets_list_admin(modeladmin, request, queryset):
  62. add_default_tickets_list(request)
  63. add_default_tickets_list_admin.short_description = "Создать значения по умолчанию"
  64. add_default_ticketstype_admin.short_description = "Создать значения по умолчанию"
  65. add_default_group_admin.short_description = "Создать значения по умолчанию"
  66. export_to_csv.short_description = "Экспортировать в CSV"