Esempio n. 1
0
def curation_detail(request,
                    object_id,
                    index=None,
                    template_name='depot/curation_detail.html'):
    """docstring for curation_detail"""
    if index:
        resource = get_one_or_404(Resource, id=ObjectId(object_id))
        curation = resource.curations[int(index)]
    else:
        curation = get_one_or_404(Curation, id=ObjectId(object_id))
        resource = curation.resource

    if request.is_ajax():
        context = {
            'curation': {
                'note': curation.note,
                'tags': curation.tags,
            },
            'resource': {
                'title': resource.title,
                'description': resource.description,
            },
            'url': reverse('curation_add', args=(resource.id, )),
        }
        return HttpResponse(json.dumps(context), mimetype='application/json')

    context = {
        'index': index,
        'object': curation,
        'resource': resource,
    }
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 2
0
def curation_detail(request, object_id, index=None, template_name='depot/curation_detail.html'):
    """docstring for curation_detail"""
    if index:
        resource = get_one_or_404(Resource, id=ObjectId(object_id))
        curation = resource.curations[int(index)]
    else:
        curation = get_one_or_404(Curation, id=ObjectId(object_id))
        resource = curation.resource

    if request.is_ajax():
        context = {
            'curation': {
                'note': curation.note,
                'tags': curation.tags,
            },
            'resource': {
                'title': resource.title,
                'description': resource.description,
            },
            'url': reverse('curation_add', args=(resource.id, )),
        }
        return HttpResponse(json.dumps(context), mimetype='application/json')

    context = {
        'index': index,
        'object': curation,
        'resource': resource,
    }
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 3
0
def resource_remove(request, object_id):
    object = get_one_or_404(Resource, id=ObjectId(object_id), user=request.user, perm='can_delete')
    object.delete()

    user = get_account(request.user.id)
    increment_resource_crud('resouce_remove', account=user)
    return HttpResponseRedirect(reverse('resource_list'))
Esempio n. 4
0
def edit(request, object_id, template_name='accounts/accounts_edit.html', next='accounts_detail'):

    # object = get_one_or_404(Account, id=object_id)
    object = get_one_or_404(Account, id=ObjectId(object_id), user=request.user, perm='can_edit')
    user = request.user
    if not (user.is_staff or object.local_id == str(user.id)):
        raise PermissionDenied()
    
    if request.method == 'POST':
        form = AccountForm(request.POST, instance=object)
        locationform = LocationUpdateForm(request.POST, instance=object)
        if form.is_valid(request.user) and locationform.is_valid():
            acct = get_account(request.user.id)

            object.locations = locationform.locations
            object.save()

            increment_resource_crud('account_edit', account=acct)
            object = form.save(False)
            object.save(reindex=True)
            return HttpResponseRedirect(reverse(next, args=[object.id]))
    else:
        form = AccountForm(instance=object)
        locationform = LocationUpdateForm(instance=object)
    
    template_context = {
        'form': form, 'object': object, 
        'locationform': locationform, 'new': False }

    return render_to_response(
        template_name,
        template_context,
        RequestContext(request)
    )
Esempio n. 5
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)
    )
Esempio n. 6
0
def location_remove(request, object_id, index):
    """docstring for location_remove"""
    resource = get_one_or_404(Resource,
                              id=ObjectId(object_id),
                              user=request.user,
                              perm='can_edit')
    del resource.locations[int(index)]
    resource.save(author=get_account(request.user.id), reindex=True)
    return HttpResponseRedirect(reverse('resource_edit', args=[resource.id]))
Esempio n. 7
0
def resource_remove(request, object_id):
    object = get_one_or_404(Resource,
                            id=ObjectId(object_id),
                            user=request.user,
                            perm='can_delete')
    object.delete()

    user = get_account(request.user.id)
    increment_resource_crud('resouce_remove', account=user)
    return HttpResponseRedirect(reverse('resource_list'))
Esempio n. 8
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)
    )
