def send_idle_ticket_reminder_user(ticket, notify_email=False): context = { 'ticket': ticket, 'ticket_link': generate_ticket_url(ticket), 'time_passed': format_timedelta(timezone.now() - ticket.date_modified), 'unsubscribe_link': generate_unubscribe_link(ticket), 'close_ticket_link': '{}{}'.format(get_base_url(), reverse('close_ticket', kwargs={'id': ticket.id})) } log_message = u'Idle Ticket Reminder to User Sent, Ticket: {}, Recipient: {}, Time passed: {}' log_emails(log_message.format(ticket.id, ticket.owned_by, timezone.now() - ticket.last_updated_at)) if notify_email: send_email( subject_template_name='emails/reminders/idle_ticket_reminder_user_subject.txt', email_template_name='emails/reminders/idle_ticket_reminder_user.txt', to_email=ticket.owned_by.email, context=context, html_email_template_name='emails/reminders/idle_ticket_reminder_user.html', bcc=settings.DEFAULT_RECIPIENT_IDLE_TICKET_REMINDERS ) ticket.last_notification_sent = timezone.now() ticket.save()
def handle(self, *args, **options): named_users = UserProfile.objects.filter(crm_type='named') open_tickets = [] for user in named_users: tickets = Ticket.objects.filter(created_by=user, date_added__gte=datetime.datetime.now().replace(hour=0, minute=0, second=0)).exclude(assigned_to__isnull=True,status="closed",answers_no=0) for ticket in tickets: open_tickets.append(ticket) user = UserProfile.objects.get(email=settings.EMAIL_OF_REPORTING_PERSON) context = { 'base_url': get_base_url(), 'user': user, 'open_tickets': open_tickets, } logger.info(u'Daily notification sent to staff {}'.format(user.email)) send_mail( subject_template_name='emails/reminders/open_tickets_status_subject.txt', email_template_name='emails/reminders/open_tickets_status.txt', to_email=user.email, context=context, html_email_template_name='emails/reminders/open_tickets_status.html' )
def handle(self, *args, **options): staff_users = UserProfile.objects.filter( is_active=True, crm_type__in=[constants.STAFF, constants.ADMIN, constants.MANAGER] ) for user in staff_users: tickets = Ticket.objects.filter( assigned_to=user, is_deleted=False, status__in=['pending', 'inprogress', 'assigned']).order_by('date_modified') named_tickets = [] community_tickets = [] if not tickets: continue for ticket in tickets: if ticket.owned_by.is_named: if not ticket.issue_type: logger.error('Named ticket without issue type: {}'.format(ticket.id)) ticket.support_plan = crm_interface.get_support_plan(ticket.owned_by) if not ticket.support_plan or not ticket.support_plan['support_plan']: logger.error('Named ticket without support plan: {}'.format(ticket.id)) ticket.is_overdue = ticket.date_modified < timezone.now() - timedelta(days=10) named_tickets.append(ticket) else: community_tickets.append(ticket) context = { 'base_url': get_base_url(), 'user': user, 'community_tickets': community_tickets, 'named_tickets': named_tickets, 'tickets_count': tickets.count() } logger.info(u'Daily digest sent to staff {}'.format(user.email)) send_mail( subject_template_name='emails/reminders/staff_digest_subject.txt', email_template_name='emails/reminders/staff_digest.txt', to_email=user.email, context=context, html_email_template_name='emails/reminders/staff_digest.html', bcc=settings.DEFAULT_RECIPIENT_IDLE_TICKET_REMINDERS )
def generate_subscribe_link(ticket): url = reverse('ticket_add_alert', kwargs={'id': ticket.id}) return '{}{}'.format(get_base_url(), url)
def generate_ticket_url(ticket): url = generate_ticket_link(ticket) return '{}{}'.format(get_base_url(), url)