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_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_optionset(element, save=False): try: optionset = OptionSet.objects.get(uri=element.get('uri')) except OptionSet.DoesNotExist: optionset = OptionSet() set_common_fields(optionset, element) optionset.order = element.get('order') optionset.provider_key = element.get('provider_key') or '' conditions = get_m2m_instances(optionset, element.get('conditions'), Condition) if save and validate_instance(optionset): if optionset.id: logger.info('OptionSet created with uri %s.', element.get('uri')) else: logger.info('OptionSet %s updated.', element.get('uri')) optionset.save() optionset.conditions.set(conditions) optionset.imported = True return optionset
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_condition(element, save=False): try: condition = Condition.objects.get(uri=element.get('uri')) except Condition.DoesNotExist: condition = Condition() set_common_fields(condition, element) condition.source = get_foreign_field(condition, element.get('source'), Attribute) condition.target_option = get_foreign_field(condition, element.get('target_option'), Option) condition.relation = element.get('relation') condition.target_text = element.get('target_text') or '' if save and validate_instance(condition): if condition.id: logger.info('Catalog created with uri %s.', element.get('uri')) else: logger.info('Catalog %s updated.', element.get('uri')) condition.save() condition.imported = True return condition
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_attribute(element, parent_uri=False, save=False): try: if parent_uri is False: attribute = Attribute.objects.get(uri=element.get('uri')) else: attribute = Attribute.objects.get(key=element.get('key'), parent__uri=parent_uri) except Attribute.DoesNotExist: attribute = Attribute() set_common_fields(attribute, element) attribute.parent = get_foreign_field(attribute, parent_uri or element.get('parent'), Attribute) if save and validate_instance(attribute, AttributeLockedValidator, AttributeParentValidator, AttributeUniqueURIValidator): if attribute.id: logger.debug('Attribute created with uri %s.', element.get('uri')) else: logger.debug('Attribute %s updated.', element.get('uri')) attribute.save() attribute.imported = True return attribute
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_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_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_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_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_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