def json(request, username, friends): entries = Entry.objects.latest(username, friends)[:MAX_JSON_ENTRIES] json_entries = [{ "key": str(entry.key()), "body": entry.body, "author": entry.author, "author_url": entry.author_url, "published": entry.published.isoformat(), "updated": entry.updated.isoformat(), "link": entry.link, "linktext": entry.link, "permalink": '/show/'+str(entry.key()), "editlink": '/edit/'+str(entry.key()), "deletelink": '/delete/'+str(entry.key()) } for entry in entries] json_entries.reverse() json = {"entries": json_entries} return json_response(json)
def delete_entry(request, key): entry = db.get(key) if entry.author != request.user.username and not request.user.is_superuser: response = HttpResponse('unauthorized') response.status_code = 401 return response # invalidate cache clear_entries_cache(request.user.username) if request.is_ajax(): entry.delete() r = { 'key': key, 'success':True } return json_response(r) else: return delete_object(request, Entry, object_id=key, post_delete_redirect=reverse('user-entries', kwargs={'username':request.user.username}))
def add_entry(request): host = 'http://%s' % request.get_host() if request.method == 'POST': form =EntryForm(request.POST) if form.is_valid(): entry = form.save(commit=False) entry.subscription = None entry.owner = request.user entry.author = request.user.username entry.subscribers_usernames = [request.user.username] # let the author_url blank so it won't be hardcoded in the store and # in the template, if author_link is empty, generate a link to his # entries entry.author_url = '' entry.save() # invalidate cache clear_entries_cache(request.user.username) # inform the hub post_publish.send(sender=Entry, username=entry.author, host=host) if request.is_ajax(): e = dict( author=request.user.username, author_url = host+'/'+request.user.username, body = entry.body, link = entry.link, linktext = entry.link, key = str(entry.key()), permalink = '/show/'+str(entry.key()), editlink = '/edit/'+str(entry.key()), deletelink = '/delete/'+str(entry.key()) ) return json_response(e) else: return HttpResponseRedirect(reverse('user-entries', kwargs={'username': request.user.username})) else: form =EntryForm() return render_to_response('entry_form.html', { 'form': form })
def edit_entry(request, key): host = 'http://%s' % request.get_host() entry = db.get(key) if entry.author != request.user.username: response = HttpResponse('unauthorized') response.status_code = 401 return response if request.is_ajax(): body = request.POST.get('body') link = request.POST.get('link') entry.body = body entry.link = link entry.save() e = dict( author=request.user.username, author_url = host+'/'+request.user.username, body = entry.body, link = entry.link, linktext = entry.link, key = str(entry.key()), permalink = '/show/'+str(entry.key()), editlink = '/edit/'+str(entry.key()), deletelink = '/delete/'+str(entry.key()) ) # invalidate cache clear_entries_cache(request.user.username) # ping hub post_publish.send(sender=Entry, username=request.user.username, host=host) return json_response(e) else: response = update_object(request, object_id=key, form_class=EntryForm, post_save_redirect=reverse('user-entries', kwargs={'username':request.user.username})) if isinstance(response, HttpResponseRedirect): post_publish.send(sender=Entry, username=request.user.username, host=host) return response