Example #1
0
 def post(self, id=None):
     data = request.get_json(force=True, silent=False)
     proj = Project.objects.get_or_404(id=data["project"])
     transaction = Transaction(
         fullname=data["fullname"],
         email=data["email"],
         project=proj,
         total_amt=data["total_amt"],
         giga_fee=data["giga_fee"],
         trans_fee=data["trans_fee"],
         net_amt=data["net_amt"],
         stripe_id=data["stripe_id"],
         survey_fields=data["survey_fields"],
     )
     if "comment" in data:
         transaction.comment = data["comment"]
     if "referring_user" in data:
         ref = User.objects.get_or_404(id=data["referring_user"])
         transaction.referring_user = ref
     if "organization" in data:
         org = Organization.objects.get_or_404(id=data["organization"])
         transaction.organization = org
     if "user" in data:
         user = User.objects.get_or_404(id=data["user"])
         transaction.user = user
     transaction.updated = datetime.utcnow()
     transaction.created = datetime.utcnow()
     try:
         transaction.save()
     except ValidationError as e:
         return helpers.api_error(e.message, 400), 400
     except NotUniqueError as e:
         return helpers.api_error(e.message, 409), 409
     except Exception:
         return helpers.api_error("Something went wrong! Check your request parameters!", 500), 500
     if data["project"] == "5341f31c21391d0d902b29f1" or data["project"] == "5341f12d242f872d43ffae59":
         rmc_email.delay(data["email"], data["project"])
     proj.update(
         inc__total_raised=data["total_amt"],
         inc__total_giga_fee=data["giga_fee"],
         inc__total_trans_fee=data["trans_fee"],
         inc__total_net_raised=data["net_amt"],
         add_to_set__donor_list=data["email"],
     )
     ml = MarketingList.objects(project=proj.id, contacts__email=data["email"]).update(
         set__contacts__S__status="converted", set__contacts__S__donated=data["total_amt"]
     )
     if ml > 0:
         ml = MarketingList.objects(project=proj.id).update(
             inc__convert_conversion=1, inc__total_donated=data["total_amt"]
         )
     return helpers.api_return("OK", transaction.updated, transaction.id, "Transaction")