Esempio n. 9
0
def resource_find(request, template_name='depot/resource_find.html'):
    """docstring for resource_find"""
    results = []
    pt_results = {}
    centres = None
    new_search = False

    result = request.REQUEST.get('result', '')
    if request.method == 'POST' or result:
        if result == 'Cancel':
            return HttpResponseRedirect(reverse('resource_list'))
        form = FindResourceForm(request.REQUEST)
        if form.is_valid():
            user = get_account(request.user.id)

            # print request.META.get("ENGINE_LOG")
            increment_queries(form.cleaned_data['kwords'], account=user)
            # print form.centre['loc'] if form.centre else None
            increment_locations(
                unicode(form.centre['loc']) if form.centre else None,
                account=user)

            for result in form.results:
                resource = get_one_or_404(Resource,
                                          id=ObjectId(result['res_id']))
                result['resource'] = resource
                if 'pt_location' in result:
                    pt_results.setdefault(
                        tuple(result['pt_location'][0].split(', ')),
                        []).append((result['res_id'], result['title']))
            centres = [form.centre] if form.centre else []
    else:
        form = FindResourceForm(
            initial={'boost_location': settings.SOLR_LOC_BOOST_DEFAULT})
        new_search = True

    # hack cos map not showing if no centre point
    # map should show if pt_results anyway, but not happening
    # see also accounts.view.accounts_find

    # just north of Perth
    # default_centres = [{'location': ('56.5', '-3.5')}]

    context = {
        'next': urlquote_plus(request.get_full_path()),
        'form': form,
        'results': form.results,
        'pt_results': pt_results,
        'centres': centres,  # or default_centres if pt_results else None,
        'google_key': settings.GOOGLE_KEY,
        'show_map': bool(centres or pt_results),
        'new_search': new_search
    }
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 10
0
def issue_detail(request,
                 object_id,
                 template_name='youraliss/issue_detail.html',
                 next='issue_detail'):

    account = get_account(request.user.id)
    issue = get_one_or_404(Issue, id=ObjectId(object_id))

    if request.method == 'POST' and 'message' in request.POST:
        commentform = CommentForm(request.POST)
        if commentform.is_valid():
            comment = IssueComment(
                owner=account,
                message=commentform.cleaned_data['message'],
            )
            issue.comments.append(comment)
            issue.save()
            issue.notify_comment(comment)
            return HttpResponseRedirect(reverse(next, args=[issue.id]))
    else:
        commentform = CommentForm()

    if request.method == 'POST' and 'resolved' in request.POST:
        if not can_resolve(account, issue):
            raise PermissionDenied()

        form = IssueResolveForm(request.POST)
        if form.is_valid():

            issue.resolved = int(form.cleaned_data['resolved'])
            issue.resolved_message = form.cleaned_data['resolved_message']
            issue.save()

            if issue.resolved == RESOLUTION_FOR_REMOVAL:
                issue.related_document.moderate_as_bad(account)
            elif issue.severity == SEVERITY_CRITICAL:
                issue.related_document.remove_bad_mod()
            issue.notify_resolved()

            return HttpResponseRedirect(reverse(next, args=[issue.id]))
    else:
        form = IssueResolveForm(initial={
            'resolved': issue.resolved,
            'resolved_message': issue.resolved_message
        })

    template_context = {
        'object': issue,
        'commentform': commentform,
        'form': form
    }
    return render_to_response(template_name,
                              RequestContext(request, template_context))
Esempio n. 11
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
Esempio n. 12
0
def resource_detail(request,
                    object_id,
                    template_name='depot/resource_detail.html'):
    object = get_one_or_404(Resource, id=ObjectId(object_id))
    increment_resources(object_id)

    return render_to_response(
        template_name,
        RequestContext(
            request, {
                'object': object,
                'yahoo_appid': settings.YAHOO_KEY,
                'google_key': settings.GOOGLE_KEY
            }))
