def build_survey(djsurvey_id): """Creates the SDAPS project and database for the survey. This process should be run on an already initialized survey that has a questionnaire written to it.""" with models.LockedSurvey(djsurvey_id): djsurvey = models.Survey.objects.get(id=djsurvey_id) assert(djsurvey.initialized == False) import sdaps.setuptex as setup from sdaps.setuptex import sdapsfileparser survey = model.survey.Survey.new(djsurvey.path) setup.write_latex_override_file(survey, draft=True) if not utils.atomic_latex_compile(djsurvey.path, 'questionnaire.tex', need_sdaps=True): return False # We now have the .sdaps file that can be parsed # Defaults survey.defs.print_questionnaire_id = False survey.defs.print_survey_id = True survey.add_questionnaire(model.questionnaire.Questionnaire()) # Parse qobjects try: sdapsfileparser.parse(survey) except Exception, e: sys.stderr.write("Caught an Exception while parsing the SDAPS file. The current state is:") sys.stderr.write(unicode(survey.questionnaire)) sys.stderr.write("\n------------------------------------\n") raise e # Last but not least calculate the survey id survey.calculate_survey_id() if not survey.check_settings(): sys.stderr.write(_("Some combination of options and project properties do not work. Aborted Setup.")) shutil.rmtree(survey.path()) return 1 setup.write_latex_override_file(survey) if not utils.atomic_latex_compile(djsurvey.path, 'questionnaire.tex', need_sdaps=True): return False survey.save() djsurvey.initialized = True djsurvey.title = survey.title if 'Author' in survey.info: djsurvey.author = survey.info['Author'] djsurvey.save() log.logfile.close()
def render_questionnaire(djsurvey_id): djsurvey = models.Survey.objects.get(id=djsurvey_id) # Must not yet be initialized assert(djsurvey.initialized == False) if utils.atomic_latex_compile(djsurvey.path, 'questionnaire.tex'): return True else: return False