コード例 #1
0
ファイル: views.py プロジェクト: nagyistge/brainmeta-www
def add_image_for_neurosynth(request):
    temp_collection_name = "%s's temporary collection" % request.user.username
    #this is a hack we need to make sure this collection can be only
    #owned by the same user
    try:
        temp_collection = Collection.objects.get(name=temp_collection_name)
    except Collection.DoesNotExist:
        priv_token = generate_url_token()
        temp_collection = Collection(name=temp_collection_name,
                                     owner=request.user,
                                     private=False,
                                     private_token=priv_token)
        temp_collection.save()
    image = StatisticMap(collection=temp_collection)
    if request.method == "POST":
        form = SimplifiedStatisticMapForm(request.POST,
                                          request.FILES,
                                          instance=image,
                                          user=request.user)
        if form.is_valid():
            image = form.save()
            return HttpResponseRedirect(
                "http://neurosynth.org/decode/?neurovault=%s-%s" %
                (temp_collection.private_token, image.id))
    else:
        form = SimplifiedStatisticMapForm(user=request.user, instance=image)

    context = {"form": form}
    return render(request, "statmaps/add_image_for_neurosynth.html.haml",
                  context)
コード例 #2
0
ファイル: views.py プロジェクト: rwblair/NeuroVault
def add_image_for_neurosynth(request):
    temp_collection_name = "%s's temporary collection" % request.user.username
    #this is a hack we need to make sure this collection can be only
    #owned by the same user
    try:
        temp_collection = Collection.objects.get(name=temp_collection_name)
    except Collection.DoesNotExist:
        priv_token = generate_url_token()
        temp_collection = Collection(name=temp_collection_name,
                                     owner=request.user,
                                     private=False,
                                     private_token=priv_token)
        temp_collection.save()
    image = StatisticMap(collection=temp_collection)
    if request.method == "POST":
        form = SimplifiedStatisticMapForm(request.POST, request.FILES, instance=image, user=request.user)
        if form.is_valid():
            image = form.save()
            return HttpResponseRedirect("http://neurosynth.org/decode/?neurovault=%s-%s" % (
                temp_collection.private_token,image.id))
    else:
        form = SimplifiedStatisticMapForm(user=request.user, instance=image)

    contrasts = get_contrast_lookup()
    context = {"form": form,"contrasts":json.dumps(contrasts)}
    return render(request, "statmaps/add_image_for_neurosynth.html", context)
コード例 #3
0
ファイル: views.py プロジェクト: nagyistge/brainmeta-www
def edit_collection(request, cid=None):
    page_header = "Add new collection"
    if cid:
        collection = get_collection(cid, request)
        is_owner = True if collection.owner == request.user else False
        page_header = 'Edit collection'
        if not owner_or_contrib(request, collection):
            return HttpResponseForbidden()
    else:
        is_owner = True
        collection = Collection(owner=request.user)
    if request.method == "POST":
        if is_owner:
            form = OwnerCollectionForm(request.POST,
                                       request.FILES,
                                       instance=collection)
        else:
            form = CollectionForm(request.POST,
                                  request.FILES,
                                  instance=collection)
        if form.is_valid():
            previous_contribs = set()
            if form.instance.pk is not None:
                previous_contribs = set(form.instance.contributors.all())
            collection = form.save(commit=False)
            if collection.private and collection.private_token is None:
                collection.private_token = generate_url_token()
            collection.save()

            if is_owner:
                form.save_m2m()  # save contributors
                current_contribs = set(collection.contributors.all())
                new_contribs = list(
                    current_contribs.difference(previous_contribs))
                context = {
                    'owner': collection.owner.username,
                    'collection': collection.name,
                    'url':
                    get_server_url(request) + collection.get_absolute_url(),
                }
                subj = '%s has added you to a NeuroVault collection' % context[
                    'owner']
                send_email_notification('new_contributor', subj, new_contribs,
                                        context)

            return HttpResponseRedirect(collection.get_absolute_url())
    else:
        if is_owner:
            form = OwnerCollectionForm(instance=collection)
        else:
            form = CollectionForm(instance=collection)

    context = {"form": form, "page_header": page_header, "is_owner": is_owner}
    return render(request, "statmaps/edit_collection.html.haml", context)
コード例 #4
0
    def test_fetch_my_collections(self):
        self.client.force_authenticate(user=self.user)

        # Create a private collection
        private_collection = Collection(
            owner=self.user,
            name='Private Collection',
            private=True,
            private_token=generate_url_token()
        )
        private_collection.save()

        response = self.client.get('/api/my_collections/', follow=True)
        self.assertEqual(len(response.data['results']), 2)

        collection_map = dict((x['id'], x) for x in response.data['results'])

        self.assertEqual(collection_map[self.coll.id]['id'], self.coll.id)
        self.assertEqual(collection_map[self.coll.id]['private'], False)
        self.assertEqual(
            collection_map[private_collection.id]['private'], True
        )

        # Create and share a new collection with our user
        sharer_user = User.objects.create_user('Sharer')
        sharer_user.save()

        shared_collection = Collection(
            owner=sharer_user,
            name='Shared Test Collection'
        )

        shared_collection.save()
        shared_collection.contributors.add(self.user)

        # Re-fetch the data
        response = self.client.get('/api/my_collections/', follow=True)

        user_collections_ids = sorted([
            self.coll.id,
            shared_collection.id,
            private_collection.id
        ])
        result_collection_ids = sorted(
            x['id'] for x in response.data['results']
        )

        self.assertEqual(
            len(response.data['results']), len(user_collections_ids)
        )
        self.assertListEqual(user_collections_ids, result_collection_ids)
コード例 #5
0
ファイル: views.py プロジェクト: rwblair/NeuroVault
def edit_collection(request, cid=None):
    page_header = "Add new collection"
    if cid:
        collection = get_collection(cid,request)
        is_owner = collection.owner == request.user 
        page_header = 'Edit collection'
        if not owner_or_contrib(request,collection):
            return HttpResponseForbidden()
    else:
        is_owner = True
        collection = Collection(owner=request.user)
    if request.method == "POST":
        if is_owner:
            form = OwnerCollectionForm(request.POST, request.FILES, instance=collection)
        else:
            form = CollectionForm(request.POST, request.FILES, instance=collection)
        if form.is_valid():
            previous_contribs = set()
            if form.instance.pk is not None:
                previous_contribs = set(form.instance.contributors.all())
            collection = form.save(commit=False)
            if collection.private and collection.private_token is None:
                collection.private_token = generate_url_token()
            collection.save()

            if is_owner:
                form.save_m2m()  # save contributors
                current_contribs = set(collection.contributors.all())
                new_contribs = list(current_contribs.difference(previous_contribs))
                context = {
                    'owner': collection.owner.username,
                    'collection': collection.name,
                    'url': get_server_url(request) + collection.get_absolute_url(),
                }
                subj = '%s has added you to a NeuroVault collection' % context['owner']
                send_email_notification('new_contributor', subj, new_contribs, context)

            return HttpResponseRedirect(collection.get_absolute_url())
    else:
        if is_owner:
            form = OwnerCollectionForm(instance=collection)
        else:
            form = CollectionForm(instance=collection)

    context = {"form": form, "page_header": page_header, "is_owner": is_owner}
    return render(request, "statmaps/edit_collection.html.haml", context)