Esempio n. 13
0
def resource_edit(request, object_id, template_name='depot/resource_edit.html'):
    """ edits an existing resource. Uses a wizard-like approach, so checks resource.collection_status
        and hands off to resource_* function handler
    """
    UPDATE_LOCS = 'Update locations'
    UPDATE_TAGS = 'Update tags'

    object = get_one_or_404(Resource, id=ObjectId(object_id), user=request.user, perm='can_edit')

    # doc = ''
    # places = None
    template_info = _template_info(request.REQUEST.get('popup', ''))

    if request.method == 'POST':
        result = request.POST.get('result', '') # or request.POST.get('result', '')
        if result == 'Cancel':
            return resource_edit_complete(request, object, template_info)
        resourceform = ShortResourceForm(request.POST, instance=object)
        eventform = EventForm(request.POST, instance=object.calendar_event)
        locationform = LocationUpdateForm(request.POST, instance=object)
        # shelflifeform = ShelflifeForm(request.POST, instance=object)

        if resourceform.is_valid(request.user) and locationform.is_valid() and eventform.is_valid():
            acct = get_account(request.user.id)
            object.locations = locationform.locations
            increment_resource_crud('resouce_edit', account=acct)

            # Event dates
            event_start = eventform.cleaned_data['start']
            if event_start:
                object.calendar_event = CalendarEvent(start=event_start, end=eventform.cleaned_data['end'])
            else:
                object.calendar_event = None
            object = resourceform.save(do_save=False)            
            try:
                object.save(author=acct, reindex=True)
                return resource_edit_complete(request, object, template_info)
            except OperationError:
                pass
    else:
        resourceform = ShortResourceForm(instance=object)
        locationform = LocationUpdateForm(instance=object)
        eventform = EventForm(instance=object.calendar_event)
        # shelflifeform = ShelflifeForm(instance=object)

    return render_to_response(template_name,
        RequestContext( request, { 'template_info': template_info, 'object': object,
            'resourceform': resourceform, 'locationform': locationform, 'eventform': eventform, #'places': places,
            # 'tagsform': tagsform, #'shelflifeform': shelflifeform,
            'UPDATE_LOCS': UPDATE_LOCS, 'UPDATE_TAGS': UPDATE_TAGS  }))
Esempio n. 14
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))
Esempio n. 15
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))
Esempio n. 16
0
def curation_remove(request, object_id, index):
    """docstring for curation_remove"""
    user = get_account(request.user.id)
    resource = get_one_or_404(Resource, id=ObjectId(object_id), user=request.user, perm='can_delete')
    if resource.owner == resource.curations[int(index)].owner:

        messages.warning(request, 'You cannot delete the curation by the resource owner.')
        return HttpResponseRedirect(reverse('curation', args=[resource.id, index]))

    resource.curations[int(index)].delete()
    del resource.curations[int(index)]
    resource.save(reindex=True)

    increment_resource_crud('curation_remove', account=user)
    return HttpResponseRedirect(reverse('resource', args=[resource.id]))
