@@ -107,8 +107,13 @@ def validate_date(event, data):
107107 "ends-at should be after starts-at" )
108108
109109 if datetime .timestamp (data ['starts_at' ]) <= datetime .timestamp (datetime .now ()):
110- raise UnprocessableEntity ({'pointer' : '/data/attributes/starts-at' },
111- "starts-at should be after current date-time" )
110+ if event and event .deleted_at and not data .get ('deleted_at' ):
111+ data ['state' ] = 'draft'
112+ elif event and not event .deleted_at and data .get ('deleted_at' ):
113+ pass
114+ else :
115+ raise UnprocessableEntity ({'pointer' : '/data/attributes/starts-at' },
116+ "starts-at should be after current date-time" )
112117
113118class EventList (ResourceList ):
114119 def before_get (self , args , kwargs ):
@@ -233,7 +238,8 @@ def before_post(self, args, kwargs, data=None):
233238 user = User .query .filter_by (id = kwargs ['user_id' ]).first ()
234239 modules = Module .query .first ()
235240 validate_event (user , modules , data )
236- validate_date (None , data )
241+ if data ['state' ] != 'draft' :
242+ validate_date (None , data )
237243
238244 def after_create_object (self , event , data , view_kwargs ):
239245 """
@@ -550,7 +556,11 @@ def before_update_object(self, event, data, view_kwargs):
550556 :param view_kwargs:
551557 :return:
552558 """
553- if data .get ('starts_at' ) != event .starts_at or data .get ('ends_at' ) != event .ends_at :
559+ is_date_updated = (data .get ('starts_at' ) != event .starts_at or data .get ('ends_at' ) != event .ends_at )
560+ is_draft_published = (event .state == "draft" and data .get ('state' ) == "published" )
561+ is_event_restored = (event .deleted_at and not data .get ('deleted_at' ))
562+
563+ if is_date_updated or is_draft_published or is_event_restored :
554564 validate_date (event , data )
555565
556566 if has_access ('is_admin' ) and data .get ('deleted_at' ) != event .deleted_at :
0 commit comments