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")
Example #2
0
 def get(self, id, cid=None):
     if id is None:
         if cid is not None:
             return helpers.api_error("No Transaction ID Provided!", 404), 404
         elif "project" in request.args:
             p = Project.objects.get_or_404(id=request.args["project"])
             trans = Transaction.objects(project=p).order_by("-created")
             return jsonify(result=trans.to_json())
     else:
         return Transaction.objects.get_or_404(id=id).select_related(1).to_json()