Ejemplo n.º 1
0
def detail(request, object_id, template_name='accounts/accounts_detail.html', next=None):
    account = get_one_or_404(Account, id=object_id)
    user = request.user
    pt_results = {}
    centres = None

    # if account.locations:
    #     centres = [{'name': unicode(account.locations[0]), 'location': (account.locations[0].lat_lon) }]

    centres = [{'name': unicode(loc), 'location': (loc.lat_lon) } for loc in account.locations]

    # curations = Curation.objects(owner=account).order_by('-item_metadata__last_modified')[:40]
    curations = get_pages(request, Curation.objects(owner=account).order_by('-item_metadata__last_modified'), 20)

    # map has all curations
    for curation in Curation.objects(owner=account):
        for loc in curation.resource.locations:
            pt_results.setdefault(tuple(loc.lat_lon), []).append((curation.resource.id, curation.resource.title))
    context = {
        'curations': curations,
        'curations_count': Curation.objects(owner=account).count(),
        'pt_results': pt_results,
        'centres': centres,
        'google_key': settings.GOOGLE_KEY,
        'show_map': centres or pt_results,
        'next': next or '%s?page=%s' % (reverse('accounts_detail', args=[account.id]), curations.number)
    }
    return render_to_response(
        template_name,
        {'object': account},
        RequestContext(request, context)
    )
Ejemplo n.º 2
0
    def setUp(self):

        setUpAccounts(self)
        setUpLocations(self)
        setUpResources(self)

        # reload these to avoid errors.
        self.resource6 = Resource.objects.get(id=self.resource6.id)
        self.resource7 = Resource.objects.get(id=self.resource7.id)

        self.curation1 = Curation(outcome='',
                                  tags=['#aliss-story'],
                                  note='This is my story, this is my song',
                                  owner=self.bob)
        self.curation1.item_metadata.update(author=self.bob)
        add_curation(self.resource6, self.curation1)

        self.curation2 = Curation(
            outcome='',
            tags=['#aliss-story'],
            note='Follow the hearts and, you can\'t go wrong',
            owner=self.bob)
        self.curation2.item_metadata.update(author=self.bob)
        add_curation(self.resource7, self.curation2)

        self.jorph.tags = ['#aliss-story']
        self.jorph.save()

        reindex_accounts(url=settings.TEST_SOLR_URL)
        reindex_resources(url=settings.TEST_SOLR_URL)

        from django.test.client import Client
        self.client = Client()
Ejemplo n.º 3
0
def curation_add(request, object_id, template_name='depot/curation_edit.html'):
    """docstring for curation_add"""
    resource = get_one_or_404(Resource, id=ObjectId(object_id))
    user = get_account(request.user.id)

    curation = get_curation_for_acct_resource(user, resource)
    if curation:
        index, cur = curation
        messages.warning(
            request,
            'You already have a curation for this resource- you can edit it if you need to make changes.'
        )
        return HttpResponseRedirect(
            reverse('curation', args=[resource.id, index]))

    if request.method == 'POST':
        result = request.POST.get('result', '')
        next = request.GET.get('next', '')
        if next:
            url = '%s#res_%s' % (next, resource.id)
        else:
            url = ''
        if result == 'Cancel':
            return HttpResponseRedirect(
                url or reverse('resource', args=[resource.id]))
        form = CurationForm(request.POST)
        if form.is_valid(request.user):
            curation = Curation(**form.cleaned_data)
            curation.owner = user
            curation.item_metadata.update(author=user)
            add_curation(resource, curation)
            # TODO: move this into resource.add_curation
            increment_resource_crud('curation_add', account=user)
            index = len(resource.curations) - 1
            return HttpResponseRedirect(
                url or reverse('curation', args=[resource.id, index]))
    else:
        initial = {'outcome': STATUS_OK}
        form = CurationForm(initial=initial)

    template_context = {
        'next': urlquote_plus(request.GET.get('next', '')),
        'form': form,
        'resource': resource,
        'new': True
    }

    return render_to_response(template_name, template_context,
                              RequestContext(request))
