def generate_report(form, course_instance):
        report = ReportDescription()
        report.name = form.cleaned_data['name']
        report.delivery_start_date = form.cleaned_data['delivery_start_date']
        report.delivery_end_date = form.cleaned_data['delivery_end_date']
        report.feedback_return_date = form.cleaned_data['feedback_return_date']
        report.course_instance = course_instance
        report.feedback_template_key = ''
        report.save()

        report.store_file(form.cleaned_data['feedback_template'])
        document_url = upload_file(report, str(report.course_instance) + ' - ' + report.name + ' - Feedback Template')
        report.feedback_template_key = get_gdoc_key(document_url)

        report.save()

        groups = Group.objects.filter(leader__course_instance = course_instance)
        for group in groups:
            Report.generate_report(report, group)
# Criando o environment do simpy
simpyEnvironment = simpy.Environment()

# Building the simulation environment
simulationEnvironment = SimulationEnvironment(simpyEnvironment)

# Building the simulation region configuration
addRegion()

# Adding disturbing process
addDisturbing() # Processo que adiciona perturbação ao ambiente da simulação

# Adding Jobs
addJobs() # Processo que adiciona jobs ao ambiente da simulação

# Adding node
addNodes(simconfig.NODES_NUMBER)

# Building the distributed system controller
addController(sys.argv[3])

# Configuring enviroment on control functions
ControlFunctions.simpyEnvironment = simpyEnvironment

# Executando a simulação
simpyEnvironment.run(until=simconfig.SIMULATION_TIME)

# Generating report
Report.generate_report(sys.argv[3])