예제 #1
0
def docs_generate(request, object_id, object_type):
    """Start task to regenerate documentation"""
    exp_or_package = get_package_or_experiment(request, object_type, object_id)
    send_message(exp_or_package.owner.user.username, MessageStatus.INFO,
                 'Task to regenerate documentation started.')
    task_generate_docs.delay(object_type, object_id)
    return JsonResponse({})
예제 #2
0
def task_write_requirements_file(object_id, object_type):
    """Task to write requirements file to repository"""
    exp_or_package = get_package_or_experiment_without_request(object_type, object_id)
    language_helper = exp_or_package.language_helper()
    language_helper.write_requirements_file()
    username = exp_or_package.owner.user.username
    send_message(username, MessageStatus.SUCCESS, 'Dependencies updated in GitHub')
예제 #3
0
def dataschema_write(request, experiment_id):
    """Starts task to update the data schema in the GitHub repository,
    if a user clicked Save changes"""
    experiment = verify_and_get_experiment(request, experiment_id)
    task_write_data_schema.delay(experiment_id)
    send_message(request.user.username, MessageStatus.INFO,
                 'Task started to update data schema...')
    logger.info('started updating schema for: %s', experiment)
    return JsonResponse({'success': True})
예제 #4
0
def write_requirements_file(request, object_id, object_type):
    """View that starts task to write the requirements file for package or experiment"""
    get_package_or_experiment(request, object_type, object_id)
    task_write_requirements_file.delay(object_id, object_type)
    logger.info("manually updating dependencies for experiment %s of %s",
                request.user, object_id)
    send_message(request.user.username, MessageStatus.INFO,
                 'Task started to update dependencies...')
    return JsonResponse({'success': True})
예제 #5
0
def task_generate_docs(object_type, object_id):
    """Generates documentation for experiment or package"""
    exp_or_package = get_package_or_experiment_without_request(
        object_type, object_id)
    username = exp_or_package.owner.user.username
    if exp_or_package.docs.enabled:
        logger.info('start docs generation for %s (%s)', exp_or_package,
                    username)
        language_helper = exp_or_package.language_helper()
        language_helper.generate_documentation()
        send_message(username, MessageStatus.SUCCESS,
                     'Documentation regenerated.')
    else:
        send_message(
            username, MessageStatus.WARNING,
            'Before you can generate docs, first enable docs for your experiment.'
        )
예제 #6
0
def task_write_data_schema(experiment_id):
    """Task to write data schema to GitHub in schema/schema.json file
    By converting the schema to dictionary and then to Json"""
    experiment = Experiment.objects.get(pk=experiment_id)
    data_schema = experiment.schema
    data_schema_str = str(json.dumps(data_schema.to_dict()))
    logger.info('writing data schema for %s with schema: %s', experiment,
                data_schema_str)
    github_helper = GitHubHelper(experiment.owner.user,
                                 experiment.git_repo.name)
    github_helper.update_file('schema/schema.json',
                              'Updated data schema by MOOC workbench',
                              data_schema_str)
    username = experiment.owner.user.username
    send_message(username, MessageStatus.SUCCESS,
                 'Data schema successfully updated in GitHub')
    logger.info('writing data schema success for: %s', experiment,
                data_schema_str)
예제 #7
0
def task_remove_package(internalpackage_id):
    """Task to remove a published internal package"""
    package = InternalPackage.objects.get(pk=internalpackage_id)
    language_helper = package.language_helper()
    language_helper.remove_package()
    send_message(package.owner.user.username, 'success', 'Package removed successfully')