def get(self, request):
        with db_context(db) as context:

            assessments = assessment_actions.list_assessments(context)

            return responses.Ok(
                [to_plain(assessment) for assessment in assessments])
Exemplo n.º 2
0
 def get(self, request, assessment_id, topic_id):
     with db_context(db) as context:
         topic = load_topic(context, assessment_id, topic_id)
         return responses.Ok(
             to_plain(topic, relationships={
                 "aspects": {},
             }))
Exemplo n.º 3
0
def create_organizations():
    with db_context(db) as context:

        organization_repository.create(context, organization_entities.Organization(
            name = "Primera organización",
            address = "mikasa 1",
            state = "mipueblo 1",
            country = "mipais 1",
            sector = "misector 1",
            web = "www.miweb1.com",
            description = "Esto es una descripción 1",
        ))

        organization_repository.create(context, organization_entities.Organization(
            name = "Segunda organización",
            address = "mikasa 2",
            state = "mipueblo 2",
            country = "mipais 2",
            sector = "misector 2",
            web = "www.miweb2.com",
            description = "Esto es una descripción 2",
        ))

        organization_repository.create(context, organization_entities.Organization(
            name = "Tercera organización",
            address = "mikasa 3",
            state = "mipueblo 3",
            country = "mipais 3",
            sector = "misector 3",
            web = "www.miweb3.com",
            description = "Esto es una descripción 3",
        ))
Exemplo n.º 4
0
def create_form_d(assessment, stakeholders):
    """
    D: Clients and other companies in the sector
    """
    with db_context(db) as context:

        form = form_repository.create(
            context,
            form_entities.Form(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["clients_and_partners"].id,
                slug="clients_and_partners_facts",
                name="Clientes y otras empresas del sector",
                description="Blu blu blu...",
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=1,
                slug="annual_turnover",
                title="Facturación (en euros)",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))
Exemplo n.º 5
0
def create_form_c(assessment, stakeholders):
    """
    C: Workers
    """
    with db_context(db) as context:

        form = form_repository.create(
            context,
            form_entities.Form(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["workers"].id,
                slug="workers_facts",
                name="Trabajadores",
                description="Blo blo blo...",
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=1,
                slug="workers_count",
                title=
                "Cantidad de trabajadores (equivalentes a jornada completa)",
                quick_description="",
                full_description="",
                examples="",
                data_type="integer",
                options=None,
            ))
Exemplo n.º 6
0
def create_form_e(assessment, stakeholders):
    """
    E: Social environment
    """
    with db_context(db) as context:

        form = form_repository.create(
            context,
            form_entities.Form(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["social_environment"].id,
                slug="social_environment_facts",
                name="Entorno social",
                description="Blz blz blz...",
            ))

        question_repository.create(
            context,
            form_entities.Question(form_id=form.id,
                                   order=1,
                                   slug="company_size",
                                   title="Tamaño de la empresa",
                                   quick_description="",
                                   full_description="",
                                   examples="",
                                   data_type="select",
                                   options={
                                       "caption":
                                       "Seleccione una opción",
                                       "choices": [
                                           ("micropyme", "micropyme"),
                                           ("pyme", "pyme"),
                                           ("gran empresa", "gran empresa"),
                                       ]
                                   }))
Exemplo n.º 7
0
def test_create():
    repo = OrganizationRepository(db)
    db.create_all_tables()

    with db_context(db) as context:
        organization = Organization(name="test 1", address="address 1")
        repo.create(context, organization)

    with db_context(db) as context:
        retrieved_org = db.retrieve_single_adt(
            context, Organization,
            select([db.organizations
                    ]).where(db.organizations.c.id == organization.id))

    assert retrieved_org.id == organization.id
    assert retrieved_org.name == organization.name
    assert retrieved_org.address == organization.address
Exemplo n.º 8
0
    def get(self, request, assessment_id):
        with db_context(db) as context:

            stakeholder_id = request.query_params.get('stakeholder')
            topics = topic_actions.list_topics(context, assessment_id,
                                               stakeholder_id)

            return responses.Ok([to_plain(topic) for topic in topics])
    def get(self, request, assessment_id):
        with db_context(db) as context:

            stakeholders = stakeholder_actions.list_stakeholders(
                context, assessment_id)

            return responses.Ok(
                [to_plain(stakeholder) for stakeholder in stakeholders])
