def detail(request, idea_id): """ Detail view; idea_id must be a string containing an int. """ idea = get_object_or_404(Idea, pk=int(idea_id)) if request.method == 'POST': tag_form = IdeaTagForm(request.POST) if tag_form.is_valid(): data = tag_form.clean()['tags'] tags = [tag.strip() for tag in data.split(',') if tag.strip() != ''] try: for t in tags: add_tags(idea, t, None, request.user, 'idea') except NameError: # catch if add_tags doesn't exist idea.tags.add(*tags) return HttpResponseRedirect( reverse('idea:idea_detail', args=(idea.id,))) else: tag_form = IdeaTagForm() voters = idea.voters.all() for v in voters: try: v.profile = v.get_profile() except (ObjectDoesNotExist, SiteProfileNotAvailable): v.profile = None idea_type = ContentType.objects.get(app_label="idea", model="idea") tags = idea.tags.extra(select={ 'tag_count': """ SELECT COUNT(*) from taggit_taggeditem tt WHERE tt.tag_id = taggit_tag.id AND content_type_id = %s """ }, select_params=[idea_type.id]).order_by('name') tags_created_by_user = [] if COLLAB_TAGS: for tag in tags: tag.tag_url = "%s?tags=%s" % (reverse('idea:idea_list'), tag.slug) for ti in tag.taggit_taggeditem_items.filter(tag_creator=request.user, content_type__name="idea", object_id=idea_id): tags_created_by_user.append(tag.name) return _render(request, 'idea/detail.html', { 'idea': idea, # title, body, user name, user photo, time 'support': request.user in voters, 'tags': tags, 'tags_created_by_user': tags_created_by_user, 'voters': voters, 'tag_form': tag_form })
def detail(request, idea_id): """ Detail view; idea_id must be a string containing an int. """ idea = get_object_or_404(Idea, pk=int(idea_id)) if request.method == 'POST': tag_form = IdeaTagForm(request.POST) if tag_form.is_valid(): data = tag_form.clean()['tags'] tags = [tag.strip() for tag in data.split(',') if tag.strip() != ''] idea.tags.add(*tags) # Make sure the search index included the tags site.get_index(Idea).update_object(idea) return HttpResponseRedirect( reverse('idea_detail', args=(idea.id,))) else: tag_form = IdeaTagForm() voters = User.objects.filter(vote__idea=idea, vote__vote=UP_VOTE) for v in voters: try: v.profile = v.get_profile() except (ObjectDoesNotExist, SiteProfileNotAvailable): v.profile = None idea_type = ContentType.objects.get(app_label="idea", model="idea") tags = idea.tags.extra(select={ 'tag_count': """ SELECT COUNT(*) from taggit_taggeditem tt WHERE tt.tag_id = taggit_tag.id AND content_type_id = %s """ }, select_params=[idea_type.id]).order_by('name') for tag in tags: tag.tag_url = "%s?tags=%s" % (reverse('idea_list'), tag.slug) return _render(request, 'idea/detail.html', { 'idea': idea, # title, body, user name, user photo, time 'support': request.user in voters, 'tags': tags, 'voters': voters, 'tag_form': tag_form })