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])
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": {}, }))
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", ))
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, ))
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, ))
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"), ] }))
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
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])
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, ))
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, ))
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, ))
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": {} } } }))
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
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))
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
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, ))
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))
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, ))
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])
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)]
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, ))