Exemple #1
0
def blog_show(request, blog_id, entry_number):
    """
    Главная страница блога, со списком сообщений
    
    Параметры:
        blog_id - ключ
    """
    blog = get_object_or_404(Blog, pk=blog_id)

    # узнаем кол-во сообщений
    entries=blog.entries.all()
    number_of_entries = entries.count()

    # получаем номер соощения c конца
    entry_number_begin = int(entry_number)

    # узнаем номер сообщения 5 штук назад
    entry_number_end = entry_number_begin+5

    # получаем 5 сообщений до указханного
    entries = blog.entries.all().order_by('-pk')[entry_number_begin:entry_number_end]

    # еслть ли сообщения после
    top = False
    if (entry_number_begin > 0):
        top = True

    # есть ли сообщения до
    floor = False
    if (entry_number_end < number_of_entries):
        floor = True

    # расчет номера сообщения 5 штук вперед
    number = 0
    if entry_number_begin > 5:
        number = entry_number_begin-5

    # являемся ли мы хозяином блога
    viewing_self = request.user == blog.owner
    # являемся ли мы хозяином проекта, чей блог смотрим
    if isinstance(blog.owner, Project):
        viewing_self = request.user == blog.owner.customer
        

    if not viewing_self:
        return render_to_request(request, 'blogs/blog_show.html', {'blog': blog,
                'entries': entries, 'top': top, 'floor': floor,
                'number1': number, 'number2': entry_number_end})
                
    return render_to_request(request, 'blogs/blog_show.html', {'blog': blog,
                'entries': entries, 'top': top, 'floor': floor,
                'number1': number, 'number2': entry_number_end,
                'form': BlogEntryForm() })
Exemple #2
0
def tester_photo(request, tester_id):
    """Фотография тестировщика"""
    tester = get_object_or_404(Tester, pk=tester_id)
    user = request.user

    viewing_self = user == tester

    return render_to_request(request, 'accounts/tester_photo.html', {'tester': tester, 'viewing_self': viewing_self})
Exemple #3
0
def tester_registration(request):
    """Регистрация тестера"""
    if request.method == 'POST':
        form = TesterRegForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('post_registration')
    else:
        form = TesterRegForm()
    return render_to_request(request,'accounts/tester_form.html',{'form': form})
Exemple #4
0
def project_detail_testers(request, project_id):
    """
    Детали проекта, список тестеров
    """
    project = get_object_or_404(Project, pk=project_id)
    testers = project.testers.all()

    return render_to_request(request, 'bugtracker/project_detail_testers.html',
                             {'testers': testers,
                              'project': project})
Exemple #5
0
def tester_detail(request, tester_id):
    """Детали тестера
    
    Параметры:
        tester_id - ключ
    """
    tester = get_object_or_404(Tester, pk=tester_id)
    user = request.user

    viewing_self = user == tester

    return render_to_request(request, 'accounts/tester_detail.html', {'tester': tester, 'viewing_self': viewing_self})
Exemple #6
0
def tester_detail_projects(request, tester_id):
    """
    Детали тестера, вкладка со списком проектов тестера
    """

    tester = get_object_or_404(Tester, pk=tester_id)
    projects = tester.projects.all()
    user = request.user
    viewing_self = user == tester
    
    return render_to_request(request, 'accounts/tester_detail_projects.html',
                             {'tester': tester, 'projects': projects,
                             'viewing_self': viewing_self})
Exemple #7
0
def project_detail(request, project_id):
    """
    Детали проекта, вкладка с информацией
    """
    project = get_object_or_404(Project, pk=project_id)
    testers = project.testers.all()
    user = request.user
    
    user_can_enlist = user.is_authenticated() and user.is_tester() and \
            user not in testers

    return render_to_request(request, 'bugtracker/project_detail.html',
                             {'user_can_enlist': user_can_enlist,
                              'project': project
                             })
Exemple #8
0
def bug_detail(request, bug_id):
    """
    Детали бага
    """

    bug = get_object_or_404(Bug, pk=bug_id)
    project=bug.project
    user_is_owner = request.user == bug.project.customer

    if not user_is_owner:
        return render_to_request(request, 'bugtracker/bug_detail.html',
                                {'bug': bug, 'project':project})

    if request.method == 'POST':
        form = BugStatusUpdateForm(request.POST, instance=bug)
        if form.is_valid():
            form.save()
            return redirect(request.user)
    else:
        form = BugStatusUpdateForm(instance=bug)
    return render_to_request(request, 'bugtracker/bug_detail.html',
                             {'bug': bug,
                              'form':form, 'project':project
                             })
Exemple #9
0
def customer_detail_projects(request, customer_id):
    """
    Детали компании, вкладка со списком проектов компании
    """
    customer = get_object_or_404(Customer, pk=customer_id)

    # Просмотр деталей компании доступен только самой компании
    if request.user != customer:
        raise PermissionDenied

    viewing_self = request.user == customer
    projects=customer.projects.all()
    return render_to_request(request, 'accounts/customer_detail_projects.html',
                             {'customer': customer,
                              'viewing_self': viewing_self,
                              'projects':projects})
Exemple #10
0
def project_detail_bugs(request, project_id):
    """
    Детали проекта, вкладка со списком багов
    """
    user = request.user
    project = get_object_or_404(Project, pk=project_id)
    testers = project.testers.all()
    bugs = project.bugs.all()

    user_can_add_bug = user in testers

    return render_to_request(request, 'bugtracker/project_detail_bugs.html',
                             {'bugs': bugs,
                              'project': project,
                              'user_can_add_bug': user_can_add_bug,
                             })
Exemple #11
0
def project_add_bug(request, project_id):
    """
    Добавление бага в проект
    """
    project = get_object_or_404(Project, pk=project_id)
    user = request.user
    
    if request.method == 'POST':
        form = BugForm(request.POST, request.FILES)
        if form.is_valid():
            bug = form.save(tester=user, project=project, f=request.FILES['file'])
            str = "%s_%s" % (bug.project.pk, bug.pk)
            handle_uploaded_file(request.FILES['file'], str)
            return redirect(bug)
    else:
        form = BugForm()
    return render_to_request(request, 'bugtracker/project_add_bug.html',
            {'form': form, 'project': project})
Exemple #12
0
def project_add(request):
    """
    Добавление нового проекта
    """
    # Пользователь должен быть заказчиком
    user = request.user
    if not user.is_customer():
        raise PermissionDenied

    if request.method == 'POST':
        form = ProjectForm(request.POST, request.FILES)
        if form.is_valid():
            project = form.save(customer=user, f=request.FILES['file'])
            str = "%s" % (project.pk)
            handle_uploaded_file(request.FILES['file'], str)
            return redirect(project)
    else:
        form = ProjectForm()
    return render_to_request(request, 'bugtracker/project_add.html',
                             {'form': form})
Exemple #13
0
def customer_detail(request, customer_id):
    """Детали компании
    
    Параметры:
        customer_id - ключ
    """
    customer = get_object_or_404(Customer, pk=customer_id)

    # Просмотр деталей компании доступен только самой компании
    if request.user != customer:
        raise PermissionDenied
    
    viewing_self = request.user == customer
    # Выбор шаблона в зависимости от типа компании
    # TODO: вынести это в сам шаблон/include
    if customer.type == 'p':
        template = 'accounts/phys_customer_detail.html'
    else:
        template = 'accounts/jur_customer_detail.html'

    return render_to_request(request, template, {'customer': customer.detail,'viewing_self':viewing_self})