class UserProfileView(TemplateView): template_name = 'users/profile.html' def dispatch(self, request, *args, **kwargs): if request.user.is_authenticated() and request.user.pk == int(kwargs['user_id']): self.user = request.user else: self.user = get_object_or_404(User, pk=kwargs['user_id']) self.wall_post_form = WallPostForm(request.POST or None) return super(UserProfileView, self).dispatch(request, *args, **kwargs) def get_wall_posts(self): paginator = Paginator(self.user.wall_posts.select_related('author'), 10) page = self.request.GET.get('page') try: posts_on_wall = paginator.page(page) except PageNotAnInteger: posts_on_wall = paginator.page(1) except EmptyPage: posts_on_wall = paginator.page(paginator.num_pages) return posts_on_wall def get_context_data(self, **kwargs): context = super(UserProfileView, self).get_context_data(**kwargs) context['profile_user'] = self.user context['posts_on_wall'] = self.get_wall_posts() context['wall_post_form'] = self.wall_post_form if self.request.user != self.user: context['is_my_friend'] = User.friendship.are_friends(self.request.user, self.user) return context def post(self, request, *args, **kwargs): if self.wall_post_form.is_valid(): post = self.wall_post_form.save(commit=False) post.user = self.user post.author = request.user post.save() messages.success(request, _(u'Повідомлення успішно опубліковано')) return redirect(request.path) return self.get(request, *args, **kwargs)