コード例 #1
0
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))
コード例 #2
0
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')
コード例 #3
0
ファイル: views.py プロジェクト: dnet/omnom
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']))
コード例 #4
0
ファイル: views.py プロジェクト: daveyoon/carbontool
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')
コード例 #5
0
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')
コード例 #6
0
ファイル: views.py プロジェクト: dnet/omnom
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))
コード例 #7
0
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']))
コード例 #8
0
ファイル: views.py プロジェクト: dnet/omnom
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']))
コード例 #9
0
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']))
コード例 #10
0
 def to_base62(self):
     return base62.from_decimal(self.id)
コード例 #11
0
ファイル: models.py プロジェクト: AlJohri/Capitol-Words
 def from_decimal(self):
     return base62.from_decimal(self.pk)
コード例 #12
0
 def from_decimal(self):
     return base62.from_decimal(self.pk)
コード例 #13
0
ファイル: models.py プロジェクト: birkin/django-bul-link
 def get_absolute_url(self):
     tiny = base62.from_decimal(self.id)
     return ('bul_link:permalink_view', (),
             {'tiny': tiny})