from tickets.models import * from django.contrib.contenttypes.models import ContentType from django.contrib.auth.models import Group, Permission from django.http import HttpResponse import csv def add_perm(group, permissions, contenttype): tct = ContentType.objects.get_for_model(contenttype) for i in permissions: group.permissions.add(Permission.objects.get(codename=i, content_type=tct)) def export_to_csv(modeladmin, request, queryset): meta = modeladmin.model._meta field_names = [field.name for field in meta.fields] #field_show_names = [field.verbose_name for field in meta.fields] response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename={}.csv'.format(meta) writer = csv.writer(response) writer.writerow(field_names) #writer.writerow(field_show_names) for obj in queryset: row = writer.writerow([getattr(obj, field) for field in field_names]) return response def add_default_ticketstype(): if not TicketType.objects.filter(name="SERVICE_REQUEST"): 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") 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") TicketType.objects.create(name="NEG_REQUEST", life_cycle="420-421-459,421,459") TicketType.objects.create(name="ACCESS_REQUEST", life_cycle="320-321-359,321,359") def add_default_group(): if not Group.objects.filter(name="meta-user"): #Meta user group = Group.objects.create(name="meta-user") add_perm(group, ['add_task', 'change_task', 'view_task'], Task) #Platform admin group = Group.objects.create(name="platform-admin") add_perm(group, ['add_attachment', 'view_attachment'], Attachment) add_perm(group, [ 'add_comment', 'view_comment'], Comment) add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task) group = Group.objects.create(name="platform-supervisor") add_perm(group, ['add_attachment', 'view_attachment'], Attachment) add_perm(group, [ 'add_comment', 'view_comment'], Comment) add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task) group = Group.objects.create(name="platform-support") add_perm(group, [ 'add_comment', 'view_comment'], Comment) add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task) group = Group.objects.create(name="platform-techsupport") add_perm(group, ['add_attachment', 'view_attachment'], Attachment) add_perm(group, [ 'add_comment', 'view_comment'], Comment) add_perm(group, [ 'add_task', 'change_task', 'view_task'], Task) def add_default_tickets_list(request): if not TaskList.objects.filter(name="Заявки клиентов"): if not Group.objects.filter(name="TestGroup"): group = Group.objects.create(name="TestGroup") group.user_set.add(request.user) else: group = Group.objects.get(pk=1) TaskList.objects.create(name="Заявки клиентов", slug="customer-applications", group=group) def add_default_ticketstype_admin(modeladmin, request, queryset): add_default_ticketstype() def add_default_group_admin(modeladmin, request, queryset): add_default_group() def add_default_tickets_list_admin(modeladmin, request, queryset): add_default_tickets_list(request) add_default_tickets_list_admin.short_description = "Создать значения по умолчанию" add_default_ticketstype_admin.short_description = "Создать значения по умолчанию" add_default_group_admin.short_description = "Создать значения по умолчанию" export_to_csv.short_description = "Экспортировать в CSV"