mirror of
https://github.com/cssgunc/compass.git
synced 2025-04-09 14:00:15 -04:00
316 lines
9.0 KiB
Python
316 lines
9.0 KiB
Python
from sqlalchemy.orm import Session
|
|
from datetime import datetime
|
|
|
|
from ...entities import ResourceEntity
|
|
from ...models.enum_for_models import ProgramTypeEnum
|
|
from ...models.resource_model import Resource
|
|
|
|
resource1 = Resource(
|
|
id=1,
|
|
name="Resource 1",
|
|
summary="Helpful information for victims of domestic violence",
|
|
link="https://example.com/resource1",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 1, 10, 0, 0),
|
|
)
|
|
|
|
resource2 = Resource(
|
|
id=2,
|
|
name="Resource 2",
|
|
summary="Legal assistance resources",
|
|
link="https://example.com/resource2",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 2, 12, 30, 0),
|
|
)
|
|
|
|
resource3 = Resource(
|
|
id=3,
|
|
name="Resource 3",
|
|
summary="Financial aid resources",
|
|
link="https://example.com/resource3",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 3, 15, 45, 0),
|
|
)
|
|
|
|
resource4 = Resource(
|
|
id=4,
|
|
name="Resource 4",
|
|
summary="Counseling and support groups",
|
|
link="https://example.com/resource4",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 4, 9, 15, 0),
|
|
)
|
|
|
|
resource5 = Resource(
|
|
id=5,
|
|
name="Resource 5",
|
|
summary="Shelter and housing resources",
|
|
link="https://example.com/resource5",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 5, 11, 30, 0),
|
|
)
|
|
|
|
resources = [resource1, resource2, resource3, resource4, resource5]
|
|
|
|
resource_1 = Resource(
|
|
id=1,
|
|
name="National Domestic Violence Hotline",
|
|
summary="24/7 confidential support for victims of domestic violence",
|
|
link="https://www.thehotline.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 1, 10, 0, 0),
|
|
)
|
|
|
|
resource_2 = Resource(
|
|
id=2,
|
|
name="Legal Aid Society",
|
|
summary="Free legal assistance for low-income individuals",
|
|
link="https://www.legalaidnyc.org",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 2, 12, 30, 0),
|
|
)
|
|
|
|
resource_3 = Resource(
|
|
id=3,
|
|
name="Financial Empowerment Center",
|
|
summary="Free financial counseling and education services",
|
|
link="https://www1.nyc.gov/site/dca/consumers/get-free-financial-counseling.page",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 3, 15, 45, 0),
|
|
)
|
|
|
|
resource_4 = Resource(
|
|
id=4,
|
|
name="National Coalition Against Domestic Violence",
|
|
summary="Resources and support for victims of domestic violence",
|
|
link="https://ncadv.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 4, 9, 15, 0),
|
|
)
|
|
|
|
resource_5 = Resource(
|
|
id=5,
|
|
name="Safe Horizon",
|
|
summary="Shelter and support services for victims of violence",
|
|
link="https://www.safehorizon.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 5, 11, 30, 0),
|
|
)
|
|
|
|
resource_6 = Resource(
|
|
id=6,
|
|
name="National Sexual Assault Hotline",
|
|
summary="24/7 confidential support for survivors of sexual assault",
|
|
link="https://www.rainn.org",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 6, 14, 0, 0),
|
|
)
|
|
|
|
resource_7 = Resource(
|
|
id=7,
|
|
name="Victim Compensation Fund",
|
|
summary="Financial assistance for victims of crime",
|
|
link="https://ovc.ojp.gov/program/victim-compensation",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 7, 16, 45, 0),
|
|
)
|
|
|
|
resource_8 = Resource(
|
|
id=8,
|
|
name="Battered Women's Justice Project",
|
|
summary="Legal and technical assistance for victims of domestic violence",
|
|
link="https://www.bwjp.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 8, 10, 30, 0),
|
|
)
|
|
|
|
resource_9 = Resource(
|
|
id=9,
|
|
name="National Network to End Domestic Violence",
|
|
summary="Advocacy and resources for ending domestic violence",
|
|
link="https://nnedv.org",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 9, 13, 0, 0),
|
|
)
|
|
|
|
resource_10 = Resource(
|
|
id=10,
|
|
name="Economic Justice Project",
|
|
summary="Promoting economic security for survivors of domestic violence",
|
|
link="https://www.njep.org",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 10, 15, 15, 0),
|
|
)
|
|
|
|
resource_11 = Resource(
|
|
id=11,
|
|
name="Domestic Violence Legal Hotline",
|
|
summary="Free legal advice for victims of domestic violence",
|
|
link="https://www.womenslaw.org/find-help/national/hotlines",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 11, 9, 0, 0),
|
|
)
|
|
|
|
resource_12 = Resource(
|
|
id=12,
|
|
name="National Resource Center on Domestic Violence",
|
|
summary="Comprehensive information and resources on domestic violence",
|
|
link="https://nrcdv.org",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 12, 11, 30, 0),
|
|
)
|
|
|
|
resource_13 = Resource(
|
|
id=13,
|
|
name="Financial Assistance for Victims of Crime",
|
|
summary="Funding for expenses related to victimization",
|
|
link="https://ovc.ojp.gov/program/victim-assistance-funding",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 13, 14, 45, 0),
|
|
)
|
|
|
|
resource_14 = Resource(
|
|
id=14,
|
|
name="National Clearinghouse for the Defense of Battered Women",
|
|
summary="Legal resources and support for battered women",
|
|
link="https://www.ncdbw.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 14, 10, 0, 0),
|
|
)
|
|
|
|
resource_15 = Resource(
|
|
id=15,
|
|
name="Victim Connect Resource Center",
|
|
summary="Referral helpline for crime victims",
|
|
link="https://victimconnect.org",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 15, 13, 15, 0),
|
|
)
|
|
|
|
resource_16 = Resource(
|
|
id=16,
|
|
name="Economic Empowerment Program",
|
|
summary="Financial literacy and job readiness training for survivors",
|
|
link="https://www.purplepurse.com",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 16, 16, 30, 0),
|
|
)
|
|
|
|
resource_17 = Resource(
|
|
id=17,
|
|
name="National Domestic Violence Law Project",
|
|
summary="Legal information and resources for domestic violence survivors",
|
|
link="https://www.womenslaw.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 17, 9, 45, 0),
|
|
)
|
|
|
|
resource_18 = Resource(
|
|
id=18,
|
|
name="Victim Rights Law Center",
|
|
summary="Free legal services for victims of sexual assault",
|
|
link="https://victimrights.org",
|
|
program=ProgramTypeEnum.COMMUNITY,
|
|
created_at=datetime(2023, 6, 18, 12, 0, 0),
|
|
)
|
|
|
|
resource_19 = Resource(
|
|
id=19,
|
|
name="Financial Justice Project",
|
|
summary="Advocating for economic justice for survivors of violence",
|
|
link="https://www.financialjusticeproject.org",
|
|
program=ProgramTypeEnum.ECONOMIC,
|
|
created_at=datetime(2023, 6, 19, 15, 30, 0),
|
|
)
|
|
|
|
resource_20 = Resource(
|
|
id=20,
|
|
name="National Center on Domestic and Sexual Violence",
|
|
summary="Training and resources to end domestic and sexual violence",
|
|
link="http://www.ncdsv.org",
|
|
program=ProgramTypeEnum.DOMESTIC,
|
|
created_at=datetime(2023, 6, 20, 10, 15, 0),
|
|
)
|
|
|
|
resources1 = [
|
|
resource_1,
|
|
resource_2,
|
|
resource_3,
|
|
resource_4,
|
|
resource_5,
|
|
resource_6,
|
|
resource_7,
|
|
resource_8,
|
|
resource_9,
|
|
resource_10,
|
|
resource_11,
|
|
resource_12,
|
|
resource_13,
|
|
resource_14,
|
|
resource_15,
|
|
resource_16,
|
|
resource_17,
|
|
resource_18,
|
|
resource_19,
|
|
resource_20,
|
|
]
|
|
|
|
from sqlalchemy import text
|
|
from sqlalchemy.orm import Session, DeclarativeBase, InstrumentedAttribute
|
|
|
|
|
|
def reset_table_id_seq(
|
|
session: Session,
|
|
entity: type[DeclarativeBase],
|
|
entity_id_column: InstrumentedAttribute[int],
|
|
next_id: int,
|
|
) -> None:
|
|
"""Reset the ID sequence of an entity table.
|
|
|
|
Args:
|
|
session (Session) - A SQLAlchemy Session
|
|
entity (DeclarativeBase) - The SQLAlchemy Entity table to target
|
|
entity_id_column (MappedColumn) - The ID column (should be an int column)
|
|
next_id (int) - Where the next inserted, autogenerated ID should begin
|
|
|
|
Returns:
|
|
None"""
|
|
table = entity.__table__
|
|
id_column_name = entity_id_column.name
|
|
sql = text(f"ALTER SEQUENCe {table}_{id_column_name}_seq RESTART WITH {next_id}")
|
|
session.execute(sql)
|
|
|
|
|
|
def insert_test_data(session: Session):
|
|
"""Inserts fake resource data into the test session."""
|
|
global resources1
|
|
# Create entities for test resource data
|
|
entities = []
|
|
for resource in resources1:
|
|
entity = ResourceEntity.from_model(resource)
|
|
session.add(entity)
|
|
entities.append(entity)
|
|
|
|
# Reset table IDs to prevent ID conflicts
|
|
reset_table_id_seq(session, ResourceEntity, ResourceEntity.id, len(resources1) + 1)
|
|
|
|
# Commit all changes
|
|
session.commit()
|
|
|
|
|
|
def insert_fake_data(session: Session):
|
|
"""Inserts fake resource data into the test session."""
|
|
global resources
|
|
# Create entities for test resource data
|
|
entities = []
|
|
for resource in resources:
|
|
entity = ResourceEntity.from_model(resource)
|
|
session.add(entity)
|
|
entities.append(entity)
|
|
|
|
# Reset table IDs to prevent ID conflicts
|
|
reset_table_id_seq(session, ResourceEntity, ResourceEntity.id, len(resources) + 1)
|
|
|
|
# Commit all changes
|
|
session.commit()
|