Exemplo n.º 10
0
def create_topic_a4(assessment, stakeholders):
    """
    A4: Transparencia y participación democrática en la cadena de suministro
    """
    with db_context(db) as context:

        topic = topic_repository.create(
            context,
            topic_entities.Topic(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["providers"].id,
                slug="providers_democracy",
                code="A4",
                name=
                "Transparencia y participación democrática en la cadena de suministro",
                description="Bla bla bla...",
            ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 1,
            slug = "providers_democracy_1",
            code = "A4.1",
            title = "Transparencia y participación democrática de los proveedores / distribuidores",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 2,
            slug = "providers_democracy_2",
            code = "A4.2",
            title = "Promoción de la transparencia y participación democrática en toda la cadena de suministro",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))
Exemplo n.º 11
0
def create_topic_a3(assessment, stakeholders):
    """
    A3: Sostenibilidad medioambiental en la cadena de suministro
    """
    with db_context(db) as context:

        topic = topic_repository.create(
            context,
            topic_entities.Topic(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["providers"].id,
                slug="providers_sustainability",
                code="A3",
                name="Sostenibilidad medioambiental en la cadena de suministro",
                description="Bla bla bla...",
            ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 1,
            slug = "providers_sustainability_1",
            code = "A3.1",
            title = "Impacto medioambiental en la cadena de suministro",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 2,
            slug = "providers_sustainability_2",
            code = "A3.2",
            title = "Aspecto negativo: impacto medioambiental desproporcionado en la cadena de suministro",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = True,
        ))
Exemplo n.º 12
0
def create_topic_b2(assessment, stakeholders):
    """
    B2: Actitud solidaria en la gestión de recursos financieros
    """
    with db_context(db) as context:

        topic = topic_repository.create(
            context,
            topic_entities.Topic(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["owners_and_financers"].id,
                slug="owners_and_financers_justice_solidarity",
                code="B2",
                name="Actitud solidaria en la gestión de recursos financieros",
                description="Bla bla bla...",
            ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 1,
            slug = "owners_and_financers_justice_solidarity_1",
            code = "B2.1",
            title = "Gestión de los recursos financieros de forma solidaria y orientada al Bien Común",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 2,
            slug = "owners_and_financers_justice_solidarity_2",
            code = "B2.2",
            title = "Aspecto negativo: repartición injusta de los recursos financieros",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))
Exemplo n.º 13
0
 def get(self, request, assessment_id, form_id):
     with db_context(db) as context:
         form = load_form(context, assessment_id, form_id)
         return responses.Ok(
             to_plain(form,
                      relationships={
                          "questions": {},
                          "sub_forms": {
                              "relationships": {
                                  "sub_questions": {}
                              }
                          }
                      }))
Exemplo n.º 14
0
def create_assessments():
    with db_context(db) as context:

        assessment = assessment_repository.create(
            context,
            assessment_entities.Assessment(
                name="Balance del Bien Común",
                slug="ecg_balance_5_0_2",
                version="5.02",
                year="2017",
                description="Bla bla bla...",
            ))

        return assessment
Exemplo n.º 15
0
def assessment_data():
    with db_context(db) as context:
        db.truncate_table(context, db.assessments)
        db.truncate_table(context, db.stakeholders)
        db.truncate_table(context, db.forms)
        db.truncate_table(context, db.questions)
        db.truncate_table(context, db.sub_forms)
        db.truncate_table(context, db.sub_questions)
        db.truncate_table(context, db.topics)
        db.truncate_table(context, db.aspects)

    assessment = create_assessments()
    stakeholders = create_stakeholders(assessment)
    create_forms(assessment, stakeholders)
    create_topics(assessment, stakeholders)
 def get(self, request, assessment_id):
     with db_context(db) as context:
         assessment = load_assessment(context, assessment_id)
         return responses.Ok(to_plain(assessment))
