| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293 |
- from datetime import datetime
- from django.contrib.auth import logout, login, update_session_auth_hash
- from django.contrib.auth.decorators import login_required
- from django.contrib.auth.forms import PasswordChangeForm
- from django.contrib.auth.models import User
- from django.core.paginator import Paginator
- from django.shortcuts import render, get_object_or_404, redirect
- from main.forms import StoryForm, EpicForm, RegisterForm, ProfileForm, \
- CommentForm
- from main.models import Story, Epic, Sprint, Comment
- @login_required
- def index(request):
-
- epics = Epic.objects.filter(closed=False)
- return render(request, 'index.html', {'current_sprint': Sprint.current(), 'epics': epics})
- def register(request):
- if request.method == 'POST':
- form = RegisterForm(request.POST)
- if form.is_valid():
- user = form.save()
- login(request, user)
- return redirect("index")
- else:
- form = RegisterForm()
- return render(request, 'registration/register.html', {'form': form})
- @login_required
- def profile_update(request):
- if request.method == 'POST':
- user = get_object_or_404(User, username=request.user)
- form = ProfileForm(request.POST, instance=user)
- if form.is_valid():
- user = form.save()
- login(request, user)
- return redirect("index")
- else:
- user = get_object_or_404(User, username=request.user)
- form = ProfileForm(instance=user)
- return render(request, 'registration/register.html', {'form': form})
- @login_required
- def change_password(request):
- if request.method == 'POST':
- form = PasswordChangeForm(request.user, request.POST)
- if form.is_valid():
- user = form.save()
- update_session_auth_hash(request, user) # Important!
- return redirect('index')
- else:
- form = PasswordChangeForm(request.user)
- return render(request, 'registration/change_password.html', {'form': form})
- @login_required
- def logout(request):
- logout(request)
- return redirect("index")
- @login_required
- def backlog_editor(request):
-
- epics = Epic.objects.filter(closed=False)
- closed = Epic.objects.filter(closed=True)
-
- return render(request, 'backlog_editor.html', {'epics': epics, 'closed': closed})
- @login_required
- def story_index(request):
-
- sprints = Sprint.objects.all()
- users = User.objects.all()
-
- stories = Story.objects
- filters = request.GET
- if 'state' in filters and filters['state']:
- stories = stories.filter(closed=(filters['state'] == 'closed'))
- if 'sprint' in filters and filters['sprint']:
- if filters['sprint'] == "None":
- stories = stories.filter(sprints=None)
- else:
- stories = stories.filter(sprints__id=filters['sprint'])
- if 'author' in filters and filters['author']:
- stories = stories.filter(author_id=filters['author'])
- if 'assignee' in filters and filters['assignee']:
- stories = stories.filter(assignees__id=filters['assignee'])
-
- paginator = Paginator(stories.all(), 10)
- page = request.GET.get('page')
- stories = paginator.get_page(page)
-
- return render(request, 'story_index.html', {'stories': stories, 'sprints': sprints, 'users': users, 'pages': range(1, paginator.num_pages + 1)})
- @login_required
- def story_details(request, story_id):
- story = get_object_or_404(Story, id=story_id)
- comment_form = CommentForm()
- return render(request, 'story_details.html', {'story': story, 'comment_form': comment_form})
- @login_required
- def story_create(request, epic_id=None):
- if request.method == 'POST':
-
- form = StoryForm(request.POST)
- if form.is_valid():
- story = form.save()
- return redirect("story_details", story.id)
-
- else:
- story = Story()
- if epic_id is not None:
- story.epic = get_object_or_404(Epic, id=epic_id)
- story.author = User.objects.get(username=request.user)
- form = StoryForm(instance=story)
-
- return render(request, 'story_form.html', {'form': form, 'current_sprint_id': Sprint.current().id})
- @login_required
- def story_edit(request, story_id):
- if request.method == 'POST':
- story = get_object_or_404(Story, id=story_id)
- form = StoryForm(request.POST, instance=story)
- if form.is_valid():
- form.save()
- return redirect("story_details", story.id)
-
- else:
- story = get_object_or_404(Story, id=story_id)
- form = StoryForm(instance=story)
-
- return render(request, 'story_form.html', {'form': form, 'current_sprint_id': Sprint.current().id})
- @login_required
- def story_delete(request, story_id):
- if request.method == 'POST':
- story = get_object_or_404(Story, id=story_id)
- story.delete()
- return redirect("index")
- else:
- story = get_object_or_404(Story, id=story_id)
- return render(request, 'deletion.html', {'object': story})
- @login_required
- def story_close(request, story_id):
- story = get_object_or_404(Story, id=story_id)
- story.closed = True
- story.save()
- return render(request, 'epic_details.html', {'epic': story.epic})
- @login_required
- def story_reopen(request, story_id):
- story = get_object_or_404(Story, id=story_id)
- story.closed = False
- story.save()
- return render(request, 'story_details.html', {'story': story})
- @login_required
- def story_comment(request, story_id):
- story = get_object_or_404(Story, id=story_id)
- comment = Comment()
- comment.obj_uuid = story.uuid
- comment.author = get_object_or_404(User, username=request.user)
- comment.content = request.POST["content"]
- comment.save()
- return redirect('story_details', story_id)
- @login_required
- def epic_details(request, epic_id):
- epic = get_object_or_404(Epic, id=epic_id)
- comment_form = CommentForm()
- return render(request, 'epic_details.html', {'epic': epic, 'comment_form': comment_form})
- @login_required
- def epic_create(request):
- if request.method == 'POST':
-
- form = EpicForm(request.POST)
- if form.is_valid():
- epic = form.save(commit=False)
- epic.author = User.objects.get(username=request.user)
- epic.save()
- return redirect("backlog_editor")
-
- else:
- form = EpicForm()
-
- return render(request, 'epic_form.html', {'form': form})
- @login_required
- def epic_edit(request, epic_id, from_=""):
- if request.method == 'POST':
- epic = get_object_or_404(Epic, id=epic_id)
- form = EpicForm(request.POST, instance=epic)
- if form.is_valid():
- form.save()
- if from_:
- return redirect(from_)
- else:
- return redirect("epic_details", epic.id)
- else:
-
- epic = get_object_or_404(Epic, id=epic_id)
- form = EpicForm(instance=epic)
-
- return render(request, 'epic_form.html', {'form': form})
- @login_required
- def epic_delete(request, epic_id):
- if request.method == 'POST':
- epic = get_object_or_404(Epic, id=epic_id)
- epic.delete()
- return redirect("index")
- else:
- epic = get_object_or_404(Epic, id=epic_id)
- return render(request, 'deletion.html', {'object': epic})
- @login_required
- def epic_value_update(request, epic_id):
- if request.method == 'POST':
- epic = get_object_or_404(Epic, id=epic_id)
- epic.value = request.POST["value"]
- epic.save()
- return redirect("backlog_edition")
-
- @login_required
- def epic_close(_, epic_id):
- epic = get_object_or_404(Epic, id=epic_id)
- epic.closed = True
- epic.save()
- return redirect("backlog_edition")
- @login_required
- def epic_reopen(_, epic_id):
- epic = get_object_or_404(Epic, id=epic_id)
- epic.closed = False
- epic.save()
- return redirect("backlog_edition")
- @login_required
- def epic_comment(request, epic_id):
- epic = get_object_or_404(Epic, id=epic_id)
- comment = Comment()
- comment.obj_uuid = epic.uuid
- comment.author = get_object_or_404(User, username=request.user)
- comment.content = request.POST["content"]
- comment.save()
- return redirect('epic_details', epic_id)
- @login_required
- def reports(request):
- return render(request, 'reports/report_index.html')
-
- @login_required
- def report_sprints(request):
- sprints = Sprint.objects.all()
- return render(request, 'reports/report_sprints.html', {'sprints': sprints})
-
- @login_required
- def report_projects(request):
- epics = Epic.objects.all()
- return render(request, 'reports/report_projects.html', {'epics': epics})
- @login_required
- def search(request):
- qstr = request.GET["q"]
-
- results = []
- results += Epic.objects.filter(name__icontains=qstr)
- results += Story.objects.filter(name__icontains=qstr)
-
- results += Epic.objects.filter(description__icontains=qstr)
- results += Story.objects.filter(description__icontains=qstr)
-
- if len(results) == 1:
- r = results[0]
- if r is Epic:
- return redirect("epic_details", r.id)
- else:
- return redirect("story_details", r.id)
- else:
-
- paginator = Paginator(results, 10)
- page = request.GET.get('page')
- results = paginator.get_page(page)
-
- return render(request, 'search_results.html', {'results': results, 'pages': range(1, paginator.num_pages + 1)})
-
-
-
|