def setUp(self): "Initial Setup" if not self.prepared: # Clean up first Object.objects.all().delete() User.objects.all().delete() # Create objects self.group, created = Group.objects.get_or_create(name='test') duser, created = DjangoUser.objects.get_or_create(username=self.username) duser.set_password(self.password) duser.save() self.user, created = User.objects.get_or_create(user=duser) self.user.save() perspective, created = Perspective.objects.get_or_create(name='default') perspective.set_default_user() perspective.save() ModuleSetting.set('default_perspective', perspective.id) self.contact_type = ContactType(name='test') self.contact_type.set_default_user() self.contact_type.save() self.contact = Contact(name='test', contact_type=self.contact_type) self.contact.set_default_user() self.contact.save() self.status = TicketStatus(name='TestStatus') self.status.set_default_user() self.status.save() self.queue = TicketQueue(name='TestQueue', default_ticket_status=self.status) self.queue.set_default_user() self.queue.save() self.ticket = Ticket(name='TestTicket', status=self.status, queue=self.queue) self.ticket.set_default_user() self.ticket.save() self.agent = ServiceAgent(related_user=self.user, available_from=datetime.time(9), available_to=datetime.time(17)) self.agent.set_default_user() self.agent.save() self.service = Service(name='test') self.service.set_default_user() self.service.save() self.sla = ServiceLevelAgreement(name='test', service=self.service, client=self.contact, provider=self.contact) self.sla.set_default_user() self.sla.save() self.client = Client() self.prepared = True
def create_instance(self, request, *args, **kwargs): ticket = Ticket(creator=request.user.get_profile()) if not request.agent: if request.queue: ticket.queue = request.queue if request.queue.default_ticket_status: ticket.status = request.queue.default_ticket_status else: try: conf = ModuleSetting.get_for_module( 'treeio.services', 'default_ticket_status')[0] ticket.status = TicketStatus.objects.get( pk=long(conf.value)) except: if 'statuses' in request.context: try: ticket.status = request.context['statuses'][0] except: pass ticket.priority = request.queue.default_ticket_priority ticket.service = request.queue.default_service else: try: conf = ModuleSetting.get_for_module( 'treeio.services', 'default_ticket_status')[0] ticket.status = TicketStatus.objects.get( pk=long(conf.value)) except: if 'statuses' in request.context: try: ticket.status = request.context['statuses'][0] except: pass try: conf = ModuleSetting.get_for_module( 'treeio.services', 'default_ticket_queue')[0] ticket.queue = TicketQueue.objects.get(pk=long(conf.value)) except: if 'queues' in request.context: try: ticket.queue = request.context['queues'][0] except: pass try: ticket.caller = request.user.get_profile().get_contact() except: pass return ticket
def test_model(self): "Test Services models" status = TicketStatus(name='TestStatus') status.save() self.assertNotEquals(status.id, None) queue = TicketQueue(name='TestQueue', default_ticket_status=status) queue.save() self.assertNotEquals(status.id, None) ticket = Ticket(name='TestTicket', status=status, queue=queue) ticket.save() self.assertNotEquals(ticket.id, None) ticket.delete() queue.delete() status.delete()
def setUp(self): "Initial Setup" if not self.prepared: # Clean up first Object.objects.all().delete() User.objects.all().delete() # Create objects try: self.group = Group.objects.get(name='test') except Group.DoesNotExist: Group.objects.all().delete() self.group = Group(name='test') self.group.save() try: self.user = DjangoUser.objects.get(username=self.username) self.user.set_password(self.password) try: self.profile = self.user.get_profile() except Exception: User.objects.all().delete() self.user = DjangoUser(username=self.username, password='') self.user.set_password(self.password) self.user.save() except DjangoUser.DoesNotExist: User.objects.all().delete() self.user = DjangoUser(username=self.username, password='') self.user.set_password(self.password) self.user.save() try: perspective = Perspective.objects.get(name='default') except Perspective.DoesNotExist: Perspective.objects.all().delete() perspective = Perspective(name='default') perspective.set_user(self.user.get_profile()) perspective.save() ModuleSetting.set('default_perspective', perspective.id) self.contact_type = ContactType(name='test') self.contact_type.set_default_user() self.contact_type.save() self.contact = Contact(name='test', contact_type=self.contact_type) self.contact.set_default_user() self.contact.save() self.status = TicketStatus(name='TestStatus') self.status.set_default_user() self.status.save() self.queue = TicketQueue(name='TestQueue', default_ticket_status=self.status) self.queue.set_default_user() self.queue.save() self.ticket = Ticket(name='TestTicket', status=self.status, queue=self.queue) self.ticket.set_default_user() self.ticket.save() self.agent = ServiceAgent(related_user=self.user.get_profile(), available_from=datetime.time(9), available_to=datetime.time(17)) self.agent.set_default_user() self.agent.save() self.service = Service(name='test') self.service.set_default_user() self.service.save() self.sla = ServiceLevelAgreement(name='test', service=self.service, client=self.contact, provider=self.contact) self.sla.set_default_user() self.sla.save() self.client = Client() self.prepared = True
def ticket_add(request, queue_id=None, response_format='html'): "Ticket add" context = _get_default_context(request) agent = context['agent'] profile = request.user.get_profile() queue = None if queue_id: queue = get_object_or_404(TicketQueue, pk=queue_id) if not profile.has_permission(queue, mode='x'): queue = None if request.POST: if not 'cancel' in request.POST: ticket = Ticket(creator=profile) if not agent: if queue: ticket.queue = queue if queue.default_ticket_status: ticket.status = queue.default_ticket_status else: try: conf = ModuleSetting.get_for_module( 'treeio.services', 'default_ticket_status')[0] ticket.status = TicketStatus.objects.get( pk=long(conf.value)) except: if 'statuses' in context: try: ticket.status = context['statuses'][0] except: pass ticket.priority = queue.default_ticket_priority ticket.service = queue.default_service else: try: conf = ModuleSetting.get_for_module( 'treeio.services', 'default_ticket_status')[0] ticket.status = TicketStatus.objects.get( pk=long(conf.value)) except: if 'statuses' in context: try: ticket.status = context['statuses'][0] except: pass try: conf = ModuleSetting.get_for_module( 'treeio.services', 'default_ticket_queue')[0] ticket.queue = TicketQueue.objects.get( pk=long(conf.value)) except: if 'queues' in context: try: ticket.queue = context['queues'][0] except: pass try: ticket.caller = profile.get_contact() except: pass form = TicketForm(profile, queue, agent, request.POST, instance=ticket) if form.is_valid(): ticket = form.save() ticket.set_user_from_request(request) return HttpResponseRedirect( reverse('services_ticket_view', args=[ticket.id])) else: return HttpResponseRedirect(reverse('services')) else: form = TicketForm(request.user.get_profile(), queue, agent) context.update({'form': form, 'queue': queue}) return render_to_response('services/ticket_add', context, context_instance=RequestContext(request), response_format=response_format)
def settings_view(request, response_format='html'): "Settings" if not request.user.get_profile().is_admin('treeio.services'): return user_denied( request, message= "You don't have administrator access to the Service Support module" ) # default ticket status try: conf = ModuleSetting.get_for_module('treeio.services', 'default_ticket_status')[0] default_ticket_status = TicketStatus.objects.get(pk=long(conf.value)) except Exception: default_ticket_status = None # default queue try: conf = ModuleSetting.get_for_module('treeio.services', 'default_ticket_queue')[0] default_ticket_queue = TicketQueue.objects.get(pk=long(conf.value)) except Exception: default_ticket_queue = None # notify ticket caller by email try: conf = ModuleSetting.get_for_module('treeio.services', 'send_email_to_caller')[0] send_email_to_caller = conf.value except Exception: send_email_to_caller = settings.HARDTREE_SEND_EMAIL_TO_CALLER # notification template send_email_example = '' try: conf = ModuleSetting.get_for_module('treeio.services', 'send_email_template')[0] send_email_template = conf.value except Exception: send_email_template = None queues = TicketQueue.objects.filter(trash=False, parent__isnull=True) statuses = TicketStatus.objects.filter(trash=False) if send_email_to_caller: # Render example e-mail try: ticket = Object.filter_by_request( request, Ticket.objects.filter(status__hidden=False, caller__isnull=False))[0] except IndexError: ticket = Ticket(reference='REF123', name='New request') if not ticket.caller: try: caller = Object.filter_by_request(request, Contact.objects)[0] except IndexError: caller = Contact(name='John Smith') ticket.caller = caller try: ticket.status except: ticket.status = None if not ticket.status: try: ticket.status = statuses[0] except IndexError: ticket.status = TicketStatus(name='Open') if send_email_template: try: send_email_example = render_string_template( send_email_template, {'ticket': ticket}) except: send_email_example = render_to_string( 'services/emails/notify_caller', {'ticket': ticket}, response_format='html') else: send_email_example = render_to_string( 'services/emails/notify_caller', {'ticket': ticket}, response_format='html') context = _get_default_context(request) context.update({ 'settings_queues': queues, 'settings_statuses': statuses, 'default_ticket_status': default_ticket_status, 'default_ticket_queue': default_ticket_queue, 'send_email_to_caller': send_email_to_caller, 'send_email_example': send_email_example }) return render_to_response('services/settings_view', context, context_instance=RequestContext(request), response_format=response_format)