Compare commits

..

No commits in common. "573fbcc7ea4d0da590dd3e996fcf9c954764771b" and "212b18a47a53275df0d47bce0fc74021f9123631" have entirely different histories.

4 changed files with 83 additions and 49 deletions

View file

@ -65,9 +65,4 @@ update, delete, and be reminded of events with additional advanced features.
# how to run?
- pip install -r requirements.txt
- flask db upgrade
- flask run

View file

@ -1,44 +0,0 @@
alembic==1.13.1
amqp==5.2.0
aniso8601==9.0.1
APScheduler==3.10.4
bcrypt==4.1.2
bidict==0.22.1
billiard==4.2.0
blinker==1.7.0
click==8.1.7
click-didyoumean==0.3.0
click-plugins==1.1.1
click-repl==0.3.0
Flask==3.0.0
Flask-APScheduler==1.13.1
Flask-Bcrypt==1.0.1
Flask-JWT-Extended==4.6.0
Flask-Migrate==4.0.5
Flask-RESTful==0.3.10
Flask-SQLAlchemy==3.1.1
greenlet==3.0.3
h11==0.14.0
iniconfig==2.0.0
itsdangerous==2.1.2
Jinja2==3.1.2
kombu==5.3.4
Mako==1.3.0
MarkupSafe==2.1.3
packaging==23.2
pluggy==1.3.0
prompt-toolkit==3.0.43
PyJWT==2.8.0
pytest==7.4.4
python-dateutil==2.8.2
python-engineio==4.8.2
pytz==2023.3.post1
six==1.16.0
SQLAlchemy==2.0.25
typing_extensions==4.9.0
tzdata==2023.4
tzlocal==5.2
vine==5.1.0
wcwidth==0.2.12
Werkzeug==3.0.1
wsproto==1.2.0

View file

@ -67,3 +67,21 @@ def delete_event(event_id):
except Exception as e:
return jsonify({'error': str(e)}), 500
@eventRoutes.route('/<int:event_id>/attend', methods=['POST'])
@authenticate_user
def attend_event(event_id):
response = EventService.attend_event(event_id)
if 'error' in response:
return jsonify({'error': response['error']}), 400
return jsonify({'message': response['message']}), 200
@eventRoutes.route('/<int:event_id>/unattend', methods=['POST'])
@authenticate_user
def unattend_event(event_id):
response = EventService.unattend_event(event_id)
if 'error' in response:
return jsonify({'error': response['error']}), 400
return jsonify({'message': response['message']}), 200

View file

@ -72,6 +72,71 @@ class EventService:
return event
@staticmethod
def attend_event(event_id):
user_id = g.user_id
event = Event.query.filter(
Event.id == event_id,
Event.duedate > datetime.now(),
Event.deleted == False
).first()
if not event:
return {'error': 'Event not found or already passed'}
# Check if the user is already associated with the event
is_already_attending = UserEventAssociation.query.filter_by(
user_id=user_id,
event_id=event_id
).first()
if is_already_attending:
return {'error': 'User already attending this event'}
# Add the user to the event
user_event_association = UserEventAssociation(
user_id=user_id,
event_id=event_id
)
db.session.add(user_event_association)
db.session.commit()
return {'message': 'User successfully added to the event'}
@staticmethod
def unattend_event(event_id):
user_id = g.user_id # Assuming user_id is stored in Flask's global g object
# Check if the event is valid and in the future
event = Event.query.filter(
Event.id == event_id,
Event.duedate > datetime.now(),
Event.deleted == False
).first()
if not event:
return {'error': 'Event not found or already passed'}
user_event_association = UserEventAssociation.query.filter_by(
user_id=user_id,
event_id=event_id
).first()
if not user_event_association:
return {'error': 'User not attending this event'}
user = UserService.get_user_by_id(user_id)
if not user:
return {'error': 'User not found'}
db.session.delete(user_event_association)
db.session.commit()
return {'message': 'User successfully removed from the event'}
@staticmethod
def get_all_upcomming_events():
now = datetime.now()