Exemplo n.º 17
0
def create_stakeholders(assessment):
    stakeholders = {}

    with db_context(db) as context:

        stakeholder = stakeholder_repository.create(context, stakeholder_entities.Stakeholder(
            assessment_id = assessment.id,
            name = "Proveedores",
            slug = "providers",
            code = "A",
            description = "<p>Este grupo de interés incluye tanto proveedores directos como proveedores indirectos, y por " + \
            "tanto toda la cadena de suministro. Es aplicable a todo producto y servicio adquirido. Toda " + \
            "empresa es corresponsable de sus proveedores a través de sus decisiones de compra, la " + \
            "redacción formal de contratos y la posibilidad de infuir en ellos.</p>" + \
            "<p>Esta responsabilidad común depende en la práctica de las relaciones de poder en el mercado y " + \
            "de la longitud de la cadena de suministro. Es esencial cuando se compran productos y servicios " + \
            "especialmente críticos para los procesos de la cadena de suministro y conviene prestar atención " + \
            "si constituyen una gran importancia económica para la empresa o si por otro lado constituyen un " + \
            "riesgo para sus propios productos.</p>" + \
            "<p>Como guía, conviene realizar una lista de los proveedores más importantes de la empresa (que " + \
            "signifiquen aproximadamente el 80% del volumen de compra), así como de los productos y " + \
            "servicios adquiridos a estos proveedores en concreto. También deben considerarse productos y " + \
            "sectores en los que existe riesgo de impacto social y medioambiental negativo aunque el " + \
            "volumen de compra sea pequeño.</p>"
        ))

        stakeholders[stakeholder.slug] = stakeholder

        stakeholder = stakeholder_repository.create(context, stakeholder_entities.Stakeholder(
            assessment_id = assessment.id,
            name = "Propietarios y proveedores financieros",
            slug = "owners_and_financers",
            code = "B",
            description = "<p>Los propietarios de una empresa tienen derechos de utilización y decisión, pero también por eso " + \
            "mismo responsabilidad. El rol del propietario depende de la legalidad correspondiente.</p>" + \
            "<p>Los proveedores financieros aportan capital propio o externo. Los proveedores financieros son " + \
            "empresas de servicios de gestión de pagos, de seguros y de asesoramiento financiero.</p>"
        ))

        stakeholders[stakeholder.slug] = stakeholder

        stakeholder = stakeholder_repository.create(context, stakeholder_entities.Stakeholder(
            assessment_id = assessment.id,
            name = "Trabajadores",
            slug = "workers",
            code = "C",
            description = "<p>El grupo de interés C incluye a todas las personas cuya actividad es esencial para la empresa (= " + \
            "esencial para la actividad de la empresa). Forman parte del espacio y de la estructura " + \
            "organizativa y social de la empresa en uno de los siguientes ámbitos:</p>" + \
            "<ul>" + \
            "<li>Relación laboral contractual</li>" + \
            "<li>Personas que trabajan con un contrato temporal durante un período de al menos seis meses</li>" + \
            "<li>Personas que trabajan con un contrato de al menos cuatro horas por semana</li>" + \
            "<li>Personas que trabajan con un contrato por obra o servicio de forma periódica y recurrente (por " + \
            "ejemplo, en la campaña de navidad y verano)</li>" + \
            "</ul>"
        ))

        stakeholders[stakeholder.slug] = stakeholder

        stakeholder = stakeholder_repository.create(context, stakeholder_entities.Stakeholder(
            assessment_id = assessment.id,
            name = "Clientes y otras empresas del sector",
            slug = "clients_and_partners",
            code = "D",
            description = "</p>Este grupo de interés se refere al destinatario fnal de la actividad de la empresa, por ejemplo el " + \
            "consumidor de los productos y servicios, los minoristas, mayoristas y contratantes.</p>" + \
            "<p>Cuando hablamos de otras empresas nos referimos en primera instancia a las empresas que " + \
            "tienen el mismo segmento de mercado y en la misma región, pero también contemplamos el " + \
            "comportamiento y las relaciones de la empresa con otras empresas de otros sectores y regiones " + \
            "geográficas.</p>"
        ))

        stakeholders[stakeholder.slug] = stakeholder

        stakeholder = stakeholder_repository.create(context, stakeholder_entities.Stakeholder(
            assessment_id = assessment.id,
            name = "Entorno social",
            slug = "social_environment",
            code = "E",
            description = "<p>El grupo de interés E incluye todos los grupos de personas que se ven afectados indirectamente " + \
            "por la actividad de la empresa. Se consideran tantos grupos de personas como sea posible y " + \
            "tenga sentido en la práctica. Sin embargo hay diferencias dependiendo de cada valor de la " + \
            "matriz:</p>" + \
            "<ul>" + \
            "<li>E1: la humanidad como un todo común, incluidas las generaciones futuras (incluye a todas las " + \
            "personas como seres humanos racionales con valores y signifcado existencial).</li>" + \
            "<li>E2: la comunidad como un gran grupo social que comparte un espacio determinado. Éste " + \
            "puede ser físico o virtual (por ejemplo, todas las personas que viven en una región o todos los " + \
            "usuarios de internet). El grupo tiene reglas e instituciones comunes para lograr un " + \
            "entendimiento común. Una empresa puede pertenecer a varias comunidades (municipio, " + \
            "región, estado, comunidad científca, etc.).</li>" + \
            "<li>E3: entorno ecológico global, incluidos los recursos naturales de las generaciones futuras.</li>" + \
            "<li>E4: grupos de interés relevantes para la empresa, por ejemplo vecinos u ONGs como " + \
            "“defensores” de los derechos sociales.</li>" + \
            "</ul>"
        ))

        stakeholders[stakeholder.slug] = stakeholder

    return stakeholders
