Skip to content

Commit 832f3a3

Browse files
committed
Backend Initialisation
1 parent 08d0084 commit 832f3a3

4 files changed

Lines changed: 70 additions & 48 deletions

File tree

.idea/workspace.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

services_backend/routes/button.py

Lines changed: 24 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -61,37 +61,40 @@ def remove_button(button_id: int, category_id: int):
6161
db.session.commit()
6262

6363

64-
@button.patch("/{button_id}", response_model=ButtonGet)
64+
@button.patch("/{button_id}", response_model=ButtonUpdate)
6565
def update_button(button_inp: ButtonUpdate, button_id: int, category_id: int):
66-
button = db.session.query(Button).filter(Button.category_id == category_id).filter(Button.id == button_id)
66+
button = db.session.query(Button).filter(Button.category_id == category_id).filter(Button.id == button_id).one_or_none()
6767
last_button = db.session.query(Button).filter(Button.category_id == category_id).order_by(Button.order.desc()).first()
6868
category = db.session.query(Category).filter(Category.id == category_id).one_or_none()
6969

7070
if not category:
7171
raise HTTPException(status_code=404, detail="Category does not exist")
72-
if not button.one_or_none():
72+
if not button:
7373
raise HTTPException(status_code=404, detail="Button does not exist")
7474
if not any(button_inp.dict().values()):
7575
raise HTTPException(status_code=400, detail="Empty schema")
76-
if button.one().category_id != category_id:
76+
if button.category_id != category_id:
7777
raise HTTPException(status_code=404, detail="Button is not this category")
78-
if last_button and (button_inp.order > last_button.order + 1):
79-
raise HTTPException(status_code=400, detail=f"Can`t create button with order {button_inp.order}. "
80-
f"Last category is {last_button.order}")
81-
if button_inp.order < 1:
82-
raise HTTPException(status_code=400,
83-
detail="Order can`t be less than 1")
84-
if button.one().order > button_inp.order:
85-
db.session.query(Button) \
86-
.filter(Button.order < button.one().order) \
87-
.update({"order": Button.order + 1})
88-
elif button.one().order < button_inp.order:
89-
db.session.query(Button) \
90-
.filter(Button.order > button.one().order) \
91-
.update({"order": Button.order - 1})
92-
button.update(
78+
79+
if button_inp.order:
80+
if last_button and (button_inp.order > last_button.order + 1):
81+
raise HTTPException(status_code=400, detail=f"Can`t create button with order {button_inp.order}. "
82+
f"Last category is {last_button.order}")
83+
if button_inp.order < 1:
84+
raise HTTPException(status_code=400,
85+
detail="Order can`t be less than 1")
86+
if button.order > button_inp.order:
87+
db.session.query(Button) \
88+
.filter(Button.order < button.order) \
89+
.update({"order": Button.order + 1})
90+
elif button.order < button_inp.order:
91+
db.session.query(Button) \
92+
.filter(Button.order > button.order) \
93+
.update({"order": Button.order - 1})
94+
95+
query = db.session.query(Button).filter(Button.id == button_id)
96+
query.update(
9397
button_inp.dict(exclude_unset=True, exclude_none=True)
9498
)
95-
ret = button.one()
9699
db.session.commit()
97-
return ret
100+
return button

services_backend/routes/category.py

Lines changed: 28 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@ def create_category(category_inp: CategoryCreate):
1818
return category
1919

2020

21-
@category.get("/", response_model=list[CategoryGet])
21+
@category.get("/", response_model=list[CategoryGet], response_model_exclude_none=True)
2222
def get_categories(offset: int = 0, limit: int = 100):
2323
if (offset < 0) or (limit < 0):
2424
raise HTTPException(400, detail="Offset or limit cant be negative")
2525
return [{"id": category.id, "order": category.order, "name": category.name, "type": category.type} for category in db.session.query(Category).order_by(Category.order).offset(offset).limit(limit).all()]
2626

2727

28-
@category.get("/{category_id}", response_model=CategoryGet)
28+
@category.get("/{category_id}", response_model=CategoryGet, response_model_exclude_none=True)
2929
def get_category(category_id: int):
3030
category = db.session.query(Category).filter(Category.id == category_id).one_or_none()
3131
if not category:
@@ -40,46 +40,48 @@ def get_category(category_id: int):
4040
@category.delete("/{category_id}", response_model=None)
4141
def remove_category(category_id: int):
4242
category = db.session.query(Category).filter(Category.id == category_id).one_or_none()
43-
if category is None:
43+
if not category:
4444
raise HTTPException(status_code=404, detail="Category does not exist")
45-
delete = db.session.query(Category).filter(Category.id == category_id).one_or_none()
4645
for button in db.session.query(Button).filter(Button.category_id == category_id).all():
4746
db.session.delete(button)
4847
db.session.flush()
4948
db.session.query(Category) \
5049
.filter(Category.order > category.order) \
5150
.update({"order": Category.order - 1})
52-
db.session.delete(delete)
51+
db.session.delete(category)
5352
db.session.commit()
5453

5554

5655
@category.patch("/{category_id}", response_model=CategoryUpdate)
5756
def update_category(category_inp: CategoryUpdate, category_id: int):
58-
category = db.session.query(Category).filter(Category.id == category_id)
57+
category = db.session.query(Category).filter(Category.id == category_id).one_or_none()
5958
last_category = db.session.query(Category).order_by(Category.order.desc()).first()
60-
if not category.one_or_none():
59+
60+
if not category:
6161
raise HTTPException(status_code=404, detail="Category does not exist")
6262
if not any(category_inp.dict().values()):
6363
raise HTTPException(status_code=400, detail="Empty schema")
64-
if category_inp.order < 1:
65-
raise HTTPException(status_code=400,
66-
detail="Order can`t be less than 1")
67-
if last_category and (category_inp.order > last_category.order):
68-
raise HTTPException(status_code=400, detail=f"Can`t create category with order {category_inp.order}. "
69-
f"Last category is {last_category.order}")
70-
71-
if category.one().order > category_inp.order:
72-
db.session.query(Category) \
73-
.filter(Category.order < category.one().order) \
74-
.update({"order": Category.order + 1})
75-
elif category.one().order < category_inp.order:
76-
db.session.query(Category) \
77-
.filter(Category.order > category.one().order) \
78-
.update({"order": Category.order - 1})
79-
80-
category.update(
64+
65+
if category_inp.order:
66+
if category_inp.order < 1:
67+
raise HTTPException(status_code=400,
68+
detail="Order can`t be less than 1")
69+
if last_category and (category_inp.order > last_category.order):
70+
raise HTTPException(status_code=400, detail=f"Can`t create category with order {category_inp.order}. "
71+
f"Last category is {last_category.order}")
72+
73+
if category.order > category_inp.order:
74+
db.session.query(Category) \
75+
.filter(Category.order < category.order) \
76+
.update({"order": Category.order + 1})
77+
elif category.order < category_inp.order:
78+
db.session.query(Category) \
79+
.filter(Category.order > category.order) \
80+
.update({"order": Category.order - 1})
81+
82+
query = db.session.query(Category).filter(Category.id == category_id)
83+
query.update(
8184
category_inp.dict(exclude_unset=True, exclude_none=True)
8285
)
83-
ret = category.one()
8486
db.session.commit()
85-
return ret
87+
return category

services_backend/routes/models/category.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ class CategoryCreate(Base):
88

99

1010
class CategoryUpdate(Base):
11+
order: int | None
1112
type: str | None
1213
name: str | None
13-
order: int | None
1414

1515

1616
class CategoryGet(Base):
@@ -19,3 +19,4 @@ class CategoryGet(Base):
1919
type: str | None
2020
name: str | None
2121
buttons: list[ButtonGet] | None
22+

0 commit comments

Comments
 (0)