Esempio n. 17
0
def accounts_find(request, template_name='accounts/accounts_find.html'):
    """docstring for accounts_find"""
    results = []
    pt_results = {}
    centres = None
    new_search = False

    result = request.REQUEST.get('result', '')
    if request.method == 'POST' or result:
        pass
        if result == 'Cancel':
            return HttpResponseRedirect(reverse('resource_list'))
        form = FindAccountForm(request.REQUEST)
        if form.is_valid():
            user = get_account(request.user.id)

            increment_queries(form.cleaned_data['kwords'], account=user)
            increment_locations(form.cleaned_data['post_code'], account=user)

            for result in form.results:
                acct = get_one_or_404(Account, id=ObjectId(result['res_id']))
                result['resource'] = acct
                results.append({'resource_result': result})
                if 'pt_location' in result:
                    pt_results.setdefault(tuple(result['pt_location'][0].split(', ')), []).append((result['res_id'], result['title']))
            centres = [form.centre] if form.centre else []
    else:
        form = FindAccountForm(initial={'boost_location': settings.SOLR_LOC_BOOST_DEFAULT})
        new_search = True

    # hack cos map not showing if no centre point
    # map should show if pt_results anyway, but not happening
    # see also resources.view.resource_find

    # just north of Perth
    # default_centres = [{'location': ('56.5', '-3.5')}]

    context = {
        'next': urlquote_plus(request.get_full_path()),
        'form': form,
        'results': results,
        'pt_results': pt_results,
        'centres': centres, # or default_centres if pt_results else None,
        'google_key': settings.GOOGLE_KEY,
        'show_map': bool(centres or pt_results),
        'new_search': new_search
    }
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 18
0
def resource_report(request,
                    object_id,
                    template_name='depot/resource_report.html'):
    """
    View for reporting a report when a user finds a problem with it.
    """
    resource = get_one_or_404(Resource, id=ObjectId(object_id))
    reporter = get_account(request.user.id)

    # if 'next' in request.GET:
    #     url = request.GET['next']
    # else:
    #     url = None
    # url = url or reverse('resource', args=[resource.id])

    if Issue.objects(reporter=reporter, related_document=resource).count():
        messages.warning(request, 'You have already reported this resource.')
        return HttpResponseRedirect(reverse('resource', args=[resource.id]))

    if request.method == 'POST':
        form = ResourceReportForm(request.POST)
        if form.is_valid():

            severity = int(form.cleaned_data['severity'])
            message = form.cleaned_data['message']

            issue = Issue(message=message,
                          severity=severity,
                          reporter=reporter)
            issue.related_document = resource
            issue.save()
            issue.notify_created()

            # only moderate as STATUS_BAD if SEVERITY_CRITICAL
            if severity == SEVERITY_CRITICAL:
                resource.moderate_as_bad(reporter)

            return HttpResponseRedirect(
                reverse('issue_detail', args=[issue.id]))
    else:
        form = ResourceReportForm()

    return render_to_response(
        template_name, {
            'next': urlquote_plus(request.GET.get('next', '')),
            'form': form,
            'object': resource,
        }, RequestContext(request))
Esempio n. 19
0
def locations_remove(request, object_id):
    """docstring for location_remove"""
    object = get_one_or_404(Location, id=object_id, user=request.user, perm='can_delete')

    resources = Resource.objects(locations=object)
    accounts = Account.objects(locations=object)
    if resources or accounts:
        res_str = ','.join([res.name for res in resources])
        acct_str = ','.join(['<a href="%s">%s</a>' % (reverse('accounts_edit', args=[acct.id]), acct.name) for acct in accounts])
        messages.error(
            request, 
            'Resources/Accounts using this location:<br>%s<br>%s.' % (res_str, acct_str))
        return HttpResponseRedirect(reverse('cab_locations_detail', args=[object.id]))
    object.delete()
    messages.success(request, 'Location removed')
    return HttpResponseRedirect(reverse('cab_locations'))
Esempio n. 20
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)
    )
Esempio n. 21
0
def resource_report(request, object_id, template_name='depot/resource_report.html'):
    """
    View for reporting a report when a user finds a problem with it.
    """
    resource = get_one_or_404(Resource, id=ObjectId(object_id))
    reporter=get_account(request.user.id)

    # if 'next' in request.GET:
    #     url = request.GET['next']
    # else:
    #     url = None
    # url = url or reverse('resource', args=[resource.id])

    if Issue.objects(reporter=reporter, related_document=resource).count():
        messages.warning(request, 'You have already reported this resource.')
        return HttpResponseRedirect(reverse('resource', args=[resource.id]))

    if request.method == 'POST':
        form = ResourceReportForm(request.POST)
        if form.is_valid():

            severity=int(form.cleaned_data['severity'])
            message=form.cleaned_data['message']

            issue = Issue(
                message=message,
                severity=severity,
                reporter=reporter)
            issue.related_document = resource
            issue.save()
            issue.notify_created()
            
            # only moderate as STATUS_BAD if SEVERITY_CRITICAL
            if severity == SEVERITY_CRITICAL:
                resource.moderate_as_bad(reporter)

            return HttpResponseRedirect(reverse('issue_detail', args=[issue.id]))
    else:
        form = ResourceReportForm()

    return render_to_response(template_name, {
        'next': urlquote_plus(request.GET.get('next', '')),
        'form': form,
        'object': resource,
    }, RequestContext(request))