Ejemplo n.º 4
0
 def render(self, context):
     owner = self.owner.resolve(context)
     # context[self.varname] = list(Resource.objects(curations__owner=owner)[:int(self.num)])
     context[self.varname] = [
         c.resource for c in Curation.objects(owner=owner).order_by("-item_metadata__last_modified")[: int(self.num)]
     ]
     return ""
Ejemplo n.º 5
0
def fix_curationless_resources():
    i = 0
    r = []
    for res in Resource.objects.all():
        if not res.curations:
            obj = Curation(outcome=STATUS_OK, tags=res.tags, owner=res.owner)
            obj.item_metadata.author = res.owner
            obj.resource = res
            obj.save()
            res.curations.append(obj)
            res.save(reindex=True)
            
            r.append('<a href="http://127.0.0.1:8080/depot/resource/%s">%s</a>' % (res._id, res.title))
            i += 1
            
    return 'fixed %s resources with no curations: %s' % (i, ', '.join(r))
Ejemplo n.º 6
0
def curation_add(request, object_id, template_name='depot/curation_edit.html'):
    """docstring for curation_add"""
    resource = get_one_or_404(Resource, id=ObjectId(object_id))
    user = get_account(request.user.id)

    curation = get_curation_for_acct_resource(user, resource)
    if curation:
        index, cur = curation
        messages.warning(request, 'You already have a curation for this resource- you can edit it if you need to make changes.')
        return HttpResponseRedirect(reverse('curation', args=[resource.id, index]))

    if request.method == 'POST':
        result = request.POST.get('result', '')
        next = request.GET.get('next', '')
        if next:
            url = '%s#res_%s' % (next, resource.id)
        else:
            url = ''
        if result == 'Cancel':
            return HttpResponseRedirect(url or reverse('resource', args=[resource.id]))
        form = CurationForm(request.POST)
        if form.is_valid(request.user):
            curation = Curation(**form.cleaned_data)
            curation.owner = user
            curation.item_metadata.update(author=user)
            add_curation(resource, curation)
            # TODO: move this into resource.add_curation
            increment_resource_crud('curation_add', account=user)
            index = len(resource.curations) - 1
            return HttpResponseRedirect(url or reverse('curation', args=[resource.id, index]))
    else:
        initial = { 'outcome': STATUS_OK}
        form = CurationForm(initial=initial)

    template_context = {
        'next': urlquote_plus(request.GET.get('next', '')),
        'form': form,
        'resource': resource,
        'new': True
    }

    return render_to_response(
        template_name,
        template_context,
        RequestContext(request)
    )
Ejemplo n.º 7
0
def curations_for_group_html(request, object_id, template_name='depot/curations_for_group_embed.html'):

    object = get_one_or_404(Account, id=ObjectId(object_id))
    curations = [c.resource for c in Curation.objects(owner=object).order_by('-item_metadata__last_modified')[:10]]
    template_context = {'object': object, 'curations': curations}

    return render_to_response(
        template_name,
        template_context,
        RequestContext(request)
    )
Ejemplo n.º 8
0
def move_res_tags_to_owner_curation():
    i = 0
    r = []
    # start = datetime.now()

    for res in Resource.objects.all():
        curations = Curation.objects(owner=res.owner, resource=res)
        cur = None
        if curations.count() < 1:
            r.append('<a href="http://127.0.0.1:8080/depot/resource/%s">%s</a>' % (res._id, res.title))

            cur = Curation(outcome=STATUS_OK, tags=res.tags, owner=res.owner)
            cur.item_metadata.author = res.owner
            cur.resource = res
            cur.save()
            res.curations = [cur] + list(res.curations)
            res.save(reindex=True)
            print i, res.curations
            
            i += 1
        # else:
        #     cur = curations[0]
        #     cur.tags = list(set(cur.tags + res.tags))
        #     cur.save()


    # end = datetime.now()
    # print end - start

    return 'found %s resources: %s' % (i, ', '.join(r))
