@@ -105,8 +105,13 @@ def validate_date(event, data):
105105 "ends-at should be after starts-at" )
106106
107107 if datetime .timestamp (data ['starts_at' ]) <= datetime .timestamp (datetime .now ()):
108- raise UnprocessableEntity ({'pointer' : '/data/attributes/starts-at' },
109- "starts-at should be after current date-time" )
108+ if event and event .deleted_at and not data .get ('deleted_at' ):
109+ data ['state' ] = 'draft'
110+ elif event and not event .deleted_at and data .get ('deleted_at' ):
111+ pass
112+ else :
113+ raise UnprocessableEntity ({'pointer' : '/data/attributes/starts-at' },
114+ "starts-at should be after current date-time" )
110115
111116class EventList (ResourceList ):
112117 def before_get (self , args , kwargs ):
@@ -175,7 +180,8 @@ def before_post(self, args, kwargs, data=None):
175180 user = User .query .filter_by (id = kwargs ['user_id' ]).first ()
176181 modules = Module .query .first ()
177182 validate_event (user , modules , data )
178- validate_date (None , data )
183+ if data ['state' ] != 'draft' :
184+ validate_date (None , data )
179185
180186 def after_create_object (self , event , data , view_kwargs ):
181187 """
@@ -492,8 +498,15 @@ def before_update_object(self, event, data, view_kwargs):
492498 :param view_kwargs:
493499 :return:
494500 """
501+ # call validate_date if either event start_at or end_at is updated
495502 if data .get ('starts_at' ) != event .starts_at or data .get ('ends_at' ) != event .ends_at :
496503 validate_date (event , data )
504+ # call validate_date if drafted event is being published
505+ elif event .state == "draft" and data .get ('state' ) == "published" :
506+ validate_date (event , data )
507+ # call validate_date if event is being restored
508+ elif event .deleted_at and not data .get ('deleted_at' ):
509+ validate_date (event , data )
497510
498511 if has_access ('is_admin' ) and data .get ('deleted_at' ) != event .deleted_at :
499512 if len (event .orders ) != 0 :
0 commit comments