Source code for rt.views

from django.shortcuts import render, reverse
from django.http import HttpResponseRedirect
from django.conf import settings
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from cryptography.fernet import Fernet

from accounts.models import UserPreferences
from slack.api import lookup_user, slack_post
from slack.views import tfed_ticket
from . import forms, api


[docs]@login_required def new_ticket(request): """ Form for submitting an RT ticket to the Database queue """ context = {} if request.method == "POST": form = forms.TicketSubmissionForm(request.POST) if form.is_valid(): subject = request.POST['subject'] description = request.POST['description'] + "\n\n-----" description += "\nVersion: %s" % settings.GIT_RELEASE[:7] description += "\nSubmitted from: %s" % request.META.get('REMOTE_ADDR') description += "\nDevice Info: %s" % request.META.get('HTTP_USER_AGENT') attachments = request.FILES.getlist('attachments') requestor = request.user.email if request.user.first_name and request.user.last_name: requestor = request.user.name + " <" + request.user.email + ">" resp = api.create_ticket("Database", requestor, subject, description, attachments=attachments) if resp.get('id', None): ticket_id = resp['id'] messages.success(request, "Your ticket has been submitted. Thank you!") # Send Slack notification slack_user = lookup_user(request.user.email) if not slack_user: slack_user = request.user.username ticket_info = { "url": 'https://lnl-rt.wpi.edu/rt/Ticket/Display.html?id=' + ticket_id, "id": ticket_id, "subject": subject, "description": request.POST['description'], "status": "New", "assignee": None, "reporter": slack_user } ticket = tfed_ticket(ticket_info) slack_post(settings.SLACK_TARGET_TFED_DB, text=request.POST['description'], content=ticket, username='Request Tracker') else: messages.add_message( request, messages.WARNING, 'Failed to open ticket: %s. Please contact the Webmaster.' % resp.get('message') ) return HttpResponseRedirect(reverse("home")) else: form = forms.TicketSubmissionForm() context['form'] = form context['title'] = 'Submit a Ticket' return render(request, 'form_semanticui.html', context)