Ejemplo n.º 9
0
 def delete(self, *args, **kwargs):
     """docstring for delete"""
     from issues.models import Issue
     from resources.models import Resource, Curation
     res = Resource.objects(owner=self)
     curs = Curation.objects(owner=self)
     if curs.count() or res.count():
         raise Exception('This account owns resources/curations.')
     Collection.objects(owner=self).delete()
     Issue.objects(reporter=self).delete()
     User.objects.get(pk=self.local_id).delete()
     self.reindex(remove=True)
     super(Account, self).delete(*args, **kwargs)
Ejemplo n.º 10
0
def curations_for_group_js(request, object_id, template_name='depot/curations_for_group_embed.js'):

    object = get_one_or_404(Account, id=ObjectId(object_id))
    curations = [c.resource for c in Curation.objects(owner=object).order_by('-item_metadata__last_modified')[:10]]
    base_url = Site.objects.get_current().domain
    print base_url
    template_context = Context(
        {'object': object, 'curations': curations, 'base_url': 'http://%s' % base_url})

    response = HttpResponse(mimetype='text/javascript')
    t = loader.get_template(template_name)
    response.write(t.render(template_context))
    return response
Ejemplo n.º 11
0
 def delete(self, *args, **kwargs):
     """docstring for delete"""
     from issues.models import Issue
     from resources.models import Resource, Curation
     res = Resource.objects(owner=self)
     curs = Curation.objects(owner=self)
     if curs.count() or res.count():
         raise Exception('This account owns resources/curations.')
     Collection.objects(owner=self).delete()
     Issue.objects(reporter=self).delete()
     User.objects.get(pk=self.local_id).delete()
     self.reindex(remove=True)
     super(Account, self).delete(*args, **kwargs)
Ejemplo n.º 12
0
def curations_for_group_html(
        request,
        object_id,
        template_name='depot/curations_for_group_embed.html'):

    object = get_one_or_404(Account, id=ObjectId(object_id))
    curations = [
        c.resource for c in Curation.objects(
            owner=object).order_by('-item_metadata__last_modified')[:10]
    ]
    template_context = {'object': object, 'curations': curations}

    return render_to_response(template_name, template_context,
                              RequestContext(request))
Ejemplo n.º 13
0
    def test_curation(self):
        from resources.search import find_by_place_or_kwords

        # setting resource failed - no idea why, seems a valid object
        # reloading works
        self.resource6 = Resource.objects.get(id=self.resource6.id)
        curation = Curation(
            outcome='',
            tags=['blah'],
            note='bob curated this',
            owner=self.bob,
            )
        curation.item_metadata.update(author=self.bob)
        add_curation(self.resource6, curation)

        loc, results = find_by_place_or_kwords('', 'blah')
        self.assertEqual(loc, None)
        result = iter(results).next()
        self.assertEqual(result['title'], 'title 6')
Ejemplo n.º 14
0
def resource_edit_complete(request, resource, template_info):
    """docstring for resource_edit_complete"""
    if resource:
        curations = Curation.objects(owner=resource.owner, resource=resource)
        if curations.count() != 1:
            raise Exception('Resource %s with %s owner Curations' % (resource.id, curations.count()))
        cur = curations[0]
        cur.tags = list(set(resource.tags))
        cur.save()
        popup_url = reverse('resource_popup_close')
        url = reverse('resource', args=[resource.id])
    else: # resource_add cancelled
        popup_url = reverse('resource_popup_cancel')
        url = reverse('resource_find')

    if template_info['popup']:
        return HttpResponseRedirect(popup_url)
    else:
        return HttpResponseRedirect(url)
