Skip to content

Commit e0affc3

Browse files
committed
feat: initial content updates
1 parent cf42a43 commit e0affc3

12 files changed

Lines changed: 170 additions & 527 deletions

File tree

api/dto.py

Lines changed: 61 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from datetime import date
2-
from typing import List, Optional, Self
2+
from typing import Self
33

44
from pydantic import BaseModel, Field
55

@@ -10,34 +10,34 @@
1010
class ParcelResponseBody(BaseModel):
1111
pin: str
1212
address: str
13-
distance: Optional[str]
14-
neighborhood: Optional[str]
15-
assessed_value: Optional[str]
16-
taxable_value: Optional[str]
17-
sale_price: Optional[str]
18-
sale_date: Optional[date]
19-
property_class: Optional[str]
20-
year_built: Optional[int]
21-
total_sq_ft: Optional[float]
22-
building_sq_ft: Optional[float]
23-
land_sq_ft: Optional[float]
24-
stories: Optional[str]
25-
rooms: Optional[int]
26-
baths: Optional[str]
27-
bedrooms: Optional[int]
28-
exterior: Optional[str]
29-
basement: Optional[str]
30-
garage: Optional[str]
31-
building_type: Optional[str]
32-
condition: Optional[str]
33-
sale_validity: Optional[str]
13+
distance: str | None
14+
neighborhood: str | None
15+
assessed_value: str | None
16+
taxable_value: str | None
17+
sale_price: str | None
18+
sale_date: date | None
19+
property_class: str | None
20+
year_built: int | None
21+
total_sq_ft: float | None
22+
building_sq_ft: float | None
23+
land_sq_ft: float | None
24+
stories: str | None
25+
rooms: int | None
26+
baths: str | None
27+
bedrooms: int | None
28+
exterior: str | None
29+
basement: str | None
30+
garage: str | None
31+
building_type: str | None
32+
condition: str | None
33+
sale_validity: str | None
3434
eligible: bool
3535

3636
@classmethod
3737
def from_parcel(
3838
cls,
3939
parcel: ParcelType,
40-
distance: Optional[float] = None,
40+
distance: float | None = None,
4141
) -> Self:
4242
building_sq_ft = getattr(parcel, "building_sq_ft", None)
4343
total_floor_area = getattr(parcel, "total_floor_area", None)
@@ -150,11 +150,11 @@ def clean_eligible(cls, parcel: ParcelType) -> bool:
150150

151151
class SearchResponseBody(BaseModel):
152152
uuid: str
153-
search_properties: List[ParcelResponseBody] = Field(default_factory=list)
153+
search_properties: list[ParcelResponseBody] = Field(default_factory=list)
154154

155155

156156
class EligibilityBody(BaseModel):
157-
hope: Optional[bool] = None
157+
hope: bool | None = None
158158
owner: bool
159159
residence: bool
160160

@@ -167,16 +167,16 @@ class UserFormBody(BaseModel):
167167
city: str
168168
state: str
169169
phone: str
170-
phonetype: Optional[str] = None
171-
altcontact: Optional[str] = None
172-
mailingsame: Optional[str] = None
173-
heardabout: Optional[str] = None
170+
phonetype: str | None = None
171+
altcontact: str | None = None
172+
mailingsame: str | None = None
173+
heardabout: str | None = None
174174

175175

176176
class UserPropertyBody(BaseModel):
177-
validcharacteristics: Optional[str] = None
178-
characteristicsinput: Optional[str] = None
179-
valueestimate: Optional[str] = None
177+
validcharacteristics: str | None = None
178+
characteristicsinput: str | None = None
179+
valueestimate: str | None = None
180180

181181

182182
class FileBody(BaseModel):
@@ -187,41 +187,41 @@ class RequestBody(BaseModel):
187187
pin: str
188188
uuid: str
189189
region: str
190-
eligibility: Optional[EligibilityBody]
191-
eligible: Optional[bool]
190+
eligibility: EligibilityBody | None
191+
eligible: bool | None
192192
resumed: bool = False
193-
selected_comparables: List[str] = Field(default_factory=list)
194-
selected_primary: Optional[str] = None
195-
agreement: Optional[bool]
196-
agreement_date: Optional[date]
197-
agreement_name: Optional[str]
198-
terms_name: Optional[str] = None
199-
user: Optional[UserFormBody]
200-
property: Optional[UserPropertyBody]
201-
damage: Optional[str]
202-
damage_level: Optional[str]
203-
economic_obsolescence: Optional[bool] = None
204-
files: List[FileBody] = []
193+
selected_comparables: list[str] = Field(default_factory=list)
194+
selected_primary: str | None = None
195+
agreement: bool | None
196+
agreement_date: date | None
197+
agreement_name: str | None
198+
terms_name: str | None = None
199+
user: UserFormBody | None
200+
property: UserPropertyBody | None
201+
damage: str | None
202+
damage_level: str | None
203+
economic_obsolescence: bool | None = None
204+
files: list[FileBody] = []
205205

206206

