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() })
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})
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})
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})
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})
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})
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 })
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 })
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})
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, })
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})
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})
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})