Skip to content

Commit d29a05b

Browse files
authored
Feature: add permissions on expenses (#35)
* feat: remove block del and upd expenses on inactive group * feat: remove permissions to check group expenses inactive user * cd: add pkill -f 'uvicorn main:app'
1 parent a56ac66 commit d29a05b

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed

.github/workflows/ci-cd.yml

+2
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,8 @@ jobs:
166166
export GOOGLE_SECRET='${{ secrets.GOOGLE_SECRET }}'
167167
export ALLOWED_HOSTS='${{ secrets.ALLOWED_HOSTS }}'
168168
export DOMAIN_NAME='${{ secrets.DOMAIN_NAME }}'
169+
170+
pkill -f "uvicorn main:app"
169171
170172
git pull
171173
pip3 install -r requirements.txt

src/services/expense.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ def validate_input_data(
1919
group_id: int,
2020
expense: ExpenseCreate = None,
2121
expense_id: int = None,
22+
is_create: bool = False,
2223
) -> None:
2324
try:
2425
db_user_group = (
@@ -29,11 +30,12 @@ def validate_input_data(
2930
status_code=status.HTTP_404_NOT_FOUND,
3031
detail="You are not a user of this group!",
3132
)
32-
if db_user_group.status == GroupStatusEnum.INACTIVE:
33-
raise HTTPException(
34-
status_code=status.HTTP_405_METHOD_NOT_ALLOWED,
35-
detail="The user is not active in this group!",
36-
)
33+
if is_create:
34+
if db_user_group.status == GroupStatusEnum.INACTIVE:
35+
raise HTTPException(
36+
status_code=status.HTTP_405_METHOD_NOT_ALLOWED,
37+
detail="The user is not active in this group!",
38+
)
3739
if expense:
3840
try:
3941
db.query(CategoryGroup).filter_by(
@@ -58,7 +60,9 @@ def validate_input_data(
5860
def create_expense(
5961
db: Session, user_id: int, group_id: int, expense: ExpenseCreate
6062
) -> ExpenseModel:
61-
validate_input_data(db=db, user_id=user_id, group_id=group_id, expense=expense)
63+
validate_input_data(
64+
db=db, user_id=user_id, group_id=group_id, expense=expense, is_create=True
65+
)
6266
db_expense = Expense(**expense.dict())
6367
db_expense.user_id = user_id
6468
db_expense.group_id = group_id

src/services/group.py

+15
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,21 @@ def group_member_validate_input_data(
9292

9393
def read_group_history(db: Session, user_id: int, group_id: int) -> List[GroupHistory]:
9494
user_validate_input_date(db, user_id, group_id)
95+
try:
96+
(
97+
db.query(UserGroup)
98+
.filter_by(
99+
user_id=user_id,
100+
group_id=group_id,
101+
status=GroupStatusEnum.ACTIVE,
102+
)
103+
.one()
104+
)
105+
except exc.NoResultFound:
106+
raise HTTPException(
107+
status_code=status.HTTP_405_METHOD_NOT_ALLOWED,
108+
detail="The user is not active in this group!",
109+
)
95110
history = (
96111
select(
97112
Expense.id,

0 commit comments

Comments
 (0)