Beispiel #1
0
def add_post(req, key):
    if req.method == 'POST':
        # If the form has been submitted...
        form = Bookmarklet(req.POST)  # A form bound to the POST data

        s = OASession.objects.get(key=key)
        slug = req.POST.get('slug', '')

        if form.is_valid():  # All validation rules pass
            evt_dict = dict(form.cleaned_data)
            try:
                lat, lng = evt_dict['coords'].split(',')
            except:
                lat, lng = 0, 0
            evt_dict['coords'] = {'lat': float(lat), 'lng': float(lng)}

            if evt_dict['accessed'] != '':
                evt_dict['accessed'] = dateutil.parser.parse(
                    evt_dict['accessed'])
            else:
                evt_dict['accessed'] = datetime.datetime.now()

            user = OAUser.objects.get(slug=evt_dict['slug'])

            evt_dict['user_email'] = user.email
            evt_dict['user_name'] = user.name
            evt_dict['user_profession'] = user.profession

            evt_dict['user_slug'] = user.slug
            del evt_dict['slug']

            event = OAEvent.objects.create(**evt_dict)
            event.save()

            scholar_url = ''
            if 'doi' in evt_dict:
                # Some dumb DOIs end with '.' characters
                while evt_dict['doi'].endswith('.'):
                    evt_dict['doi'] = evt_dict['doi'][:-1]
                doi = evt_dict['doi']
                scholar_url = 'http://scholar.google.com/scholar?cluster=http://dx.doi.org/%s' % doi

            s.data = json.dumps({
                'event_id': event.id,
                'scholar_url': scholar_url,
                'doi': doi
            })

            s.save()
            return redirect('bookmarklet:form2', key=key, slug=user.slug)
        else:
            return redirect('bookmarklet:form1', slug=slug)
    return redirect('homepage')
Beispiel #2
0
def add_post(req, key):
    if req.method == 'POST':
        # If the form has been submitted...
        form = Bookmarklet(req.POST)  # A form bound to the POST data

        s = OASession.objects.get(key=key)
        slug = req.POST.get('slug', '')

        if form.is_valid():  # All validation rules pass
            evt_dict = dict(form.cleaned_data)
            try:
                lat, lng = evt_dict['coords'].split(',')
            except:
                lat, lng = 0, 0
            evt_dict['coords'] = {'lat': float(lat), 'lng': float(lng)}

            if evt_dict['accessed'] != '':
                evt_dict['accessed'] = dateutil.parser.parse(evt_dict['accessed'])
            else:
                evt_dict['accessed'] = datetime.datetime.now()

            user = OAUser.objects.get(slug=evt_dict['slug'])

            evt_dict['user_email'] = user.email
            evt_dict['user_name'] = user.name
            evt_dict['user_profession'] = user.profession

            evt_dict['user_slug'] = user.slug
            del evt_dict['slug']

            event = OAEvent.objects.create(**evt_dict)
            event.save()

            scholar_url = ''
            if 'doi' in evt_dict:
                # Some dumb DOIs end with '.' characters
                while evt_dict['doi'].endswith('.'):
                    evt_dict['doi'] = evt_dict['doi'][:-1]
                doi = evt_dict['doi']
                scholar_url = 'http://scholar.google.com/scholar?cluster=http://dx.doi.org/%s' % doi

            session_data = json.loads(s.data)
            session_data.update({'event_id': event.id,
                                 'scholar_url': scholar_url,
                                 'doi': doi})
            s.data = json.dumps(session_data)
            s.save()
            return redirect('bookmarklet:form2', key=key, slug=user.slug)
        else:
            return redirect('bookmarklet:form1', slug=slug)
    return redirect('homepage')
Beispiel #3
0
def form1(req, slug):
    """
    Show the bookmarklet form
    """
    # For some reason, we get a trailing slash sometimes.  No idea
    # why.
    while slug.endswith('/'):
        slug = slug[:-1]
    if OAUser.objects.filter(slug=slug).count() == 0:
        return render_to_response('bookmarklet/no_user.html')

    form = Bookmarklet(req.GET)

    if 'doi' in form.data:
        form.fields['doi'].widget.attrs['readonly'] = 'readonly'
        form.fields['doi'].widget.attrs['value'] = form.data['doi']

    if 'url' in form.data:
        form.fields['url'].widget.attrs['value'] = form.data['url']

    form.fields['slug'].widget.attrs['value'] = slug

    c = {}

    key = uuid.uuid4().hex
    s = OASession.objects.create(key=key, expire=time.time())
    s.save()

    c.update({'bookmarklet': form, 'slug': slug, 'key': key})
    return render_to_response('bookmarklet/page1.html',
                              c,
                              context_instance=RequestContext(req))
Beispiel #4
0
def add_post(req):
    c = {}
    c.update(csrf(req))

    if req.method == 'POST':
        # If the form has been submitted...
        form = Bookmarklet(req.POST)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            evt_dict = dict(form.cleaned_data)
            lat, lng = evt_dict['coords'].split(',')
            evt_dict['coords'] = {'lat': float(lat), 'lng': float(lng)}
            if evt_dict['accessed'] != '':
                evt_dict['accessed'] = dateutil.parser.parse(evt_dict['accessed'])

            user = User.objects.get(id=evt_dict['user_id'])
            evt_dict['user_name'] = user.name
            evt_dict['user_profession'] = user.profession

            event = Event(**evt_dict)
            event.save()

            scholar_url = ''
            if 'doi' in evt_dict:
                # Some dumb DOIs end with '.' characters
                while evt_dict['doi'].endswith('.'):
                    evt_dict['doi'] = evt_dict['doi'][:-1]
                doi = evt_dict['doi']
                scholar_url = 'http://scholar.google.com/scholar?cluster=http://dx.doi.org/%s' % doi

            req.session['data'] = {'event_id': event.id,
                                   'scholar_url': scholar_url,
                                   'doi': doi}

            return redirect('bookmarklet:form2')
        else:
            return redirect('bookmarklet:form1', user_id=req.session['user_id'])