Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)