Ejemplo n.º 15
0
def tags_process(request, options):
    results = []
    if options['split'] or options['lower_case']:
        setting, _ = Setting.objects.get_or_create(key=UPPERCASE)
        exceptions = setting.value.get('data', [])
        for obj in Curation.objects():
            tp = TagProcessor(obj.tags)
            new_tags = tp.split(options['split']).lower(options['lower_case'], exceptions).tags
            if new_tags != obj.tags:
                obj.tags = new_tags
                obj.save()
        for obj in Account.objects():
            tp = TagProcessor(obj.tags)
            new_tags = tp.split(options['split']).lower(options['lower_case'], exceptions).tags
            if new_tags != obj.tags:
                obj.tags = new_tags
                obj.save()
    results.append('done') 
    messages.success(request, '<br>'.join(results))
Ejemplo n.º 16
0
def resource_edit_complete(request, resource, template_info):
    """docstring for resource_edit_complete"""
    if resource:
        curations = Curation.objects(owner=resource.owner, resource=resource)
        if curations.count() != 1:
            raise Exception('Resource %s with %s owner Curations' %
                            (resource.id, curations.count()))
        cur = curations[0]
        cur.tags = list(set(resource.tags))
        cur.save()
        popup_url = reverse('resource_popup_close')
        url = reverse('resource', args=[resource.id])
    else:  # resource_add cancelled
        popup_url = reverse('resource_popup_cancel')
        url = reverse('resource_find')

    if template_info['popup']:
        return HttpResponseRedirect(popup_url)
    else:
        return HttpResponseRedirect(url)
Ejemplo n.º 17
0
def curations_for_group_js(request,
                           object_id,
                           template_name='depot/curations_for_group_embed.js'):

    object = get_one_or_404(Account, id=ObjectId(object_id))
    curations = [
        c.resource for c in Curation.objects(
            owner=object).order_by('-item_metadata__last_modified')[:10]
    ]
    base_url = Site.objects.get_current().domain
    print base_url
    template_context = Context({
        'object': object,
        'curations': curations,
        'base_url': 'http://%s' % base_url
    })

    response = HttpResponse(mimetype='text/javascript')
    t = loader.get_template(template_name)
    response.write(t.render(template_context))
    return response
Ejemplo n.º 18
0
def curation_count(acct):
    result = cache.get('account_curations_count.%s' % acct.id, None)
    if result is None:
        result = Curation.objects(owner=acct).count()
        cache.set('account_curations_count.%s' % acct.id, result)
    return result
Ejemplo n.º 19
0
def curation_count(acct):
    result = cache.get('account_curations_count.%s' % acct.id, None)
    if result is None:
        result = Curation.objects(owner=acct).count()
        cache.set('account_curations_count.%s' % acct.id, result)
    return result
Ejemplo n.º 20
0
def curations(request, template_name='youraliss/curations.html'):
    object =  get_one_or_404(Account, local_id=str(request.user.id))
    curations = [c.resource for c in Curation.objects(owner=object).order_by('-item_metadata__last_modified')[:10]]
    template_context = {'object': object, 'curations': curations}
    return render_to_response(template_name, RequestContext(request, template_context))
Ejemplo n.º 21
0
 def render(self, context):
     owner = self.owner.resolve(context)
     # context[self.varname] = list(Resource.objects(curations__owner=owner)[:int(self.num)])
     context[self.varname] = [c.resource for c in Curation.objects(owner=owner).order_by('-item_metadata__last_modified')[:int(self.num)]]
     return ''
Ejemplo n.º 22
0
def curations(request, template_name='youraliss/curations.html'):
    object =  get_one_or_404(Account, local_id=str(request.user.id))
    curations = [c.resource for c in Curation.objects(owner=object).order_by('-item_metadata__last_modified')[:10]]
    template_context = {'object': object, 'curations': curations}
    return render_to_response(template_name, RequestContext(request, template_context))
Ejemplo n.º 23
0
def get_stories():
    objects = [get_story(obj, 'curation') for obj in Curation.objects(tags=settings.STORY_TAG)]
    objects.extend([get_story(obj, 'account') for obj in Account.objects(tags=settings.STORY_TAG)])
    objects.extend([get_story(obj, 'flatpage') for obj in FlatPage.objects.filter(url__startswith='/story/')])
    return objects