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}