Guest User

Untitled

a guest
Aug 6th, 2017
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.98 KB | None | 0 0
  1. #MODELS
  2.  
  3. from django.db import models
  4.  
  5. class Topic(models.Model):
  6.     name = models.CharField(max_length=200, unique=True)
  7.  
  8.     def __str__(self):
  9.         return self.name
  10.  
  11.     class Meta:
  12.         verbose_name_plural ='Topics'
  13.  
  14.  
  15. class Post(models.Model):
  16.     topic = models.ForeignKey(Topic)
  17.     author = models.ForeignKey('auth.user')
  18.     title = models.CharField(max_length=200)
  19.     text = models.TextField()
  20.     created_date = models.DateTimeField(auto_now_add=True)
  21.  
  22.     def __str__(self):
  23.         return self.title
  24.  
  25. #VIEWS
  26.  
  27. from django.shortcuts import render, get_object_or_404
  28. from .models import Post, Topic
  29. from .forms import PostForm
  30. from django.shortcuts import redirect
  31. from django.contrib.auth.decorators import login_required
  32. from django.contrib.auth import authenticate, login, logout
  33. from django.http import HttpResponseRedirect
  34.  
  35. @login_required
  36. def topic_list(request):
  37.     topics = Topic.objects.all()
  38.     return render(request, 'blog/topic_list.html', {'topics': topics})
  39.  
  40. @login_required
  41. def post_list(request, pk):
  42.     topic = get_object_or_404(Topic, pk=pk)
  43.     posts = Post.objects.filter(topic_id=pk).order_by('-created_date')
  44.     return render(request, 'blog/post_list.html', {'posts': posts, 'topic': topic})
  45.  
  46. @login_required
  47. def post_detail(request, pk):    
  48.     post = get_object_or_404(Post,pk=pk)
  49.     return render(request, 'blog/post_detail.html', {'post': post})
  50.  
  51. @login_required
  52. def post_new(request):
  53.     if request.method == "POST":
  54.         form = PostForm(request.POST)
  55.         #topic_form = TopicForm(request.POST)
  56.         if form.is_valid():
  57.             post = form.save(commit=False)
  58.             post.author = request.user
  59.             topic = form.cleaned_data.get('topic')
  60.             post.topic_id = topic.id
  61.             post.save()
  62.             return redirect('post_detail', pk=post.pk)
  63.     else:        
  64.         form = PostForm()
  65.         #topic_form = TopicForm()
  66.     return render(request, 'blog/post_edit.html', {'form': form})
  67.  
  68. @login_required
  69. def post_edit(request, pk):
  70.     post = get_object_or_404(Post, pk=pk)
  71.     #topic = get_object_or_404(Topic, pk=post.topic_id)
  72.     if request.method == "POST":
  73.         form = PostForm(request.POST, instance=post)        
  74.         #topic_form = TopicForm(request.POST, instance=topic)
  75.         if form.is_valid():
  76.             post = form.save(commit=False)
  77.             post.author = request.user
  78.             topic = form.cleaned_data.get('topic')
  79.             post.topic_id = topic.id            
  80.             post.save()
  81.             return redirect('post_detail', pk=post.pk)
  82.     else:
  83.         form = PostForm(instance=post)        
  84.     return render(request, 'blog/post_edit.html', {'form': form})
  85.  
  86. @login_required
  87. def post_remove(request, pk):    
  88.     post = get_object_or_404(Post, pk=pk)
  89.     topic = get_object_or_404(Topic, pk=post.topic_id)
  90.     post.delete()
  91.     print(topic.id)
  92.     return redirect('post_list', pk=topic.id)
  93.  
  94. def user_login(request):
  95.  
  96.     if request.method == 'POST':
  97.         username = request.POST.get('username')
  98.         password = request.POST.get('password')
  99.  
  100.         user = authenticate(username=username, password=password)
  101.  
  102.         if user:
  103.             if user.is_active:
  104.                 login(request, user)
  105.                 return HttpResponseRedirect('/')
  106.             else:
  107.                 print("Your Rango account is disabled.")
  108.         else:
  109.             print("Invalid login details:", username, password)
  110.             return HttpResponse("Invalid login details supplied.")
  111.  
  112.     else:
  113.         return render(request, 'blog/login.html', {})
  114.  
  115. def user_logout(request):
  116.     logout(request)
  117.  
  118.     return HttpResponseRedirect('')
  119.  
  120.  
  121. #FORMS
  122.  
  123. from django import forms
  124. from .models import Post, Topic
  125.  
  126. class PostForm(forms.ModelForm):   
  127.  
  128.     class Meta:
  129.         model = Post
  130.         fields = ['topic', 'title', 'text',]
  131.  
  132.  
  133.     def __init__(self, *args, **kwargs):
  134.          super(PostForm, self).__init__(*args, **kwargs)
  135.          self.fields['topic'] = forms.ModelChoiceField(queryset=Topic.objects.all())
Add Comment
Please, Sign In to add comment