Exemplo n.º 18
0
def create_topic_a2(assessment, stakeholders):
    """
    A2: Justicia y solidaridad en la cadena de suministro
    """
    with db_context(db) as context:

        topic = topic_repository.create(
            context,
            topic_entities.Topic(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["providers"].id,
                slug="providers_justice_solidarity",
                code="A2",
                name="Justicia y solidaridad en la cadena de suministro",
                description="Bla bla bla...",
            ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 1,
            slug = "providers_justice_solidarity_1",
            code = "A2.1",
            title = "Actitud ética con proveedores / distribuidores directos",
            quick_description = "La solidaridad y la justicia al tratar con proveedores directos se refeja especialmente en la " + \
            "organización de las relaciones comerciales en forma de precios justos, condiciones de pago y " + \
            "entrega. A parte de esto, es importante realizar un reparto justo de los ingresos dentro de la " + \
            "cadena de valor para garantizar una existencia económica de todas las partes implicadas.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 2,
            slug = "providers_justice_solidarity_2",
            code = "A2.2",
            title = "Promoción de la justicia y la solidaridad en toda la cadena de suministro",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = False,
        ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 3,
            slug = "providers_justice_solidarity_3",
            code = "A2.3",
            title = "Aspecto negativo: abuso de poder de mercado frente a proveedores / distribuidores",
            quick_description = "Nulla quis lorem ut libero malesuada feugiat. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem." + \
            "Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Donec rutrum congue leo eget malesuada. Curabitur aliquet quam id dui posuere blandit." + \
            "Quisque velit nisi, pretium ut lacinia in, elementum id enim. Vivamus suscipit tortor eget felis porttitor volutpat." + \
            "Cras ultricies ligula sed magna dictum porta. Vivamus suscipit tortor eget felis porttitor volutpat.",
            valorative_questions = "",
            mandatory_indicators = "",
            evaluation_levels = "",
            explanatory_notes = "",
            is_negative = True,
        ))
