def change_status(request, dataset_revision_id=None): """ Change dataset status :param request: :param dataset_revision_id: :return: JSON Object """ if dataset_revision_id: lifecycle = DatasetLifeCycleManager( user=request.user, dataset_revision_id=dataset_revision_id) action = request.POST.get('action') action = 'accept' if action == 'approve' else action # fix para poder llamar dinamicamente al metodo de lifecycle killemall = True if request.POST.get('killemall', False) == 'true' else False if action not in [ 'accept', 'reject', 'publish', 'unpublish', 'send_to_review', 'publish_all' ]: raise NoStatusProvidedException() if action == 'unpublish': getattr(lifecycle, action)(killemall) # Signal dataset_unpublished.send_robust( sender='change_status_view', id=lifecycle.dataset.id, rev_id=lifecycle.dataset_revision.id) elif action == 'publish_all': getattr(lifecycle, 'publish')(accept_children=True) else: getattr(lifecycle, action)() if action == 'accept': title = ugettext('APP-DATASET-APPROVED-TITLE'), description = ugettext('APP-DATASET-APPROVED-TEXT') elif action == 'reject': title = ugettext('APP-DATASET-REJECTED-TITLE'), description = ugettext('APP-DATASET-REJECTED-TEXT') elif action == 'publish': title = ugettext('APP-DATASET-PUBLISHED-TITLE'), description = ugettext('APP-DATASET-PUBLISHED-TEXT') elif action == 'unpublish': if killemall: description = ugettext('APP-DATASET-UNPUBLISHALL-TEXT') else: description = ugettext('APP-DATASET-UNPUBLISH-TEXT') title = ugettext('APP-DATASET-UNPUBLISH-TITLE'), elif action == 'send_to_review': title = ugettext('APP-DATASET-SENDTOREVIEW-TITLE'), description = ugettext('APP-DATASET-SENDTOREVIEW-TEXT') elif action == 'publish_all': title = ugettext('APP-DATASET-PUBLISHALL-TITLE'), description = ugettext('APP-DATASET-PUBLISHALL-TEXT') response = dict(status='ok', messages={ 'title': title, 'description': description }) # Limpio un poco response['result'] = DatasetDBDAO().get( request.user, dataset_revision_id=dataset_revision_id) account = request.account msprotocol = 'https' if account.get_preference( 'account.microsite.https') else 'http' response['result'][ 'public_url'] = msprotocol + "://" + request.preferences[ 'account.domain'] + reverse( 'manageDatasets.view', urlconf='microsites.urls', kwargs={ 'dataset_id': response['result']['dataset_id'], 'slug': '-' }) response['result'].pop('datastreams') response['result'].pop('visualizations') response['result'].pop('tags') response['result'].pop('sources') return JSONHttpResponse(json.dumps(response, cls=DateTimeEncoder))