def view(request, shurl): item = getItemByUrl(shurl) item['shurl'] = base62.from_decimal(item['seq']) if request.GET.get('format', '') == 'json': del item['user'] res = { 'url': unicode(item['url']), 'title': unicode(item['title']), 'created': tuple(item['created'].timetuple()), 'private': item['private'], 'notes': unicode(unescape(item['notes'])), 'tags': item['tags'], } return HttpResponse(json.dumps(res), mimetype="application/json") else: item['snapshot'] = '' if not item.get('snapshot') else item.get( 'snapshot')[0] tpl = 'view.html' if request.GET.get('raw', None): tpl = 'view-bare.html' return render_to_response(tpl, { 'item': item, }, context_instance=RequestContext(request))
def json_data(request, obj_hash=None): status = 200 work = None if obj_hash: id = base62.to_decimal(obj_hash) work = JSONData.get_by_id(id - BASE_ID) if not work: raise Http404 # create work if request.method == "POST": w = JSONData() d = json.loads(request.raw_post_data) w.put(); d['id'] = base62.from_decimal(BASE_ID + w.unique_id()) data = w.json = json.dumps(d) w.put(); # update elif request.method == "PUT": if work: data = work.json = request.raw_post_data work.put() # remove elif request.method == "DELETE": work.delete(); status = 204 data = '' pass # get else: if not work: data = '{"error": "does not exist"}' status = 404 else: data = work.json pass if not data: raise Http404 return HttpResponse(data, status=status, mimetype='application/json')
def purloin(request,id): try: id = int(id) except: return HttpResponse("error: not an integer: %s" % id) db = get_database()[Bookmark.collection_name] fromobj=db.find_one({'seq': id}) if not fromobj: return HttpResponse("error: no such object") obj=db.Bookmark({'url': fromobj['url'], 'seq': getNextVal('seq'), 'user': unicode(request.user), 'created': datetime.today(), 'private': False, 'title': fromobj['title'], 'notes': unicode(""), 'tags': fromobj['tags'], 'snapshot': fromobj.get('snapshot', []), }) obj.save() return HttpResponseRedirect("/v/%s" % base62.from_decimal(obj['seq']))
def work(request, work_hash=None): status = 200 work = None if work_hash: id = base62.to_decimal(work_hash) work = Work.get_by_id(id - BASE_ID) if not work: raise Http404 # create work if request.method == "POST": w = Work() w.put(); data = json.dumps({'id': base62.from_decimal(BASE_ID + w.unique_id())}) # update elif request.method == "PUT": if work: work.json = request.raw_post_data work.put() data = request.raw_post_data pass # remove elif request.method == "DELETE": work.delete(); status = 204 data = '' pass # get else: if not work: data = '{"error": "does not exist"}' status = 404 else: data = work.json pass return HttpResponse(data, status=status, mimetype='application/json')
def work(request, work_hash=None): status = 200 work = None if work_hash: id = base62.to_decimal(work_hash) work = Work.get_by_id(id - BASE_ID) if not work: raise Http404 # create work if request.method == "POST": w = Work() w.put() data = json.dumps({'id': base62.from_decimal(BASE_ID + w.unique_id())}) # update elif request.method == "PUT": if work: work.json = request.raw_post_data work.put() data = request.raw_post_data pass # remove elif request.method == "DELETE": work.delete() status = 204 data = '' pass # get else: if not work: data = '{"error": "does not exist"}' status = 404 else: data = work.json pass return HttpResponse(data, status=status, mimetype='application/json')
def view(request,shurl): item=getItemByUrl(shurl) item['shurl']=base62.from_decimal(item['seq']) if request.GET.get('format','') == 'json': del item['user'] res={'url': unicode(item['url']), 'title': unicode(item['title']), 'created': tuple(item['created'].timetuple()), 'private': item['private'], 'notes': unicode(unescape(item['notes'])), 'tags': item['tags'], } return HttpResponse(json.dumps(res), mimetype="application/json") else: item['snapshot'] = '' if not item.get('snapshot') else item.get('snapshot')[0] tpl='view.html' if request.GET.get('raw',None): tpl='view-bare.html' return render_to_response(tpl, { 'item': item, }, context_instance=RequestContext(request))
def purloin(request, id): try: id = int(id) except: return HttpResponse("error: not an integer: %s" % id) db = get_database()[Bookmark.collection_name] fromobj = db.find_one({'seq': id}) if not fromobj: return HttpResponse("error: no such object") obj = db.Bookmark({ 'url': fromobj['url'], 'seq': getNextVal('seq'), 'user': unicode(request.user), 'created': datetime.today(), 'private': False, 'title': fromobj['title'], 'notes': unicode(""), 'tags': fromobj['tags'], 'snapshot': fromobj.get('snapshot', []), }) obj.save() return HttpResponseRedirect("/v/%s" % base62.from_decimal(obj['seq']))
def add(request,url=None): done=False if request.method == 'GET': form = AddBookmarkForm(request.GET) elif request.method == 'POST': form = AddBookmarkForm(request.POST) if request.GET.get('close'): done=True else: return HttpResponse("wrong method") try: user=User.objects.get(username=request.user) except ObjectDoesNotExist: return HttpResponseRedirect("/accounts/login") suggestedTags=set() db = get_database()[Bookmark.collection_name] if request.REQUEST.get("dontsave", 0) or not form.is_valid() or form.cleaned_data['popup']: if url: # try to edit an existing bookmark? url=fixApacheMadness(url) url=urlSanitize(url) try: obj=db.find_one({'url':url, 'user': unicode(user)}) except ObjectDoesNotExist: obj=None if obj: # yes, edit an existing bookmark data={ 'url' : url, 'title' : obj['title'], 'tags' : ' '.join([unicode(x) for x in obj['tags']]), 'notes' : obj['notes'], 'private' : obj['private'], 'popup' : form.cleaned_data['popup'] } try: suggestedTags=set(suggestTags(data['url']).keys()) except: suggestedTags=set() try: suggestedTags.update(getCalaisTags(data['notes'])) except: pass form = AddBookmarkForm(data) try: suggestedTags=set(suggestTags(form.cleaned_data['url']).keys()) except: pass try: suggestedTags.update(getCalaisTags(form.cleaned_data['notes'])) except: pass if hasattr(form, "cleaned_data"): tpl='add.html' if form.cleaned_data.get('popup','') == 1 else 'addWidget.html' else: tpl='addWidget.html' return render_to_response(tpl, { 'form': form, 'suggestedTags': sorted(suggestedTags) }, context_instance=RequestContext(request)) # ok we have some valid form. let's save it. url=urlSanitize(form.cleaned_data['url']) try: obj=db.one({'url': url, 'user': unicode(user)}) except ObjectDoesNotExist: obj=None snapshot=form.cleaned_data['page'].encode('utf8') if snapshot: hash=hashlib.sha512(snapshot).hexdigest() fname="%s/snapshots/%s" % (settings.BASE_PATH, hash) dump=gzip.open(fname,'wb') dump.write(snapshot) dump.close() snapshot=hash if obj: # edit obj=db.Bookmark(obj) if form.cleaned_data['private']: obj['private']=form.cleaned_data['private'] if form.cleaned_data['title']: obj['title']=sanitizeHtml(form.cleaned_data['title']) if form.cleaned_data['notes']: obj['notes']=sanitizeHtml(form.cleaned_data['notes']) if form.cleaned_data['tags']: obj['tags']=map(sanitizeHtml, form.cleaned_data['tags'].split(" ")) if 'updated' in obj: del(obj['updated']) if not snapshot in obj: obj['snapshot']=[] if snapshot and snapshot not in obj['snapshot']: obj['snapshot'].append(unicode(snapshot)) else: # create obj=db.Bookmark({'url': url, 'seq': getNextVal('seq'), 'user': unicode(request.user), 'created': datetime.today(), 'private': form.cleaned_data['private'], 'title': sanitizeHtml(form.cleaned_data['title']), 'notes': sanitizeHtml(form.cleaned_data['notes']), 'tags': map(sanitizeHtml, form.cleaned_data['tags'].split(' ')), 'snapshot': [unicode(snapshot)], }) obj.save() return HttpResponseRedirect("/v/%s?raw=1" % base62.from_decimal(obj['seq']))
def add(request, url=None): done = False if request.method == 'GET': form = AddBookmarkForm(request.GET) elif request.method == 'POST': form = AddBookmarkForm(request.POST) if request.GET.get('close'): done = True else: return HttpResponse("wrong method") try: user = User.objects.get(username=request.user) except ObjectDoesNotExist: return HttpResponseRedirect("/accounts/login") suggestedTags = set() db = get_database()[Bookmark.collection_name] if request.REQUEST.get( "dontsave", 0) or not form.is_valid() or form.cleaned_data['popup']: if url: # try to edit an existing bookmark? url = fixApacheMadness(url) url = urlSanitize(url) try: obj = db.find_one({'url': url, 'user': unicode(user)}) except ObjectDoesNotExist: obj = None if obj: # yes, edit an existing bookmark data = { 'url': url, 'title': obj['title'], 'tags': ' '.join([unicode(x) for x in obj['tags']]), 'notes': obj['notes'], 'private': obj['private'], } if form.is_valid(): data['popup'] = form.cleaned_data.get('popup') try: suggestedTags = set(suggestTags(data['url']).keys()) except: suggestedTags = set() try: suggestedTags.update(getCalaisTags(data['notes'])) except: pass form = AddBookmarkForm(data) try: suggestedTags = set(suggestTags(form.cleaned_data['url']).keys()) except: pass try: suggestedTags.update(getCalaisTags(form.cleaned_data['notes'])) except: pass if hasattr(form, "cleaned_data"): tpl = 'add.html' if form.cleaned_data.get( 'popup', '') == 1 else 'addWidget.html' else: tpl = 'add.html' return render_to_response(tpl, { 'form': form, 'suggestedTags': sorted(suggestedTags) }, context_instance=RequestContext(request)) # ok we have some valid form. let's save it. url = urlSanitize(form.cleaned_data['url']) try: obj = db.one({'url': url, 'user': unicode(user)}) except ObjectDoesNotExist: obj = None snapshot = form.cleaned_data['page'].encode('utf8') if snapshot: hash = hashlib.sha512(snapshot).hexdigest() fname = "%s/snapshots/%s" % (settings.BASE_PATH, hash) dump = gzip.open(fname, 'wb') dump.write(snapshot) dump.close() snapshot = hash if obj: # edit obj = db.Bookmark(obj) if form.cleaned_data['private']: obj['private'] = form.cleaned_data['private'] if form.cleaned_data['title']: obj['title'] = sanitizeHtml(form.cleaned_data['title']) if form.cleaned_data['notes']: obj['notes'] = sanitizeHtml(form.cleaned_data['notes']) if form.cleaned_data['tags']: obj['tags'] = map(sanitizeHtml, form.cleaned_data['tags'].split(" ")) if 'updated' in obj: del (obj['updated']) if not snapshot in obj: obj['snapshot'] = [] if snapshot and snapshot not in obj['snapshot']: obj['snapshot'].append(unicode(snapshot)) else: # create obj = db.Bookmark({ 'url': url, 'seq': getNextVal('seq'), 'user': unicode(request.user), 'created': datetime.today(), 'private': form.cleaned_data['private'], 'title': sanitizeHtml(form.cleaned_data['title']), 'notes': sanitizeHtml(form.cleaned_data['notes']), 'tags': map(sanitizeHtml, form.cleaned_data['tags'].split(' ')), 'snapshot': [unicode(snapshot)], }) obj.save() return HttpResponseRedirect("/v/%s?raw=1" % base62.from_decimal(obj['seq']))
def to_base62(self): return base62.from_decimal(self.id)
def from_decimal(self): return base62.from_decimal(self.pk)
def get_absolute_url(self): tiny = base62.from_decimal(self.id) return ('bul_link:permalink_view', (), {'tiny': tiny})