Exemplo n.º 19
0
def create_form_a(assessment, stakeholders):
    """
    A: Providers
    """
    with db_context(db) as context:

        form = form_repository.create(
            context,
            form_entities.Form(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["providers"].id,
                slug="provider_facts",
                name="Proveedores",
                description="Ble ble ble...",
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=1,
                slug="total_provider_expenses",
                title="Gastos totales en proveedores (en Euros)",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))

        sub_form = sub_form_repository.create(
            context,
            form_entities.SubForm(
                form_id=form.id,
                order=2,
                slug="providers_sectors",
                caption=
                "Introduzca los sectores más importantes a los que realiza compras",
                description="",
            ))

        sub_question_repository.create(
            context,
            form_entities.SubQuestion(sub_form_id=sub_form.id,
                                      order=1,
                                      columns=3,
                                      slug="provider_sector",
                                      title="Sector",
                                      description="",
                                      data_type="select",
                                      options={
                                          "caption": "Seleccione del catálogo",
                                          "choices": ECONOMIC_SECTORS
                                      }))

        sub_question_repository.create(
            context,
            form_entities.SubQuestion(sub_form_id=sub_form.id,
                                      order=2,
                                      columns=3,
                                      slug="provider_description",
                                      title="Descripción",
                                      description="",
                                      data_type="string",
                                      options=None))

        sub_question_repository.create(
            context,
            form_entities.SubQuestion(sub_form_id=sub_form.id,
                                      order=3,
                                      columns=3,
                                      slug="provider_region",
                                      title="Región de origen",
                                      description="",
                                      data_type="select",
                                      options={
                                          "caption": "Seleccione del catálogo",
                                          "choices": REGIONS
                                      }))

        sub_question_repository.create(
            context,
            form_entities.SubQuestion(sub_form_id=sub_form.id,
                                      order=4,
                                      columns=2,
                                      slug="provider_expenses",
                                      title="Gastos",
                                      description="",
                                      data_type="currency",
                                      options=None))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=3,
                slug="other_providers_region",
                title="Región de origen principal del resto de proveedores",
                quick_description="",
                full_description="",
                examples="",
                data_type="select",
                options={
                    "caption": "Seleccione del catálogo",
                    "choices": REGIONS
                }))

        question_repository.create(
            context,
            form_entities.Question(form_id=form.id,
                                   order=4,
                                   slug="other_providers_expenses",
                                   title="Gastos del resto de proveedores",
                                   quick_description="",
                                   full_description="",
                                   examples="",
                                   data_type="currency",
                                   options=None))
Exemplo n.º 20
0
def create_form_b(assessment, stakeholders):
    """
    B: Owners and financial providers
    """
    with db_context(db) as context:

        form = form_repository.create(
            context,
            form_entities.Form(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["owners_and_financers"].id,
                slug="owners_and_financers_facts",
                name="Propietarios y proveedores financieros",
                description="Bli bli bli...",
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=1,
                slug="operating_profit",
                title="Beneficios (EBIT)",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=2,
                slug="financing_cost",
                title="Costes financieros",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=3,
                slug="capital_return",
                title="Rendimientos de capital",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=4,
                slug="assets_balance",
                title="Activo (balance financiero)",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=5,
                slug="fixed_assets_additions",
                title="Altas de activos fijos",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))

        question_repository.create(
            context,
            form_entities.Question(
                form_id=form.id,
                order=6,
                slug="financial_assets_and_cash",
                title="Activos financieros y saldos de caja",
                quick_description="",
                full_description="",
                examples="",
                data_type="currency",
                options=None,
            ))
Exemplo n.º 21
0
    def get(self, request, assessment_id):
        with db_context(db) as context:

            forms = form_actions.list_forms(context, assessment_id)

            return responses.Ok([to_plain(form) for form in forms])
Exemplo n.º 22
0
def test_sql_persistence():
    db = SQLADTDatabase({"DB_NAME": "test", "ECHO": False})

    db.add_adt_table(Card, "cards")
    db.add_adt_table(Deck, "decks")
    db.create_all_tables()

    with db_context(db) as context:

        db.truncate_all_tables(context)

        deck = db.insert_adt(context, db.decks, Deck(name="Test deck"))

        card_1 = db.insert_adt(
            context, db.cards,
            Card(
                deck_id=deck.id,
                title="Test card #1",
                strength=10,
                defense=1,
            ))

        card_2 = db.insert_adt(
            context, db.cards,
            Card(
                deck_id=deck.id,
                title="Test card #2",
                strength=8,
                defense=7,
            ))

    with db_context(db) as context:
        r_deck = db.retrieve_single_adt(
            context, Deck,
            select([db.decks]).where(db.decks.c.id == deck.id))

    assert r_deck.id == deck.id
    assert r_deck.name == deck.name

    with db_context(db) as context:
        r_cards = db.retrieve_adts(context, Card, select([db.cards]))

    assert len(r_cards) == 2
    assert card_1.id in [card.id for card in r_cards]
    assert card_2.id in [card.id for card in r_cards]

    with db_context(db) as context:
        r_decks = db.retrieve_joined_adts(
            context, Deck, {
                "decks": Deck,
                "cards": Card
            },
            select([db.decks, db.cards], use_labels=True).select_from(
                outerjoin(db.decks, db.cards,
                          db.decks.c.id == db.cards.c.deck_id)).where(
                              db.decks.c.id == deck.id))

    assert len(r_decks) == 1

    r_deck = r_decks[0]
    assert r_deck.id == deck.id
    assert r_deck.name == deck.name

    assert len(context.cards(r_deck)) == 2
    assert card_1.id in [card.id for card in context.cards(r_deck)]
    assert card_2.id in [card.id for card in context.cards(r_deck)]
