From 78e1ccd7562d0d5975ab807b404ae2aba19a397d Mon Sep 17 00:00:00 2001 From: tanshu Date: Wed, 20 Jan 2021 09:56:39 +0530 Subject: [PATCH] After fixing the initial data. In the Hearing table made the changes 1. Unique constraint on next_hearing_date & case_id 2. Made case_id non nullable as without it the data is garbage 3. Made the court_status_id in hearing non nullable --- .../versions/74058d75b7a0_initial_commit.py | 3 +-- .../versions/87a06eaadd34_finish_import.py | 4 +++- luthor/luthor/models/hearing.py | 5 +++-- luthor/luthor/routers/case.py | 4 +--- luthor/luthor/schemas/hearing.py | 1 + .../cases/case-detail/case-detail.component.html | 3 +-- .../cases/case-detail/case-detail.component.ts | 12 ++++-------- .../case-detail/hearing-dialog.component.html | 1 - .../case-detail/hearing-dialog.component.ts | 16 ++++++---------- .../app/cases/case-list/case-list.component.html | 14 -------------- .../app/cases/case-list/case-list.component.ts | 2 -- otis/src/app/core/hearing.ts | 4 ++-- 12 files changed, 22 insertions(+), 47 deletions(-) diff --git a/luthor/alembic/versions/74058d75b7a0_initial_commit.py b/luthor/alembic/versions/74058d75b7a0_initial_commit.py index ef1aee2..d3f13d1 100644 --- a/luthor/alembic/versions/74058d75b7a0_initial_commit.py +++ b/luthor/alembic/versions/74058d75b7a0_initial_commit.py @@ -256,8 +256,7 @@ def upgrade(): sa.Column("bench", sa.Unicode(length=255), nullable=True), sa.Column("proceedings", sa.Unicode(length=2000), nullable=True), sa.Column("compliance_date", sa.Date(), nullable=True), - # sa.Column("next_hearing_date", sa.Date(), nullable=False), - sa.Column("next_hearing_date", sa.Date(), nullable=True), + sa.Column("next_hearing_date", sa.Date(), nullable=False), sa.Column("court_status_id", postgresql.UUID(as_uuid=True), nullable=True), sa.Column("old_court_status_id", sa.Integer(), nullable=True), sa.ForeignKeyConstraint(["case_id"], ["cases.id"], name=op.f("fk_hearings_case_id_cases")), diff --git a/luthor/alembic/versions/87a06eaadd34_finish_import.py b/luthor/alembic/versions/87a06eaadd34_finish_import.py index 0b96fbf..1810ade 100644 --- a/luthor/alembic/versions/87a06eaadd34_finish_import.py +++ b/luthor/alembic/versions/87a06eaadd34_finish_import.py @@ -98,7 +98,7 @@ def update_court_statuses(): op.drop_column("hearings", "old_court_status_id") op.drop_column("court_statuses", "old_id") # op.alter_column('cases', 'court_status_id', existing_type=postgresql.UUID(), nullable=False) - # op.alter_column('hearings', 'case_id', existing_type=postgresql.UUID(), nullable=False) + op.alter_column('hearings', 'court_status_id', existing_type=postgresql.UUID(), nullable=False) def update_courts(): @@ -213,6 +213,8 @@ def update_cases(): ) op.drop_column("hearings", "old_case_id") op.drop_column("cases", "old_id") + op.alter_column('hearings', 'case_id', existing_type=postgresql.UUID(), nullable=False) + op.create_unique_constraint(op.f("uq_hearings_next_hearing_date"), "hearings", ["next_hearing_date", "case_id"]) def update_auth(): diff --git a/luthor/luthor/models/hearing.py b/luthor/luthor/models/hearing.py index 27b542b..3543e8f 100644 --- a/luthor/luthor/models/hearing.py +++ b/luthor/luthor/models/hearing.py @@ -1,6 +1,6 @@ import uuid -from sqlalchemy import Column, Date, ForeignKey, Unicode, text +from sqlalchemy import Column, Date, ForeignKey, Unicode, UniqueConstraint, text from sqlalchemy.dialects.postgresql import UUID from sqlalchemy.orm import relationship @@ -9,6 +9,7 @@ from .meta import Base class Hearing(Base): __tablename__ = "hearings" + __table_args__ = (UniqueConstraint("next_hearing_date", "case_id"),) id = Column( "id", UUID(as_uuid=True), primary_key=True, server_default=text("gen_random_uuid()"), default=uuid.uuid4 @@ -26,7 +27,7 @@ class Hearing(Base): proceedings = Column("proceedings", Unicode(255), nullable=False, unique=True) next_hearing_date = Column("next_hearing_date", Date, nullable=False, index=True) compliance_date = Column("compliance_date", Date, nullable=False, index=True) - court_status_id = Column("court_status_id", UUID(as_uuid=True), ForeignKey("court_statuses.id"), nullable=True) + court_status_id = Column("court_status_id", UUID(as_uuid=True), ForeignKey("court_statuses.id"), nullable=False) court_status = relationship("CourtStatus", back_populates="hearings") case = relationship("Case", back_populates="hearings") diff --git a/luthor/luthor/routers/case.py b/luthor/luthor/routers/case.py index 10ca369..a2e21b3 100644 --- a/luthor/luthor/routers/case.py +++ b/luthor/luthor/routers/case.py @@ -299,9 +299,7 @@ def case_info(item: Case) -> schemas.Case: proceedings=h.proceedings if h.proceedings is not None else "", complianceDate=h.compliance_date, nextHearingDate=h.next_hearing_date, - courtStatus=schemas.CourtStatusLink(id=h.court_status.id, name=h.court_status.name) - if h.court_status is not None - else None, + courtStatus=schemas.CourtStatusLink(id=h.court_status.id, name=h.court_status.name), ) for h in item.hearings ], diff --git a/luthor/luthor/schemas/hearing.py b/luthor/luthor/schemas/hearing.py index 2b1333a..71ed304 100644 --- a/luthor/luthor/schemas/hearing.py +++ b/luthor/luthor/schemas/hearing.py @@ -40,6 +40,7 @@ class HearingIn(BaseModel): class Hearing(HearingIn): id_: Optional[uuid.UUID] + court_status: CourtStatusLink class Config: anystr_strip_whitespace = True diff --git a/otis/src/app/cases/case-detail/case-detail.component.html b/otis/src/app/cases/case-detail/case-detail.component.html index 9bb9048..3acbab0 100644 --- a/otis/src/app/cases/case-detail/case-detail.component.html +++ b/otis/src/app/cases/case-detail/case-detail.component.html @@ -438,7 +438,6 @@ Latest Status - -- Not Applicable -- {{ cs.name }} @@ -521,7 +520,7 @@ Status - {{ row.courtStatus?.name }} + {{ row.courtStatus.name }} diff --git a/otis/src/app/cases/case-detail/case-detail.component.ts b/otis/src/app/cases/case-detail/case-detail.component.ts index d9bc44d..5acdf44 100644 --- a/otis/src/app/cases/case-detail/case-detail.component.ts +++ b/otis/src/app/cases/case-detail/case-detail.component.ts @@ -351,14 +351,10 @@ export class CaseDetailComponent implements OnInit, AfterViewInit { const courtNumber: string = formValue.courtNumber; const itemNumber: string = formValue.itemNumber; const bench: string = formValue.bench; - const latestStatus = - formValue.latestStatus === '' - ? null - : new CourtStatus({ - id: formValue.latestStatus, - name: (this.courtStatuses.find((x) => x.id === formValue.latestStatus) as CourtStatus) - .name, - }); + const latestStatus = new CourtStatus({ + id: formValue.latestStatus, + name: (this.courtStatuses.find((x) => x.id === formValue.latestStatus) as CourtStatus).name, + }); const proceedings = formValue.proceedings; const complianceDate = formValue.complianceDate diff --git a/otis/src/app/cases/case-detail/hearing-dialog.component.html b/otis/src/app/cases/case-detail/hearing-dialog.component.html index 3b5977a..bb01e16 100644 --- a/otis/src/app/cases/case-detail/hearing-dialog.component.html +++ b/otis/src/app/cases/case-detail/hearing-dialog.component.html @@ -49,7 +49,6 @@ Latest Status - -- Not Applicable -- {{ cs.name }} diff --git a/otis/src/app/cases/case-detail/hearing-dialog.component.ts b/otis/src/app/cases/case-detail/hearing-dialog.component.ts index 38f1b79..83ca196 100644 --- a/otis/src/app/cases/case-detail/hearing-dialog.component.ts +++ b/otis/src/app/cases/case-detail/hearing-dialog.component.ts @@ -35,7 +35,7 @@ export class HearingDialogComponent implements OnInit { courtNumber: this.data.hearing.courtNumber, itemNumber: this.data.hearing.itemNumber, bench: this.data.hearing.bench, - latestStatus: this.data.hearing.courtStatus ? this.data.hearing.courtStatus.id : '', + latestStatus: this.data.hearing.courtStatus.id, proceedings: this.data.hearing.proceedings, complianceDate: this.data.hearing.complianceDate ? moment(this.data.hearing.complianceDate, 'DD-MMM-YYYY').toDate() @@ -52,15 +52,11 @@ export class HearingDialogComponent implements OnInit { this.data.hearing.itemNumber = formValue.itemNumber; this.data.hearing.bench = formValue.bench; - this.data.hearing.courtStatus = - formValue.latestStatus === '' - ? null - : new CourtStatus({ - id: formValue.latestStatus, - name: (this.data.courtStatuses.find( - (x) => x.id === formValue.latestStatus, - ) as CourtStatus).name, - }); + this.data.hearing.courtStatus = new CourtStatus({ + id: formValue.latestStatus, + name: (this.data.courtStatuses.find((x) => x.id === formValue.latestStatus) as CourtStatus) + .name, + }); this.data.hearing.proceedings = formValue.proceedings; this.data.hearing.complianceDate = formValue.complianceDate ? moment(formValue.complianceDate).format('DD-MMM-YYYY') diff --git a/otis/src/app/cases/case-list/case-list.component.html b/otis/src/app/cases/case-list/case-list.component.html index ccf3c01..af12d84 100644 --- a/otis/src/app/cases/case-list/case-list.component.html +++ b/otis/src/app/cases/case-list/case-list.component.html @@ -96,20 +96,6 @@ {{ row.receiptDate }} - - - Office - {{ row.department?.name }} / {{ row.office?.name }} - - - - - Lower Court Case Number - {{ row.lowerCourtCaseNumber }} - - diff --git a/otis/src/app/cases/case-list/case-list.component.ts b/otis/src/app/cases/case-list/case-list.component.ts index 1696d6e..56c2b1a 100644 --- a/otis/src/app/cases/case-list/case-list.component.ts +++ b/otis/src/app/cases/case-list/case-list.component.ts @@ -35,8 +35,6 @@ export class CaseListComponent implements OnInit { 'officeStatus', 'remarks', 'receiptDate', - 'office', - 'lowerCourtCaseNumber', ]; constructor(private route: ActivatedRoute, private fb: FormBuilder, private ser: CaseService) { diff --git a/otis/src/app/core/hearing.ts b/otis/src/app/core/hearing.ts index 222e8a0..e2f00e3 100644 --- a/otis/src/app/core/hearing.ts +++ b/otis/src/app/core/hearing.ts @@ -5,7 +5,7 @@ export class Hearing { courtNumber: string; itemNumber: string; bench: string; - courtStatus: CourtStatus | null; + courtStatus: CourtStatus; proceedings: string; complianceDate: string | null; nextHearingDate: string | null; @@ -15,7 +15,7 @@ export class Hearing { this.courtNumber = ''; this.itemNumber = ''; this.bench = ''; - this.courtStatus = null; + this.courtStatus = new CourtStatus(); this.proceedings = ''; this.complianceDate = null; this.nextHearingDate = null;