Esempio n. 22
0
def issue_detail(request, object_id, template_name='youraliss/issue_detail.html', next='issue_detail'):

    account = get_account(request.user.id)
    issue = get_one_or_404(Issue, id=ObjectId(object_id))

    if request.method == 'POST' and 'message' in request.POST:
        commentform = CommentForm(request.POST)
        if commentform.is_valid():
            comment = IssueComment(
                owner = account,
                message = commentform.cleaned_data['message'],
                )
            issue.comments.append(comment)
            issue.save()
            issue.notify_comment(comment)
            return HttpResponseRedirect(reverse(next, args=[issue.id]))
    else:
        commentform = CommentForm()

    if request.method == 'POST' and 'resolved' in request.POST:
        if not can_resolve(account, issue):
            raise PermissionDenied()

        form = IssueResolveForm(request.POST)
        if form.is_valid():

            issue.resolved=int(form.cleaned_data['resolved'])
            issue.resolved_message=form.cleaned_data['resolved_message']
            issue.save()

            if issue.resolved == RESOLUTION_FOR_REMOVAL:
                issue.related_document.moderate_as_bad(account)
            elif issue.severity == SEVERITY_CRITICAL:
                issue.related_document.remove_bad_mod()
            issue.notify_resolved()
            
            return HttpResponseRedirect(reverse(next, args=[issue.id]))
    else:
        form = IssueResolveForm(initial={'resolved': issue.resolved, 'resolved_message': issue.resolved_message})

    template_context = {'object': issue, 'commentform': commentform, 'form': form}
    return render_to_response(template_name, RequestContext(request, template_context))
Esempio n. 23
0
def curation_remove(request, object_id, index):
    """docstring for curation_remove"""
    user = get_account(request.user.id)
    resource = get_one_or_404(Resource,
                              id=ObjectId(object_id),
                              user=request.user,
                              perm='can_delete')
    if resource.owner == resource.curations[int(index)].owner:

        messages.warning(
            request, 'You cannot delete the curation by the resource owner.')
        return HttpResponseRedirect(
            reverse('curation', args=[resource.id, index]))

    resource.curations[int(index)].delete()
    del resource.curations[int(index)]
    resource.save(reindex=True)

    increment_resource_crud('curation_remove', account=user)
    return HttpResponseRedirect(reverse('resource', args=[resource.id]))
Esempio n. 24
0
def curation_edit(request,
                  object_id,
                  index,
                  template_name='depot/curation_edit.html'):
    """Curation is an EmbeddedDocument, so can't be saved, needs to be edited, then Resource saved."""
    resource = get_one_or_404(Resource, id=ObjectId(object_id))
    object = resource.curations[int(index)]
    if not request.user.has_perm('can_edit', object):
        raise PermissionDenied()

    if request.method == 'POST':
        result = request.POST.get('result', '')
        if result == 'Cancel':
            return HttpResponseRedirect(
                reverse('curation', args=[resource.id, index]))
        form = CurationForm(request.POST, instance=object)
        if form.is_valid(request.user):
            user = get_account(request.user.id)
            curation = form.save(do_save=False)
            curation.item_metadata.update(author=user)
            curation.save()
            increment_resource_crud('curation_edit', account=user)
            # reload the resource, don't know why, but needed for mongoengine 0.6
            resource = Resource.objects.get(id=resource.id)
            if curation.owner == resource.owner:
                resource.tags = list(set(curation.tags))
            resource.save(reindex=True)
            return HttpResponseRedirect(
                reverse('curation', args=[resource.id, index]))
    else:
        form = CurationForm(instance=object)

    template_context = {
        'form': form,
        'object': object,
        'resource': resource,
        'new': False
    }

    return render_to_response(template_name, template_context,
                              RequestContext(request))