Exemplo n.º 23
0
def create_topic_a1(assessment, stakeholders):
    """
    A1: Dignidad humana en la cadena de suministro
    """
    with db_context(db) as context:

        topic = topic_repository.create(
            context,
            topic_entities.Topic(
                assessment_id=assessment.id,
                stakeholder_id=stakeholders["providers"].id,
                slug="providers_human_dignity",
                code="A1",
                name="Dignidad humana en la cadena de suministro",
                description="Bla bla bla...",
            ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 1,
            slug = "providers_human_dignity_1",
            code = "A1.1",
            title = "Condiciones de trabajo e impacto social en la cadena de suministro",
            quick_description = "El objetivo es que la empresa se informe activamente sobre los productos y servicios que " + \
            "compra, y contribuya, gracias a las medidas adecuadas, a crear impactos positivos y condiciones " + \
            "dignas en toda su cadena de suministro.",
            valorative_questions = "<ul>" + \
            "<li>¿Qué productos y servicios compra la empresa? ¿Según qué criterios se seleccionan los proveedores?</li>" + \
            "<li>¿Cómo se evalúan los riesgos de impactos sociales negativos en la cadena de suministro?</li>" + \
            "<li>¿Cómo se detectan posibles vulneraciones de la dignidad humana en la cadena de suministro?</li>" + \
            "<li>¿Qué hace la empresa para infuir en los proveedores de tal manera que la dignidad humana esté en el centro de las relaciones con sus grupos de interés?</li>" + \
            "<li>¿Qué certifcados tienen los productos comprados?</li>" + \
            "</ul>",
            mandatory_indicators = "<ul>" + \
            "<li>Tabla de productos y servicios adquiridos y su % con respecto al gasto total de compra</li>" + \
            "<li>% de productos y servicios producidos bajo condiciones justas</li>" + \
            "</ul>",
            evaluation_levels = "" + \
            "<strong>Ejemplar</strong>" + \
            "<p>La gestión ética de los suministros es parte de la identidad empresarial y su posicionamiento de " + \
            "mercado. Procesos de compra ética se implementan de manera innovadora en todas las áreas de la empresa.</p>" + \
            "<strong>Experimentado</strong>" + \
            "<p>En la empresa existen procedimientos de compra que explican cómo se evalúan, seleccionan y apoyan los " + \
            "proveedores de acuerdo a criterios sociales, de tal manera que se cumpla con la política que contiene " + \
            "los valores de la empresa. La mayor parte de los proveedores principales tienen condiciones laborales " + \
            "por encima de la media.</p>" + \
            "<strong>Avanzado</strong>" + \
            "<p>La empresa implementa las primeras medidas para establecer condiciones laborales dignas en los " + \
            "proveedores. Además, se evalúa toda la cadena de suministro respecto a las condiciones de trabajo.</p>" + \
            "<strong>Primeros pasos</strong>" + \
            "<p>La empresa evalúa algunos de los proveedores principales respecto a las condiciones laborales y " + \
            "desarrolla estrategias y/o medidas de mejora. Se cumplen los primeros criterios excluyentes de compra.</p>" + \
            "<strong>Punto de partida</strong>" + \
            "<p>La empresa cumple con la ley respecto a las normas laborales por parte de los proveedores. A parte " + \
            "de esto, no hay más compromiso social por parte del proveedor.</p>",
            explanatory_notes = "" + \
            "<p>Las políticas de compra deben evaluarse según sus procedimientos y/o criterios " + \
            "excluyentes: cómo se identifcan los riesgos de impacto social negativo en la cadena de " + \
            "suministro, cómo se evalúan, seleccionan y fomentan los proveedores según sus " + \
            "impactos sociales.</p>" + \
            "<strong>Criterios de Evaluación:</strong>" + \
            "<ul>" + \
            "<li>Los proveedores tienen una política laboral que promueve la dignidad humana (C1).</li>" + \
            "<li>Los proveedores mismos tienen una política de compra que promueve la dignidad " + \
            "humana (ver A1).</li>" + \
            "<li>Los proveedores tienen una actitud ética respecto al uso de recursos fnancieros y sus " + \
            "clientes (ver B1 y D1) y contribuyen al Bien Común con sus productos y servicios (ver " + \
            "E1).</li>" + \
            "</ul>" + \
            "<strong>Los siguientes puntos pueden ser de ayuda a la hora de hacer la autoevaluación y/o " + \
            "para interpretar correctamente este aspecto:</strong>" + \
            "<ul>" + \
            "<li>Aquellas áreas de la cadena de suministro asociadas a altos riesgos de impacto social " + \
            "negativo son las más importantes. Cuando una empresa, en este tipo de cadenas de " + \
            "suministro, actúa muy por encima del estándar, esto puede infuir positivamente en su " + \
            "puntuación.</li>" + \
            "<li>Los impactos sociales no suelen ocurrir en los proveedores directos sino mucho antes " + \
            "en la cadena de valor. Por ejemplo, las condiciones laborales de un servicio de TIC " + \
            "probablemente sean menos críticas que las de la producción previa del hardware " + \
            "utilizado. El centro de atención deber ponerse en aquellas partes de la cadena de " + \
            "valor que tienen el impacto mayor.</li>" + \
            "<li>A la medida que la empresa crece, la política de compras se vuelve más importante y " + \
            "más compleja. De esta manera crecen los riesgos y por tanto la exigencia de políticas " + \
            "y procedimientos para garantizar una compra responsable.</li>" + \
            "<li>También se puntúa si solo algunos, muchos o todos los proveedores principales son " + \
            "evaluados o seleccionados de acuerdo a si vulneran – o no – la dignidad humana.</li>" + \
            "</ul>",
            is_negative = False,
        ))

        aspect_repository.create(context, topic_entities.Aspect(
            topic_id = topic.id,
            order = 2,
            slug = "providers_human_dignity_2",
            code = "A1.2",
            title = "Aspecto negativo: vulneración de la dignidad humana en la cadena de suministro",
            quick_description = "La producción de muchos bienes de uso diario está relacionada con graves problemas sociales. " + \
            "Debido a los procesos de producción globales y complejos, casi no hay ninguna empresa ni " + \
            "ninguna persona que pueda evitar toda vulneración de la dignidad humana en la cadena de " + \
            "suministro.",
            valorative_questions = "<ul>" + \
            "<li>¿Qué áreas de la cadena de suministro tienen riesgos importantes de vulneración " + \
            "de la dignidad humana?</li>" + \
            "<li>¿Qué medidas se toman para reducir o evitar estos impactos?</li>" + \
            "</ul>",
            mandatory_indicators = "<ul>" + \
            "<li>% de productos comprados con riesgos sociales y/o sin riesgo</li>" + \
            "</ul>",
            evaluation_levels = "<ul>" + \
            "<li><strong>Punto de partida</strong>: la empresa tiene bajos riesgos de impacto social negativo en la " + \
            "cadena de suministro o reduce los posibles impactos al mínimo.</li>" + \
            "<li><strong>20 puntos negativos</strong>: la empresa adquiere productos y servicios de sectores con " + \
            "impacto social negativo. Las medidas implementadas hasta ahora, todavía no reducen " + \
            "el impacto sufcientemente.</li>" + \
            "<li><strong>100 puntos negativos</strong>: la empresa compra productos y servicios esenciales de " + \
            "industrias con impacto social negativo y apenas muestra ninguna acción para mejorar " + \
            "su impacto.</li>" + \
            "<li><strong>200 puntos negativos</strong>: la empresa contribuye al impacto social negativo de manera " + \
            "decisiva.</li>" + \
            "</ul>",
            explanatory_notes = "" + \
            "<p>El centro de atención debe ponerse explícitamente en aquellos productos y servicios " + \
            "que tienen un alto riesgo de vulneración de la dignidad humana. Los riesgos pueden " + \
            "deberse al origen de los productos y servicios (por ejemplo, países con estándares " + \
            "laborales bajos) o al sector al que pertenecen.</p>",
            is_negative = True,
        ))