Exemple #1
0
def tag(request, tag_name):
  """ Show all references for single tag and related tags.
  """
  if request.method == 'DELETE':
    return tag_delete(request, tag_name)
  elif request.method == 'PUT':
    return tag_update(request, tag_name)
  t = get_object_or_404(Tag, tag=tag_name, user=request.user)
  related_refs = get_refs_with_tag(request.user, t)
  clean_refs = []
  related_tags = []
  texts = []
  ref_paths = []
  ids = []
  for ref in related_refs: 
    related_tags.append(get_tags_for_ref(request.user, ref))
    ids.append(ref.id)
    resource = ref.resource
    try:
      pybook_ref = library.get(resource).reference(ref.pretty_ref())
      text = pybook_ref.text()
      clean_ref = pybook_ref.pretty()
    except Exception:
      log.warning("Exception for " + ref.pretty_ref() + " = " + traceback.format_exc())
      text, clean_ref = ('unknown', ref.pretty_ref())
    clean_refs.append(clean_ref)
    texts.append(text)
    ref_paths.append(reverse('resource', args=(resource, ref.pretty_ref())))
  related_refs_n_tags = zip(ids, clean_refs, ref_paths, related_tags, texts)
  return render_to_response('tags/tag_detail.html',
      {'tag': t, 'related_refs_n_tags': related_refs_n_tags},
      context_instance=RequestContext(request))
Exemple #2
0
def render_tags(request, tags):
  """ Render the given tags. 
  """
  counts = []
  for t in tags:
    refs = get_refs_with_tag(request.user, t)
    counts.append(refs.count())
  counted_tags = zip(tags, counts)
  return render_to_response('tags/tag_index.html',
      {'counted_tags': counted_tags},
      context_instance=RequestContext(request))
Exemple #3
0
def tag_update(request, tag_name):
  """ Rename a tag; if the tag name exists already, merge them.
  """
  t_old = get_object_or_404(Tag, tag=tag_name, user=request.user)
  try:
    new_name = request.GET.get('name', None)
  except:
    log.debug("Problem renaming tag\n%s", traceback.format_exc())
  log.debug("renamed tag: old name, new: %s, %s", tag_name, new_name)
  try:
    t_new = get_exact_tag(request.user, new_name)
    for r in get_refs_with_tag(request.user, t_old):
      r.tag = t_new
      log.debug("updating ref: " + str(r))
      r.save()
    t_old.delete()
  except:
    log.error("Error renaming tag: %s", traceback.format_exc())
    t_old.tag = new_name
    t_old.save()
  return HttpResponseRedirect(reverse('tag', args=new_name));