Esempio n. 25
0
def stories_detail(request, object_id, template_name='stories/stories_detail.html'):

    try:
        object = Curation.objects.get(pk=ObjectId(object_id))
        obj_type = 'curation'
    except Curation.DoesNotExist:
        object = get_one_or_404(Account, id=ObjectId(object_id))
        obj_type = 'account'
    except InvalidId:
        object = FlatPage.objects.get(pk=object_id)
        obj_type = 'flatpage'

    if request.method == 'POST':
        form = FileUploadForm(request.POST, request.FILES)
        if form.is_valid():
            handle_uploaded_file(request.FILES['picture_file'], object.id)
    else:
        form = FileUploadForm(initial={'picture_file': 'blah/de/blah.jpg'})

    template_context = {'object': get_story(object, obj_type), 'form': form}
    return render_to_response(template_name, RequestContext(request, template_context))
Esempio n. 26
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
Esempio n. 27
0
def curation_edit(request, object_id, index, template_name='depot/curation_edit.html'):
    """Curation is an EmbeddedDocument, so can't be saved, needs to be edited, then Resource saved."""
    resource = get_one_or_404(Resource, id=ObjectId(object_id))
    object = resource.curations[int(index)]
    if not request.user.has_perm('can_edit', object):
        raise PermissionDenied()

    if request.method == 'POST':
        result = request.POST.get('result', '')
        if result == 'Cancel':
            return HttpResponseRedirect(reverse('curation', args=[resource.id, index]))
        form = CurationForm(request.POST, instance=object)
        if form.is_valid(request.user):
            user = get_account(request.user.id)
            curation = form.save(do_save=False)
            curation.item_metadata.update(author=user)
            curation.save()
            increment_resource_crud('curation_edit', account=user)
            # reload the resource, don't know why, but needed for mongoengine 0.6
            resource = Resource.objects.get(id=resource.id)
            if curation.owner == resource.owner:
                resource.tags = list(set(curation.tags))
            resource.save(reindex=True)
            return HttpResponseRedirect(reverse('curation', args=[resource.id, index]))
    else:
        form = CurationForm(instance=object)

    template_context = {
        'form': form,
        'object': object,
        'resource': resource,
        'new': False
    }

    return render_to_response(
        template_name,
        template_context,
        RequestContext(request)
    )
Esempio n. 28
0
def remove(request, object_id, template_name='ecutils/confirm.html'):
    """docstring for delete"""
    object = get_one_or_404(Account, id=ObjectId(object_id), user=request.user, perm='can_delete')
    user = request.user
    if not (user.is_staff or object.local_id == str(user.id)):
        raise PermissionDenied()

    if request.POST:
        if request.POST['result'] == 'Cancel':
            return HttpResponseRedirect(reverse('accounts_detail', args=[object.id]))
        else:
            form = ConfirmForm(request.POST)
            if form.is_valid():
                object.delete()
                messages.success(request, 'Account has been removed, with any Resources, Curations, Collections and Issues.')
                return HttpResponseRedirect(reverse('accounts'))
    else:
        form = ConfirmForm(initial={ 'object_name': object.name })
    return render_to_response('ecutils/confirm.html', 
        RequestContext( request, 
            {   'form': form,
                'title': 'Delete this user account?'
            })
        )
Esempio n. 29
0
def account(request, template_name='youraliss/account.html'):
    object =  get_one_or_404(Account, local_id=str(request.user.id))
    return account_edit(request, object.id, template_name, next='youraliss')
