def tickets_view(request): context = {} user = request.user user_profile = get_object_or_404(Profile, user=user) tickets = get_user_tickets(user_profile) if request.GET: query = request.GET.get('qs', '') context['search'] = query if user.is_admin: results = tickets.filter( Q(title__icontains=query) | Q(status__icontains=query) | Q(priority__icontains=query) | Q(class_type__icontains=query)).distinct() else: query = query.lower() results = [] for ticket in tickets: if query in { ticket.title.lower(), ticket.status.lower(), ticket.class_type.lower(), ticket.priority.lower() }: results.append(ticket) tickets = results context['user_tickets'] = paginate_list(tickets, TICKETS_PER_PAGE, request) return render(request, "tickets/tickets.html", context)
def projects_view(request): context = {} user = request.user profile = get_object_or_404(Profile, user=user) if user.is_admin: projects = Project.objects.all().order_by('-created_on') else: project_roles = ProjectRole.objects.filter( user=profile).order_by('-created_on') projects = [role.project for role in project_roles] if request.GET: query = request.GET.get('qs', '') context['search'] = query if user.is_admin: results = projects.filter(Q(name__icontains=query)).distinct() else: results = [] query = query.lower() for project in projects: if query in project.name.lower(): results.append(project) projects = results context['user_projects'] = paginate_list(projects, PROJECTS_PER_PAGE, request) return render(request, "projects/projects.html", context)
def team_view(request): users = Profile.objects.all().order_by('first_name') context = {} if request.GET: query = request.GET.get('qs', '') context['search'] = query results = users.filter(Q(first_name__icontains=query) | Q(last_name__icontains=query)).distinct() users = results context['users'] = paginate_list(users, USERS_PER_PAGE, request) context['form'] = MessageForm() return render(request, "teams/team.html", context)
def project_roles_view(request, slug): user = request.user project = get_object_or_404(Project, slug=slug) if not (is_admin(user) or is_project_manager(user, project)): raise PermissionDenied context = {} context['project'] = project if request.method == "POST": form = ProjectRolesForm(request.POST or None) context['form'] = form if form.is_valid(): role = form.cleaned_data['role'] members = form.cleaned_data.get("members") for member_id in members: user = get_object_or_404(Profile, id=member_id) member_role = ProjectRole.objects.filter(user=user).filter( project=project).first() member_role.user_role = role member_role.save() return redirect('manage_roles', slug=project.slug) else: project_roles = ProjectRole.objects.filter(project=project).exclude( user_role="Project Manager").order_by('user__first_name') form_member_choices = ((role.user.id, role.user.first_name + " " + role.user.last_name) for role in project_roles) form = ProjectRolesForm() form.fields['members'].choices = form_member_choices context['user_roles'] = paginate_list(project_roles, 6, request) context['form'] = form return render(request, "projects/assign_roles.html", context)
def project_detail_view(request, slug): context = {} project = get_object_or_404(Project, slug=slug) context['project'] = project user = request.user user_profile = get_object_or_404(Profile, user=user) user_project_role = ProjectRole.objects.filter(project=project).filter( user=user_profile).first() context['user_project_role'] = user_project_role users = ProjectRole.objects.filter(project=project).exclude( user_role="Project Manager").order_by('user__first_name') context['user_roles'] = paginate_list(users, USERS_PER_PAGE, request) tickets = project.tickets.all().order_by('-created_on') context['tickets'] = tickets context['manager_role'] = ProjectRole.objects.filter( project=project).filter(user_role="Project Manager").first() return render(request, "projects/project_detail.html", context)
def ticket_detail_view(request, slug): context = {} ticket = get_object_or_404(Ticket, slug=slug) user = request.user user_profile = get_object_or_404(Profile, user=user) if request.method == "POST": form = TicketCommentForm(request.POST) if form.is_valid(): comment_body = form.cleaned_data['comment'] ticket_comment = TicketComment.objects.create( user=user_profile, body_message=comment_body, ticket=ticket) return redirect('view_ticket', slug=slug) else: context['ticket'] = ticket context['ticket_attachments'] = TicketAttachment.objects.filter( ticket=ticket).order_by('-created_on') comments = TicketComment.objects.filter( ticket=ticket).order_by('-created_on') context['ticket_comments'] = paginate_list(comments, COMMENTS_PER_PAGE, request) context['ticket_developer'] = get_object_or_404(TicketAssignee, ticket=ticket).user context['submitter'] = ticket.created_by context['manager'] = ProjectRole.objects.filter( project=ticket.project).filter( user_role="Project Manager").first().user context['form'] = TicketCommentForm() context['attachment_form'] = TicketAttachmentForm() return render(request, "tickets/ticket_detail.html", context)