diff --git a/backend/app/__init__.py b/backend/app/__init__.py index 7166eae3..16a92b5d 100644 --- a/backend/app/__init__.py +++ b/backend/app/__init__.py @@ -45,7 +45,7 @@ def create_app(config_name): print("Environment is", config_name) - if config_name != "testing": + if config_name != "testing" and config_name != "development": sentry_sdk.init( dsn="https://85a9bf2fc71b287cc4e60cb9f918f034@o4507682847850496.ingest.us.sentry.io/4507801405227008", # Set traces_sample_rate to 1.0 to capture 100% diff --git a/backend/app/models/meal_request.py b/backend/app/models/meal_request.py index 40486340..f6071020 100644 --- a/backend/app/models/meal_request.py +++ b/backend/app/models/meal_request.py @@ -89,6 +89,15 @@ def validate_onsite_contacts(self): f"onsite contact {contact.id} not found or not associated with the donor organization" ) + def _get_expanded_contacts_list(self, contacts): + expanded_contacts = [] + for contact in contacts: + # If a contact is deleted, it won't have the `to_serializable_dict` method, so we won't add it to the results + if not hasattr(contact, "to_serializable_dict"): + continue + expanded_contacts.append(contact.to_serializable_dict()) + return expanded_contacts + def to_serializable_dict(self): """ Returns a dict representation of the document that is JSON serializable @@ -98,15 +107,11 @@ def to_serializable_dict(self): meal_request_dict = self.to_mongo().to_dict() id = meal_request_dict.pop("_id", None) meal_request_dict["id"] = str(id) - - contacts = [contact.to_serializable_dict() for contact in self.onsite_contacts] + contacts = self._get_expanded_contacts_list(self.onsite_contacts) meal_request_dict["onsite_contacts"] = contacts if self.donation_info and self.donation_info.donor_onsite_contacts: - contacts = [ - contact.to_serializable_dict() - for contact in self.donation_info.donor_onsite_contacts - ] + contacts = self._get_expanded_contacts_list(self.donation_info.donor_onsite_contacts) meal_request_dict["donation_info"]["donor_onsite_contacts"] = contacts return meal_request_dict diff --git a/backend/app/services/implementations/meal_request_service.py b/backend/app/services/implementations/meal_request_service.py index a976834f..25b39338 100644 --- a/backend/app/services/implementations/meal_request_service.py +++ b/backend/app/services/implementations/meal_request_service.py @@ -217,7 +217,7 @@ def commit_to_meal_request( meal_request_dtos.append(meal_request.to_dto()) meal_request.save() - donor.info.involved_meal_requests += 1 + donor.info.involved_meal_requests += len(meal_request_dtos) donor.save() return meal_request_dtos @@ -238,7 +238,7 @@ def cancel_donation(self, meal_request_id: str) -> MealRequestDTO: ) donor = User.objects(id=meal_request.donation_info.donor.id).first() - donor.info.involved_meal_requests -= 1 + donor.info.involved_meal_requests = max(donor.info.involved_meal_requests - 1, 0) donor.save() meal_request.donation_info = None @@ -260,7 +260,7 @@ def delete_meal_request(self, meal_request_id: str) -> MealRequestDTO: raise Exception(f'Meal request "{meal_request_id}" not found') requestor = User.objects(id=meal_request.requestor.id).first() - requestor.info.involved_meal_requests -= 1 + requestor.info.involved_meal_requests = max(requestor.info.involved_meal_requests - 1, 0) requestor.save() meal_request.delete() diff --git a/frontend/src/components/common/OnsiteContactSection.tsx b/frontend/src/components/common/OnsiteContactSection.tsx index a0bd0e77..b57406e9 100644 --- a/frontend/src/components/common/OnsiteContactSection.tsx +++ b/frontend/src/components/common/OnsiteContactSection.tsx @@ -379,7 +379,6 @@ const OnsiteContactSection = ({ }: OnsiteContactSectionProps): React.ReactElement => { const isWebView = useIsWebView(); - const [showCreateModal, setShowCreateModal] = useState(false); if (isWebView) { return ( @@ -554,10 +553,7 @@ const OnsiteContactSection = ({ email: "", }, ]); - return; } - - setShowCreateModal(true); }} > + Add another contact diff --git a/frontend/src/pages/EditMealRequestForm.tsx b/frontend/src/pages/EditMealRequestForm.tsx index 75d0af4d..29a9d139 100644 --- a/frontend/src/pages/EditMealRequestForm.tsx +++ b/frontend/src/pages/EditMealRequestForm.tsx @@ -268,27 +268,29 @@ const EditMealRequestForm = ({ // For validation const validateData = () => { - if ( - numberOfMeals <= 0 || - onsiteContacts.length === 0 || - onsiteContacts.some( - (contact) => - !contact || - contact.name === "" || - contact.email === "" || - contact.phone === "", - ) - ) { - setAttemptedSubmit(true); - return false; - } - if (isEditDonation) { if (mealDescription === "") { setAttemptedSubmit(true); return false; } - } + if (mealDonorOnsiteContacts.length < 0) { + setAttemptedSubmit(true); + return false; + } + } else if ( + numberOfMeals <= 0 || + onsiteContacts.length < 0 || + onsiteContacts.some( + (contact) => + !contact || + contact.name === "" || + contact.email === "" || + contact.phone === "", + ) + ) { + setAttemptedSubmit(true); + return false; + } setAttemptedSubmit(false); return true; @@ -426,12 +428,10 @@ const EditMealRequestForm = ({ Food Description - Please describe a typical meal you can provide (this can be - modified later) + Please describe a typical meal you can provide: setMealDescription(e.target.value)} ref={initialFocusRef}