Esempio n. 30
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))
Esempio n. 31
0
def lists(request, template_name='youraliss/lists.html'):
    account =  get_one_or_404(Account, local_id=str(request.user.id))
    objects = Collection.objects(owner=account).order_by('-name')
    template_context = {'account': account, 'objects': objects}
    return render_to_response(template_name, RequestContext(request, template_context))
Esempio n. 32
0
def resource_find(request, template_name='depot/resource_find.html'):
    """docstring for resource_find"""
    results = []
    pt_results = {}
    centre = None
    new_search = False

    result = request.REQUEST.get('result', '')
    if request.method == 'POST' or result:
        if result == 'Cancel':
            return HttpResponseRedirect(reverse('resource_list'))
        form = FindResourceForm(request.REQUEST)
        if form.is_valid():
            user = get_account(request.user.id)

            increment_queries(form.cleaned_data['kwords'], account=user)
            # print form.centre['loc'] if form.centre else None
            increment_locations(unicode(form.centre['loc']) if form.centre else None, account=user)

            for result in form.results:
                resource = get_one_or_404(Resource, id=ObjectId(result['res_id']))
                result['resource'] = resource
                # try:
                #     curation_index, curation = get_curation_for_user_resource(user, resource)
                #     print curation
                # except TypeError:
                #     curation_index = curation = None

                # curation_form = CurationForm(
                #         initial={'outcome': STATUS_OK},
                #         instance=curation)
                # resource_report_form = ResourceReportForm()
                # results.append({
                #     'resource_result': result,
                #     'curation': curation,
                #     'curation_form': curation_form,
                #     'resource_report_form': resource_report_form,
                #     'curation_index': curation_index
                # })
                if 'pt_location' in result:
                    pt_results.setdefault(tuple(result['pt_location'][0].split(', ')), []).append((result['res_id'], result['title']))
            centre = form.centre
    else:
        form = FindResourceForm(initial={'boost_location': settings.SOLR_LOC_BOOST_DEFAULT})
        new_search = True

    # hack cos map not showing if no centre point
    # map should show if pt_results anyway, but not happening
    # see also accounts.view.accounts_find

    # just north of Perth
    default_centre = {'location': ('56.5', '-3.5')}

    context = {
        'next': urlquote_plus(request.get_full_path()),
        'form': form,
        'results': form.results,
        'pt_results': pt_results,
        'centre': centre or default_centre if pt_results else None,
        'google_key': settings.GOOGLE_KEY,
        'show_map': pt_results,
        'new_search': new_search
    }
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 33
0
def location_remove(request, object_id, index):
    """docstring for location_remove"""
    resource = get_one_or_404(Resource, id=ObjectId(object_id), user=request.user, perm='can_edit')
    del resource.locations[int(index)]
    resource.save(author=get_account(request.user.id), reindex=True)
    return HttpResponseRedirect(reverse('resource_edit', args=[resource.id]))
