def import_option(element): try: option = Option.objects.get(uri=element['uri']) except Option.DoesNotExist: log.info('Option not in db. Created with uri %s.', element['uri']) option = Option() try: option.optionset = OptionSet.objects.get(uri=element['optionset']) except OptionSet.DoesNotExist: log.info('OptionSet not in db. Skipping.') return option.uri_prefix = element['uri_prefix'] or '' option.key = element['key'] or '' option.comment = element['comment'] or '' option.order = element['order'] option.additional_input = element['additional_input'] for lang_code, lang_string, lang_field in get_languages(): set_lang_field(option, 'text', element, lang_code, lang_field) try: OptionUniquePathValidator(option).validate() except ValidationError as e: log.info('Option not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('Option saving to "%s".', element['uri']) option.save()
def import_section(element, catalog_uri=False, save=False): try: if catalog_uri is False: section = Section.objects.get(uri=element.get('uri')) else: section = Section.objects.get(key=element.get('key'), catalog__uri=catalog_uri) except Section.DoesNotExist: section = Section() set_common_fields(section, element) section.catalog = get_foreign_field(section, catalog_uri or element.get('catalog'), Catalog) section.order = element.get('order') or 0 set_lang_field(section, 'title', element) if save and validate_instance(section, SectionLockedValidator, SectionUniqueURIValidator): if section.id: logger.info('Section created with uri %s.', element.get('uri')) else: logger.info('Section %s updated.', element.get('uri')) section.save() section.imported = True return section
def import_option(element, parent_uri=False, save=False): if parent_uri is False: parent_uri = element.get('optionset') try: option = Option.objects.get(uri=element.get('uri'), optionset__uri=parent_uri) except Option.DoesNotExist: option = Option() set_common_fields(option, element) option.parent_uri = parent_uri option.optionset = get_foreign_field(option, parent_uri, OptionSet) option.order = element.get('order') option.additional_input = element.get('additional_input') set_lang_field(option, 'text', element) if save and validate_instance(option): if option.id: logger.info('Option created with uri %s.', element.get('uri')) else: logger.info('Option %s updated.', element.get('uri')) option.save() option.imported = True return option
def import_view(element): try: view = View.objects.get(uri=element['uri']) except View.DoesNotExist: log.info('View not in db. Created with uri %s.', element['uri']) view = View() view.uri_prefix = element['uri_prefix'] or '' view.key = element['key'] or '' view.comment = element['comment'] or '' view.template = element['template'] or '' for lang_code, lang_string, lang_field in get_languages(): set_lang_field(view, 'title', element, lang_code, lang_field) set_lang_field(view, 'help', element, lang_code, lang_field) try: ViewUniqueKeyValidator(view).validate() except ValidationError as e: log.info('View not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('View saving to "%s".', element['uri']) view.save()
def import_catalog(element, save=False): try: catalog = Catalog.objects.get(uri=element.get('uri')) except Catalog.DoesNotExist: catalog = Catalog() set_common_fields(catalog, element) catalog.order = element.get('order') or 0 set_lang_field(catalog, 'title', element) set_lang_field(catalog, 'help', element) if save and validate_instance(catalog, CatalogLockedValidator, CatalogUniqueURIValidator): if catalog.id: logger.info('Catalog created with uri %s.', element.get('uri')) else: logger.info('Catalog %s updated.', element.get('uri')) catalog.save() catalog.sites.add(Site.objects.get_current()) catalog.imported = True return catalog
def import_task(element, save=False): try: task = Task.objects.get(uri=element.get('uri')) except Task.DoesNotExist: task = Task() set_common_fields(task, element) set_lang_field(task, 'title', element) set_lang_field(task, 'text', element) task.start_attribute = get_foreign_field(task, element.get('start_attribute'), Attribute) task.end_attribute = get_foreign_field(task, element.get('end_attribute'), Attribute) task.days_before = element.get('days_before') task.days_after = element.get('days_after') conditions = get_m2m_instances(task, element.get('conditions'), Condition) if save and validate_instance(task): if task.id: logger.info('Task created with uri %s.', element.get('uri')) else: logger.info('Task %s updated.', element.get('uri')) task.save() task.sites.add(Site.objects.get_current()) task.conditions.set(conditions) task.imported = True return task
def import_section(element, parent_uri=False, save=False): if parent_uri is False: parent_uri = element.get('catalog') try: section = Section.objects.get(uri=element.get('uri'), catalog__uri=parent_uri) except Section.DoesNotExist: section = Section() set_common_fields(section, element) section.parent_uri = parent_uri section.catalog = get_foreign_field(section, parent_uri, Catalog) section.order = element.get('order') set_lang_field(section, 'title', element) if save and validate_instance(section): if section.id: logger.info('Section created with uri %s.', element.get('uri')) else: logger.info('Section %s updated.', element.get('uri')) section.save() section.imported = True return section
def import_option(element, optionset_uri=False, save=False): try: if optionset_uri is False: option = Option.objects.get(uri=element.get('uri')) else: option = Option.objects.get(key=element.get('key'), optionset__uri=optionset_uri) except Option.DoesNotExist: option = Option() set_common_fields(option, element) option.optionset = get_foreign_field( option, optionset_uri or element.get('optionset'), OptionSet) option.order = element.get('order') or 0 option.additional_input = element.get('additional_input') or False set_lang_field(option, 'text', element) if save and validate_instance(option, OptionLockedValidator, OptionUniqueURIValidator): if option.id: logger.info('Option created with uri %s.', element.get('uri')) else: logger.info('Option %s updated.', element.get('uri')) option.save() option.imported = True return option
def import_view(element, save=False): try: view = View.objects.get(uri=element.get('uri')) except View.DoesNotExist: view = View() set_common_fields(view, element) view.template = element.get('template') set_lang_field(view, 'title', element) set_lang_field(view, 'help', element) catalogs = get_m2m_instances(view, element.get('catalogs'), Catalog) if save and validate_instance(view): if view.id: logger.info('View created with uri %s.', element.get('uri')) else: logger.info('View %s updated.', element.get('uri')) view.save() view.sites.add(Site.objects.get_current()) view.catalogs.set(catalogs) view.imported = True return view
def import_question(element, questionset_uri=False, save=False): try: if questionset_uri is False: question = Question.objects.get(uri=element.get('uri')) else: question = Question.objects.get(key=element.get('key'), questionset__uri=questionset_uri) except Question.DoesNotExist: question = Question() set_common_fields(question, element) question.questionset = get_foreign_field( question, questionset_uri or element.get('questionset'), QuestionSet) question.attribute = get_foreign_field(question, element.get('attribute'), Attribute) question.is_collection = element.get('is_collection') or False question.is_optional = element.get('is_optional') or False question.order = element.get('order') or 0 set_lang_field(question, 'text', element) set_lang_field(question, 'help', element) set_lang_field(question, 'default_text', element) set_lang_field(question, 'verbose_name', element) set_lang_field(question, 'verbose_name_plural', element) question.default_option = get_foreign_field(question, element.get('default_option'), Option) question.default_external_id = element.get('default_external_id') or '' if element.get('widget_type') in get_widget_types(): question.widget_type = element.get('widget_type') else: question.widget_type = 'text' question.value_type = element.get('value_type') or '' question.maximum = element.get('maximum') question.minimum = element.get('minimum') question.step = element.get('step') question.unit = element.get('unit') or '' question.width = element.get('width') conditions = get_m2m_instances(question, element.get('conditions'), Condition) optionsets = get_m2m_instances(question, element.get('optionsets'), OptionSet) if save and validate_instance(question, QuestionLockedValidator, QuestionUniqueURIValidator): if question.id: logger.info('Question created with uri %s.', element.get('uri')) else: logger.info('Question %s updated.', element.get('uri')) question.save() question.conditions.set(conditions) question.optionsets.set(optionsets) question.imported = True return question
def import_section(element): try: section = Section.objects.get(uri=element['uri']) except Section.DoesNotExist: log.info('Section not in db. Created with uri %s.', element['uri']) section = Section() try: section.catalog = Catalog.objects.get(uri=element['catalog']) except Catalog.DoesNotExist: log.info('Catalog not in db. Skipping.') return section.uri_prefix = element['uri_prefix'] or '' section.key = element['key'] or '' section.comment = element['comment'] or '' section.order = element['order'] for lang_code, lang_string, lang_field in get_languages(): set_lang_field(section, 'title', element, lang_code, lang_field) try: SectionUniquePathValidator(section).validate() except ValidationError as e: log.info('Section not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('Section saving to "%s".', element['uri']) section.save()
def import_catalog(element): try: catalog = Catalog.objects.get(uri=element['uri']) except Catalog.DoesNotExist: log.info('Catalog not in db. Created with uri %s.', element['uri']) catalog = Catalog() catalog.uri_prefix = element['uri_prefix'] or '' catalog.key = element['key'] or '' catalog.comment = element['comment'] or '' catalog.order = element['order'] for lang_code, lang_string, lang_field in get_languages(): set_lang_field(catalog, 'title', element, lang_code, lang_field) try: CatalogUniqueKeyValidator(catalog).validate() except ValidationError as e: log.info('Catalog not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('Catalog saving to "%s".', element['uri']) catalog.save()
def import_task(element): try: task = Task.objects.get(uri=element['uri']) except Task.DoesNotExist: log.info('Task not in db. Created with uri %s.', element['uri']) task = Task() task.uri_prefix = element['uri_prefix'] or '' task.key = element['key'] or '' task.comment = element['comment'] or '' for lang_code, lang_string, lang_field in get_languages(): set_lang_field(task, 'title', element, lang_code, lang_field) set_lang_field(task, 'text', element, lang_code, lang_field) if element['start_attribute']: try: task.start_attribute = Attribute.objects.get( uri=element['start_attribute']) except Attribute.DoesNotExist: pass if element['end_attribute']: try: task.end_attribute = Attribute.objects.get( uri=element['end_attribute']) except Attribute.DoesNotExist: pass task.days_before = element['days_before'] task.days_after = element['days_after'] try: TaskUniqueKeyValidator(task).validate() except ValidationError as e: log.info('Task not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('Task saving to "%s".', element['uri']) task.save() task.conditions.clear() if element['conditions'] is not None: for condition in element['conditions']: try: task.conditions.add(Condition.objects.get(uri=condition)) except Condition.DoesNotExist: pass
def import_questionset(element, section_uri=False, questionset_uri=False, save=False): try: if section_uri is False: questionset = QuestionSet.objects.get(uri=element.get('uri')) else: if questionset_uri is False: questionset = QuestionSet.objects.get(key=element.get('key'), section__uri=section_uri) else: questionset = QuestionSet.objects.get( key=element.get('key'), section__uri=section_uri, questionset__uri=questionset_uri) except QuestionSet.DoesNotExist: questionset = QuestionSet() set_common_fields(questionset, element) questionset.section = get_foreign_field( questionset, section_uri or element.get('section'), Section) questionset.questionset = get_foreign_field( questionset, questionset_uri or element.get('questionset'), QuestionSet) questionset.attribute = get_foreign_field(questionset, element.get('attribute'), Attribute) questionset.is_collection = element.get('is_collection') or False questionset.order = element.get('order') or 0 set_lang_field(questionset, 'title', element) set_lang_field(questionset, 'help', element) set_lang_field(questionset, 'verbose_name', element) set_lang_field(questionset, 'verbose_name_plural', element) conditions = get_m2m_instances(questionset, element.get('conditions'), Condition) if save and validate_instance(questionset, QuestionSetLockedValidator, QuestionSetUniqueURIValidator): if questionset.id: logger.info('QuestionSet created with uri %s.', element.get('uri')) else: logger.info('QuestionSet %s updated.', element.get('uri')) questionset.save() questionset.conditions.set(conditions) questionset.imported = True return questionset
def import_questionset(element): try: questionset = QuestionSet.objects.get(uri=element['uri']) except QuestionSet.DoesNotExist: log.info('QuestionSet not in db. Created with uri %s.', element['uri']) questionset = QuestionSet() try: questionset.section = Section.objects.get(uri=element['section']) except Section.DoesNotExist: log.info('Section not in db. Skipping.') return questionset.uri_prefix = element['uri_prefix'] or '' questionset.key = element['key'] or '' questionset.comment = element['comment'] or '' if element['attribute']: try: questionset.attribute = Attribute.objects.get( uri=element['attribute']) except Attribute.DoesNotExist: pass questionset.is_collection = element['is_collection'] questionset.order = element['order'] for lang_code, lang_string, lang_field in get_languages(): set_lang_field(questionset, 'title', element, lang_code, lang_field) set_lang_field(questionset, 'help', element, lang_code, lang_field) set_lang_field(questionset, 'verbose_name', element, lang_code, lang_field) set_lang_field(questionset, 'verbose_name_plural', element, lang_code, lang_field) try: QuestionSetUniquePathValidator(questionset).validate() except ValidationError as e: log.info('QuestionSet not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('QuestionSet saving to "%s".', element['uri']) questionset.save() questionset.conditions.clear() if element['conditions'] is not None: for condition in element['conditions']: try: questionset.conditions.add( Condition.objects.get(uri=condition)) except Condition.DoesNotExist: pass
def import_question(element, parent_uri=False, save=False): if parent_uri is False: parent_uri = element.get('questionset') try: question = Question.objects.get(uri=element.get('uri'), questionset__uri=parent_uri) except Question.DoesNotExist: question = Question() set_common_fields(question, element) question.parent_uri = parent_uri question.questionset = get_foreign_field(question, parent_uri, QuestionSet) question.attribute = get_foreign_field(question, element.get('attribute'), Attribute) question.is_collection = element.get('is_collection') question.order = element.get('order') set_lang_field(question, 'text', element) set_lang_field(question, 'help', element) set_lang_field(question, 'verbose_name', element) set_lang_field(question, 'verbose_name_plural', element) question.widget_type = element.get('widget_type') or '' question.value_type = element.get('value_type') or '' question.maximum = element.get('maximum') question.minimum = element.get('minimum') question.step = element.get('step') question.unit = element.get('unit') or '' conditions = get_m2m_instances(question, element.get('conditions'), Condition) optionsets = get_m2m_instances(question, element.get('optionsets'), OptionSet) if save and validate_instance(question): if question.id: logger.info('Question created with uri %s.', element.get('uri')) else: logger.info('Question %s updated.', element.get('uri')) question.save() question.conditions.set(conditions) question.optionsets.set(optionsets) question.imported = True return question
def import_questionset(element, parent_uri=False, save=False): if parent_uri is False: parent_uri = element.get('section') try: questionset = QuestionSet.objects.get(uri=element.get('uri'), section__uri=parent_uri) except QuestionSet.DoesNotExist: questionset = QuestionSet() set_common_fields(questionset, element) questionset.parent_uri = parent_uri questionset.section = get_foreign_field(questionset, parent_uri, Section) questionset.attribute = get_foreign_field(questionset, element.get('attribute'), Attribute) questionset.is_collection = element.get('is_collection') questionset.order = element.get('order') set_lang_field(questionset, 'title', element) set_lang_field(questionset, 'help', element) set_lang_field(questionset, 'verbose_name', element) set_lang_field(questionset, 'verbose_name_plural', element) conditions = get_m2m_instances(questionset, element.get('conditions'), Condition) if save and validate_instance(questionset): if questionset.id: logger.info('QuestionSet created with uri %s.', element.get('uri')) else: logger.info('QuestionSet %s updated.', element.get('uri')) questionset.save() questionset.conditions.set(conditions) questionset.imported = True return questionset
def import_question(element): try: question = Question.objects.get(uri=element['uri']) except Question.DoesNotExist: log.info('QuestionSet not in db. Created with uri %s.', element['uri']) question = Question() try: question.questionset = QuestionSet.objects.get( uri=element['questionset']) except QuestionSet.DoesNotExist: log.info('QuestionSet not in db. Skipping.') return question.uri_prefix = element['uri_prefix'] or '' question.key = element['key'] or '' question.comment = element['comment'] or '' if element['attribute']: try: question.attribute = Attribute.objects.get( uri=element['attribute']) except Attribute.DoesNotExist: pass question.is_collection = element['is_collection'] question.order = element['order'] for lang_code, lang_string, lang_field in get_languages(): set_lang_field(question, 'text', element, lang_code, lang_field) set_lang_field(question, 'help', element, lang_code, lang_field) set_lang_field(question, 'verbose_name', element, lang_code, lang_field) set_lang_field(question, 'verbose_name_plural', element, lang_code, lang_field) question.widget_type = element['widget_type'] or '' question.value_type = element['value_type'] or '' question.maximum = element['maximum'] question.minimum = element['minimum'] question.step = element['step'] question.unit = element['unit'] or '' try: QuestionUniquePathValidator(question).validate() except ValidationError as e: log.info('Question not saving "%s" due to validation error (%s).', element['uri'], e) pass else: log.info('Question saving to "%s".', element['uri']) question.save() question.conditions.clear() if element['conditions'] is not None: for condition in element['conditions']: try: question.conditions.add(Condition.objects.get(uri=condition)) except Condition.DoesNotExist: pass question.optionsets.clear() if element['optionsets'] is not None: for condition in element['optionsets']: try: question.optionsets.add(OptionSet.objects.get(uri=condition)) except OptionSet.DoesNotExist: pass