Skip to content

Commit 94489bb

Browse files
prateekj117iamareebjamal
authored andcommitted
fix: Get and delete event favourite using event_id (#6063)
1 parent 41c1deb commit 94489bb

File tree

4 files changed

+31
-11
lines changed

4 files changed

+31
-11
lines changed

app/api/user_favourite_events.py

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
from flask_rest_jsonapi import ResourceDetail, ResourceList, ResourceRelationship
21
from flask import request, current_app as app
3-
from flask_jwt import current_identity as current_user, _jwt_required
2+
from flask_jwt import current_identity as current_user, _jwt_required, jwt_required
3+
from flask_rest_jsonapi import ResourceDetail, ResourceList, ResourceRelationship
4+
from flask_rest_jsonapi.exceptions import ObjectNotFound
5+
from sqlalchemy.orm.exc import NoResultFound
46

5-
from app.models.user import User
67
from app.api.helpers.db import safe_query
7-
from app.api.helpers.permission_manager import has_access
88
from app.api.helpers.exceptions import ForbiddenException, ConflictException
9+
from app.api.helpers.permission_manager import has_access
910
from app.api.helpers.utilities import require_relationship
1011
from app.api.schema.user_favourite_events import UserFavouriteEventSchema
1112
from app.models import db
13+
from app.models.user import User
1214
from app.models.user_favourite_event import UserFavouriteEvent
1315

1416

@@ -79,11 +81,28 @@ class UserFavouriteEventDetail(ResourceDetail):
7981
"""
8082
User Favourite Events detail by id
8183
"""
84+
@jwt_required()
85+
def before_get_object(self, view_kwargs):
86+
87+
if view_kwargs.get('id') is not None:
88+
try:
89+
user_favourite_event = UserFavouriteEvent.query.filter_by(
90+
user=current_user, event_id=view_kwargs['id']).first()
91+
except NoResultFound:
92+
raise ObjectNotFound({'source': '/data/relationships/event'}, "Object: not found")
93+
else:
94+
if user_favourite_event is not None:
95+
view_kwargs['id'] = user_favourite_event.id
96+
else:
97+
view_kwargs['id'] = None
8298

8399
methods = ['GET', 'DELETE']
84100
schema = UserFavouriteEventSchema
85101
data_layer = {'session': db.session,
86-
'model': UserFavouriteEvent}
102+
'model': UserFavouriteEvent,
103+
'methods': {
104+
'before_get_object': before_get_object,
105+
}}
87106

88107

89108
class UserFavouriteEventRelationship(ResourceRelationship):

app/factories/user_favourite_events.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
from app.factories.user import UserFactory
44
from app.factories.event import EventFactoryBasic
55
from app.models.user_favourite_event import db, UserFavouriteEvent
6+
from app.models.user import User
67

78

89
class UserFavouriteEventFactory(factory.alchemy.SQLAlchemyModelFactory):
910
class Meta:
1011
model = UserFavouriteEvent
1112
sqlalchemy_session = db.session
1213

13-
user = factory.RelatedFactory(UserFactory)
14-
event = factory.RelatedFactory(EventFactoryBasic)
14+
user = factory.LazyAttribute(lambda a: User.query.first())
15+
event = factory.SubFactory(EventFactoryBasic)

docs/api/api_blueprint.apib

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25616,9 +25616,9 @@ This Group's APIs can be used for adding a particular event to the favourite lis
2561625616
}
2561725617
}
2561825618

25619-
## Favourite Events Detail [/v1/user-favourite-events/{user_favourite_event_id}]
25619+
## Favourite Events Detail [/v1/user-favourite-events/{event_id}]
2562025620
+ Parameters
25621-
+ user_favourite_event_id: 1 (integer) - ID of the Favourite Event
25621+
+ event_id: 1 (integer) - ID of the Event in the form of an integer
2562225622

2562325623
### Get Details [GET]
2562425624

tests/hook_main.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4358,8 +4358,8 @@ def favourite_events_list_post(transaction):
43584358
:return:
43594359
"""
43604360
with stash['app'].app_context():
4361-
user_fav_event = UserFavouriteEventFactory()
4362-
db.session.add(user_fav_event)
4361+
event = EventFactoryBasic()
4362+
db.session.add(event)
43634363
db.session.commit()
43644364

43654365

0 commit comments

Comments
 (0)