Esempio n. 34
0
def resource_edit(request,
                  object_id,
                  template_name='depot/resource_edit.html'):
    """ edits an existing resource. Uses a wizard-like approach, so checks resource.collection_status
        and hands off to resource_* function handler
    """
    UPDATE_LOCS = 'Update locations'
    UPDATE_TAGS = 'Update tags'

    object = get_one_or_404(Resource,
                            id=ObjectId(object_id),
                            user=request.user,
                            perm='can_edit')

    # doc = ''
    # places = None
    template_info = _template_info(request.REQUEST.get('popup', ''))

    if request.method == 'POST':
        result = request.POST.get('result',
                                  '')  # or request.POST.get('result', '')
        if result == 'Cancel':
            return resource_edit_complete(request, object, template_info)
        resourceform = ShortResourceForm(request.POST, instance=object)
        eventform = EventForm(request.POST, instance=object.calendar_event)
        locationform = LocationUpdateForm(request.POST, instance=object)
        # shelflifeform = ShelflifeForm(request.POST, instance=object)

        if resourceform.is_valid(request.user) and locationform.is_valid(
        ) and eventform.is_valid():
            acct = get_account(request.user.id)
            object.locations = locationform.locations
            increment_resource_crud('resouce_edit', account=acct)

            # Event dates
            event_start = eventform.cleaned_data['start']
            if event_start:
                object.calendar_event = CalendarEvent(
                    start=event_start, end=eventform.cleaned_data['end'])
            else:
                object.calendar_event = None
            object = resourceform.save(do_save=False)
            try:
                object.save(author=acct, reindex=True)
                return resource_edit_complete(request, object, template_info)
            except OperationError:
                pass
    else:
        resourceform = ShortResourceForm(instance=object)
        locationform = LocationUpdateForm(instance=object)
        eventform = EventForm(instance=object.calendar_event)
        # shelflifeform = ShelflifeForm(instance=object)

    return render_to_response(
        template_name,
        RequestContext(
            request,
            {
                'template_info': template_info,
                'object': object,
                'resourceform': resourceform,
                'locationform': locationform,
                'eventform': eventform,  #'places': places,
                # 'tagsform': tagsform, #'shelflifeform': shelflifeform,
                'UPDATE_LOCS': UPDATE_LOCS,
                'UPDATE_TAGS': UPDATE_TAGS
            }))
Esempio n. 35
0
def user_detail(request, object_id, template_name='enginecab/user_detail.html'):
    object = get_one_or_404(Account, id=ObjectId(object_id))
    return accounts_detail(request, object.id, template_name)
Esempio n. 36
0
def lists(request, template_name='youraliss/lists.html'):    
    account =  get_one_or_404(Account, local_id=str(request.user.id))
    objects = Collection.objects(owner=account).order_by('-name')
    template_context = {'account': account, 'objects': objects}
    return render_to_response(template_name, RequestContext(request, template_context))
Esempio n. 37
0
def profile(request, object_id=None, template_name='youraliss/profile.html'):
    object =  get_one_or_404(Account, local_id=str(request.user.id))
    return accounts_detail(request, object.id, template_name)
Esempio n. 38
0
def locations_detail(request, object_id, template_name='enginecab/locations_detail.html'):
    object = get_one_or_404(Location, id=object_id)
    context = {'object': object}
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 39
0
def profile(request, object_id=None, template_name='youraliss/profile.html'):
    object =  get_one_or_404(Account, local_id=str(request.user.id))
    return accounts_detail(request, object.id, template_name)
Esempio n. 40
0
def user_password_reset(request, object_id):
    object = get_one_or_404(Account, id=ObjectId(object_id))
    from django.contrib.auth.views import password_reset
    return password_reset(request, extra_context={'def_email': object.email})
Esempio n. 41
0
def user_edit(request, object_id, template_name='enginecab/user_edit.html'):
    object = get_one_or_404(Account, id=ObjectId(object_id))
    return account_edit(request, object.id, template_name, next='cab_user_detail')
Esempio n. 42
0
def list_detail(request, object_id, template_name='youraliss/list_detail.html'):
    object = get_one_or_404(Collection, id=ObjectId(object_id))
    context = {'object': object}
    return render_to_response(template_name, RequestContext(request, context))
Esempio n. 43
0
def account(request, template_name='youraliss/account.html'):    
    object =  get_one_or_404(Account, local_id=str(request.user.id))
    return account_edit(request, object.id, template_name, next='youraliss')
Esempio n. 44
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))
Esempio n. 45
0
def resource_detail(request, object_id, template_name='depot/resource_detail.html'):
    object = get_one_or_404(Resource, id=ObjectId(object_id))
    increment_resources(object_id)

    return render_to_response(template_name,
        RequestContext( request, { 'object': object, 'yahoo_appid': settings.YAHOO_KEY, 'google_key': settings.GOOGLE_KEY }))