Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 14 additions & 4 deletions app/api/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,13 @@ def validate_date(event, data):
"ends-at should be after starts-at")

if datetime.timestamp(data['starts_at']) <= datetime.timestamp(datetime.now()):
raise UnprocessableEntity({'pointer': '/data/attributes/starts-at'},
"starts-at should be after current date-time")
if event and event.deleted_at and not data.get('deleted_at'):
data['state'] = 'draft'
elif event and not event.deleted_at and data.get('deleted_at'):
pass
else:
raise UnprocessableEntity({'pointer': '/data/attributes/starts-at'},
"starts-at should be after current date-time")

class EventList(ResourceList):
def before_get(self, args, kwargs):
Expand Down Expand Up @@ -233,7 +238,8 @@ def before_post(self, args, kwargs, data=None):
user = User.query.filter_by(id=kwargs['user_id']).first()
modules = Module.query.first()
validate_event(user, modules, data)
validate_date(None, data)
if data['state'] != 'draft':
validate_date(None, data)

def after_create_object(self, event, data, view_kwargs):
"""
Expand Down Expand Up @@ -550,7 +556,11 @@ def before_update_object(self, event, data, view_kwargs):
:param view_kwargs:
:return:
"""
if data.get('starts_at') != event.starts_at or data.get('ends_at') != event.ends_at:
is_date_updated = (data.get('starts_at') != event.starts_at or data.get('ends_at') != event.ends_at)
is_draft_published = (event.state == "draft" and data.get('state') == "published")
is_event_restored = (event.deleted_at and not data.get('deleted_at'))

if is_date_updated or is_draft_published or is_event_restored:
validate_date(event, data)

if has_access('is_admin') and data.get('deleted_at') != event.deleted_at:
Expand Down