def createOffseasonEventSuggestion(cls, author_account_key, name, start_date, end_date, website, venue_name, address, city, state, country, first_code=None, suggestion_id=None): """ Create a suggestion for offseason event. Returns (status, failures): ('success', None) ('validation_failure', failures) """ failures = {} if not name: failures['name'] = "Missing event name" if not start_date: failures['start_date'] = "Missing start date" if not end_date: failures['end_date'] = "Missing end date" if not website: failures['website'] = "Missing website" if not address: failures['venue_address'] = "Missing address" if not venue_name: failures['venue_name'] = "Missing venue name" if not city: failures['venue_city'] = "Missing city" if not state: failures['venue_state'] = "Missing state" if not country: failures['venue_country'] = "Missing country" start_datetime = None end_datetime = None if start_date: try: start_datetime = datetime.strptime(start_date, "%Y-%m-%d") except ValueError: failures[ 'start_date'] = "Invalid start date format (year-month-date)" if end_date: try: end_datetime = datetime.strptime(end_date, "%Y-%m-%d") except ValueError: failures[ 'end_date'] = "Invalid end date format (year-month-date)" if start_datetime and end_datetime and end_datetime < start_datetime: failures['end_date'] = "End date must not be before the start date" if failures and not suggestion_id: # Be more lenient with auto-added suggestions return 'validation_failure', failures # Note that we don't typically specify an explicit key for event suggestions # We don't trust users to input correct event keys (that's for the moderator to do) suggestion = Suggestion( id=suggestion_id) if suggestion_id else Suggestion() suggestion.author = author_account_key suggestion.target_model = "offseason-event" suggestion.contents = { 'name': name, 'start_date': start_date, 'end_date': end_date, 'website': website, 'venue_name': venue_name, 'address': address, 'city': city, 'state': state, 'country': country, 'first_code': first_code, } suggestion.put() return 'success', None
def createOffseasonEventSuggestion(cls, author_account_key, name, start_date, end_date, website, venue_name, address, city, state, country, first_code=None, suggestion_id=None): """ Create a suggestion for offseason event. Returns (status, failures): ('success', None) ('validation_failure', failures) """ failures = {} if not name: failures['name'] = "Missing event name" if not start_date: failures['start_date'] = "Missing start date" if not end_date: failures['end_date'] = "Missing end date" if not website: failures['website'] = "Missing website" if not address: failures['venue_address'] = "Missing address" if not venue_name: failures['venue_name'] = "Missing venue name" if not city: failures['venue_city'] = "Missing city" if not state: failures['venue_state'] = "Missing state" if not country: failures['venue_country'] = "Missing country" start_datetime = None end_datetime = None if start_date: try: start_datetime = datetime.strptime(start_date, "%Y-%m-%d") except ValueError: failures['start_date'] = "Invalid start date format (year-month-date)" if end_date: try: end_datetime = datetime.strptime(end_date, "%Y-%m-%d") except ValueError: failures['end_date'] = "Invalid end date format (year-month-date)" if start_datetime and end_datetime and end_datetime < start_datetime: failures['end_date'] = "End date must not be before the start date" if failures and not suggestion_id: # Be more lenient with auto-added suggestions return 'validation_failure', failures # Note that we don't typically specify an explicit key for event suggestions # We don't trust users to input correct event keys (that's for the moderator to do) suggestion = Suggestion(id=suggestion_id) if suggestion_id else Suggestion() suggestion.author=author_account_key suggestion.target_model="offseason-event" suggestion.contents = { 'name': name, 'start_date': start_date, 'end_date': end_date, 'website': website, 'venue_name': venue_name, 'address': address, 'city': city, 'state': state, 'country': country, 'first_code': first_code, } suggestion.put() return 'success', None