Пример #1
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'))
Пример #2
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)
    )
Пример #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'))
Пример #4
0
def resource_add(request, template_name='depot/resource_edit.html'):
    """adds a new resource"""

    import urllib

    # seems url becomes http:/ on server- no idea why
    # defensive coding ftw.
    req_path = urllib.unquote(request.path).replace(
        'http://', 'http~~').replace('http:/', 'http~~').replace('||', '\n')
    req_data = get_req_data(req_path)
    debug_info = (req_path, req_data)

    template_info = _template_info(req_data.get('popup', ''))

    if request.method == 'POST':
        if request.POST.get('result', '') == 'Cancel':
            return resource_edit_complete(request, None, template_info)
        form = ShortResourceForm(request.POST)
        if form.is_valid(request.user):
            resource = Resource(**form.cleaned_data)
            # resource.metadata.author = str(request.user.id)
            try:
                # resource.collection_status = COLL_STATUS_LOC_CONF
                user = get_account(request.user.id)
                resource.owner = user
                # save will create default moderation and curation using owner acct
                resource.save(author=user, reindex=True)
                increment_resource_crud('resouce_add', account=user)
                # resource.index()
                # if popup:
                #     return HttpResponseRedirect(reverse('resource-popup-close'))
                return HttpResponseRedirect(
                    '%s?popup=%s' %
                    (reverse('resource_edit',
                             args=[resource.id]), template_info['popup']))
            except OperationError:
                pass

    else:
        description = req_data.get('t', '')
        initial = {
            'uri': req_data.get('page', '').replace('http~~', 'http://'),
            'title': req_data.get('title', ''),
            'description': description[:1250]
        }
        form = ShortResourceForm(initial=initial)

    return render_to_response(
        template_name,
        RequestContext(
            request, {
                'resourceform': form,
                'template_info': template_info,
                'debug_info': debug_info
            }))
Пример #5
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  }))
Пример #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))
Пример #7
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]))
Пример #8
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)
    )
Пример #9
0
def resource_add(request, template_name='depot/resource_edit.html'):
    """adds a new resource"""

    import urllib

    # seems url becomes http:/ on server- no idea why
    # defensive coding ftw.
    req_path = urllib.unquote(request.path).replace('http://', 'http~~').replace('http:/', 'http~~').replace('||', '\n')
    req_data = get_req_data(req_path)
    debug_info = (req_path, req_data)

    template_info = _template_info(req_data.get('popup', ''))

    if request.method == 'POST':
        if request.POST.get('result', '') == 'Cancel':
            return resource_edit_complete(request, None, template_info)
        form = ShortResourceForm(request.POST)
        if form.is_valid(request.user):
            resource = Resource(**form.cleaned_data)
            # resource.metadata.author = str(request.user.id)
            try:
                # resource.collection_status = COLL_STATUS_LOC_CONF
                user = get_account(request.user.id)
                resource.owner = user
                # save will create default moderation and curation using owner acct
                resource.save(author=user, reindex=True)
                increment_resource_crud('resouce_add', account=user)
                # resource.index()
                # if popup:
                #     return HttpResponseRedirect(reverse('resource-popup-close'))
                return HttpResponseRedirect('%s?popup=%s' % (reverse('resource_edit', args=[resource.id]), template_info['popup']))
            except OperationError:
                pass

    else:
        description= req_data.get('t', '')
        initial = {
            'uri': req_data.get('page', '').replace('http~~', 'http://'),
            'title': req_data.get('title', ''),
            'description': description[:1250]
            }
        form = ShortResourceForm(initial=initial)

    return render_to_response(template_name,
        RequestContext( request, {'resourceform': form, 'template_info': template_info, 'debug_info': debug_info }))
Пример #10
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]))
Пример #11
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))
Пример #12
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)
    )
Пример #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
            }))