def edit_link(request, id): """edit a link""" # prepare messages mm = MessageManager(request) link = get_object_or_404(Link, pk=id) if request.user.is_authenticated() and request.user.username == link.user.username: if request.POST: form = CreateLinkForm(request.POST, request.FILES, user=request.user) if form.is_valid(): form.update(request, link) mm.set_success("Your link has been updated") return redirect(link.get_absolute_url()) else: # form had errors return render(request, 'main/link/edit.html', mm.messages(), {'form':form, 'link':link}) else: # prepare new form for user lpk = None if link.group(): lpk = link.group().pk term_str = delim_list(object_taxon(link), ',') form = CreateLinkForm(user=request.user, initial={'group': lpk, 'title':link.title, 'url':link.url, 'terms':term_str}) return render(request, 'main/link/edit.html', mm.messages(), {'form':form, 'link':link}) else: return redirect(request.META.get('HTTP_REFERER','/'))
def create_link(request, gid=None): """page to create a new link object""" # prepare messages mm = MessageManager(request) if request.user.is_authenticated(): # TODO: allow unauthorized users to create temporary content, but require them to # sign up for an account before it can be saved. (html5 local db) form = None if request.POST: form = CreateLinkForm(request.POST, request.FILES, user=request.user) if form.is_valid(): new = form.save(request, gid) mm.set_success("You successfully created a new link \"%s\"" % new.title) # TODO: take to new link page if new.group(): return redirect(new.group().get_absolute_url()) else: return redirect(request.user.get_absolute_url()) else: # form had errors data = request.POST.copy() formerr = form dgroup=None if gid: form.fields['group'].widget.attrs['disabled'] = True # radio / checkbox dgroup = get_object_or_404(cGroup, pk=gid) form.fields['group'].widget.choices = ((gid,dgroup.name),) return render(request, 'main/link/create.html', mm.messages(), {'form':form, 'group':dgroup}) else: # prepare new form for user form = CreateLinkForm(user=request.user, initial={'group': gid}) dgroup=None if gid: form.fields['group'].widget.attrs['disabled'] = True # radio / checkbox dgroup = get_object_or_404(cGroup, pk=gid) return render(request, 'main/link/create.html', mm.messages(), {'form':form, 'group':dgroup}) else: return redirect(request.META.get('HTTP_REFERER','/'))