207207
class ResponseBody(BaseModel):
208208
pin: str
209209
uuid: str
210210
region: str
211-
target: Optional[ParcelResponseBody]
211+
target: ParcelResponseBody | None
212212
# TODO: search_properties for initial loading?
213-
eligibility: Optional[EligibilityBody]
214-
eligible: Optional[bool]
213+
eligibility: EligibilityBody | None
214+
eligible: bool | None
215215
resumed: bool
216-
selected_comparables: List[str]
217-
selected_primary: Optional[str]
218-
agreement: Optional[bool]
219-
agreement_date: Optional[date]
220-
agreement_name: Optional[str]
221-
comparables: List[ParcelResponseBody]
222-
user: Optional[UserFormBody]
223-
property: Optional[UserPropertyBody]
224-
damage: Optional[str]
225-
damage_level: Optional[str]
226-
economic_obsolescence: Optional[bool]
227-
files: List[FileBody] = Field(default_factory=list)
216+
selected_comparables: list[str]
217+
selected_primary: str | None
218+
agreement: bool | None
219+
agreement_date: date | None
220+
agreement_name: str | None
221+
comparables: list[ParcelResponseBody]
222+
user: UserFormBody | None
223+
property: UserPropertyBody | None
224+
damage: str | None
225+
damage_level: str | None
226+
economic_obsolescence: bool | None
227+
files: list[FileBody] = Field(default_factory=list)

cypress/e2e/appeals.cy.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,6 @@ describe("Appeal flow", () => {
4343
cy.get("#Housing_Information_address").type(contact.address)
4444
cy.get("#Housing_Information_city").type(contact.city)
4545
cy.get("#Housing_Information_state").type(contact.state)
46-
cy.get("#Housing_Information_mailingsame [type=radio]").check("Yes")
47-
cy.get("#Housing_Information_altcontact [type=radio]").check("No")
48-
cy.get("#Housing_Information_heardabout").click()
49-
cy.get(".ant-select-dropdown").contains("Local Organization").click()
50-
cy.get("#Housing_Information_localinput").type("Organization")
51-
cy.get("button[type=submit]").contains("Next Page").click()
52-
53-
if (region === "detroit") {
54-
cy.get("#Agreement_agreement_name").type(contact.name)
55-
cy.get("button").contains("Next Page").click()
56-
}
5746

5847
if (region === "milwaukee") {
5948
cy.get("#Agreement_release_name").type(contact.name)

src/assets/udmlaw.png

-22.4 KB
Binary file not shown.

src/pages/content/appeal-closed.jsx

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -2,55 +2,43 @@ import React from "react"
22
import { Space } from "antd"
33
import PropTypes from "prop-types"
44
import coalition from "../../assets/coalition_logo.png"
5-
import udmLaw from "../../assets/udmlaw.png"
65
import ilo from "../../assets/ilo.png"
76
import communityAdvocates from "../../assets/community-advocates.jpg"
87
import uwLaw from "../../assets/uw-law.png"
8+
import { DETROIT_PHONE } from "../../utils"
99

1010
const AppealClosed = ({ region }) => (
1111
<>
1212
<h1>Who We Are</h1>
1313
{region === "detroit" ? (
1414
<>
1515
<p>
16-
The Institute for Law and Organizing and the Coalition for Property
17-
Tax Justice are nonprofit community organizations, which have
18-
partnered with the University of Detroit Mercy School of Law Housing
19-
Law Clinic to create the Detroit Property Tax Appeal Program. This
20-
program helps Detroit homeowners determine whether or not the City of
21-
Detroit has illegally inflated their property taxes. If so, we partner
22-
with homeowners to file a property tax assessment appeal to correct
23-
this, FREE OF CHARGE.
16+
The Detroit Property Tax Appeal Project helps Detroit homeowners
17+
determine whether the City of Detroit has illegally inflated their
18+
property taxes. You can use this application to help you create and
19+
file your own property tax assessment appeal.
2420
</p>
21+
<p>
22+
<strong>
23+
Please note that this application helps you draft and file your own
24+
appeal. The Institute for Law & Organizing and the Coalition for
25+
Property Tax Justice are not providing you with legal advice or
26+
representation.
27+
</strong>
28+
</p>
29+
<p>Call {DETROIT_PHONE} with any questions.</p>
2530
<Space wrap direction="horizontal">
2631
<img
2732
src={ilo}
2833
style={{ height: "80px" }}
2934
alt="Institute for Law and Organizing logo"
3035
/>
31-
<img
32-
src={udmLaw}
33-
style={{ height: "80px" }}
34-
alt="University of Detroit Mercy Law logo"
35-
/>
3636
<img
3737
src={coalition}
3838
style={{ height: "80px" }}
3939
alt="Coalition for Property Tax Justice logo"
4040
/>
4141
</Space>
42-
<br />
43-
<br />
44-
<p>
45-
Our 2025 application period for the 2025 Property Tax Appeals Program
46-
has closed. If you believe your home is over assessed, you can still
47-
appeal your property tax assessment to the Board of Review by
48-
submitting an application using{" "}
49-
<a href="https://detroitmi.gov/government/boards/property-assessment-board-review">
50-
these instructions
51-
</a>{" "}
52-
by March 10.
53-
</p>
5442
</>
5543
) : (
5644
``

0 commit comments

Comments
 (0)