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'))
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) )
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 }))
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 }))
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))
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]))
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) )
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 }))
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]))
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))
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) )
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 }))