Esempio n. 1
0
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
Esempio n. 2
0
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
Esempio n. 3
0
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
Esempio n. 4
0
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
Esempio n. 5
0
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
Esempio n. 6
0
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
Esempio n. 7
0
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
Esempio n. 8
0
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
Esempio n. 9
0
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
Esempio n. 10
0
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
Esempio n. 11
0
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
Esempio n. 12
0
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
Esempio n. 13
0
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
Esempio n. 14
0
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