Ei kuvausta

views.py 3.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. from django.shortcuts import render
  2. from django.http import HttpResponseRedirect, Http404
  3. from django.core.urlresolvers import reverse
  4. from django.contrib.auth.decorators import login_required
  5. from .models import Topic, Entry
  6. from .forms import TopicForm, EntryForm
  7. def index(request):
  8. """The home page for Learning Log."""
  9. return render(request, 'learning_logs/index.html')
  10. @login_required
  11. def topics(request):
  12. """Show all topics."""
  13. topics = Topic.objects.filter(owner=request.user).order_by('date_added')
  14. context = {'topics': topics}
  15. return render(request, 'learning_logs/topics.html', context)
  16. @login_required
  17. def topic(request, topic_id):
  18. """Show a single topic, and all its entries."""
  19. topic = Topic.objects.get(id=topic_id)
  20. # Make sure the topic belongs to the current user.
  21. if topic.owner != request.user:
  22. raise Http404
  23. entries = topic.entry_set.order_by('-date_added')
  24. context = {'topic': topic, 'entries': entries}
  25. return render(request, 'learning_logs/topic.html', context)
  26. @login_required
  27. def new_topic(request):
  28. """Add a new topic."""
  29. if request.method != 'POST':
  30. # No data submitted; create a blank form.
  31. form = TopicForm()
  32. else:
  33. # POST data submitted; process data.
  34. form = TopicForm(request.POST)
  35. if form.is_valid():
  36. new_topic = form.save(commit=False)
  37. new_topic.owner = request.user
  38. new_topic.save()
  39. return HttpResponseRedirect(reverse('learning_logs:topics'))
  40. context = {'form': form}
  41. return render(request, 'learning_logs/new_topic.html', context)
  42. @login_required
  43. def new_entry(request, topic_id):
  44. """Add a new entry for a particular topic."""
  45. topic = Topic.objects.get(id=topic_id)
  46. if topic.owner != request.user:
  47. raise Http404
  48. if request.method != 'POST':
  49. # No data submitted; create a blank form.
  50. form = EntryForm()
  51. else:
  52. # POST data submitted; process data.
  53. form = EntryForm(data=request.POST)
  54. if form.is_valid():
  55. new_entry = form.save(commit=False)
  56. new_entry.topic = topic
  57. new_entry.save()
  58. return HttpResponseRedirect(reverse('learning_logs:topic',
  59. args=[topic_id]))
  60. context = {'topic': topic, 'form': form}
  61. return render(request, 'learning_logs/new_entry.html', context)
  62. @login_required
  63. def edit_entry(request, entry_id):
  64. """Edit an existing entry."""
  65. entry = Entry.objects.get(id=entry_id)
  66. topic = entry.topic
  67. if topic.owner != request.user:
  68. raise Http404
  69. if request.method != 'POST':
  70. # Initial request; pre-fill form with the current entry.
  71. form = EntryForm(instance=entry)
  72. else:
  73. # POST data submitted; process data.
  74. form = EntryForm(instance=entry, data=request.POST)
  75. if form.is_valid():
  76. form.save()
  77. return HttpResponseRedirect(reverse('learning_logs:topic',
  78. args=[topic.id]))
  79. context = {'entry': entry, 'topic': topic, 'form': form}
  80. return render(request, 'learning_logs/edit_entry.html', context)