def post(self, id=None): data = request.get_json(force=True, silent=False) if 'rewards' in data: reward_list = [] for reward in data['rewards']: reward_list.append(Reward(**reward)) data['rewards'] = reward_list if 'organization' in data: org = Organization.objects.get_or_404(id=data['organization']) data['organization'] = org if 'name' not in data: return helpers.api_error('Please enter an appropriate name for your project!', 400), 400 user = User.objects.get_or_404(id=data['creator']) for key, value in data.iteritems(): if key in ['start_date', 'end_date', 'fulfilled_date', 'published']: data[key] = datetime.strptime(value['date'], "%Y-%m-%d %H:%M:%S") else: data[key] = value data['creator'] = user proj = Project(**data) proj.updated = datetime.utcnow() try: proj.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 ml = MarketingList(project=proj.id, contacts=[], pledge_conversion=0, convert_conversion=0, total_donated=0) ml.save() return helpers.api_return("OK", proj.updated, proj.id, 'Project')
def post(self, id=None): data = request.get_json(force=True, silent=False) if 'email' in data: data['email'] = data['email'].lower() # verification email if 'password' in data: data['password'] = bcrypt.hashpw( data['password'], bcrypt.gensalt()) if 'stripe_info' in data: data['stripe_info'] = UserStripeInfo(**data['stripe_info']) if 'fb_friends' in data: new_list = [] for friend in data['fb_friends']: new_list.append(FBFriend(fb_id=friend['id'], fb_name=friend['name'])) data['fb_friends'] = new_list user = User(**data) user.updated = datetime.utcnow() try: user.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 return helpers.api_return('OK', user.updated, user.id, 'User')
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")
def post(self, id=None): data = request.get_json(force=True, silent=False) pledge = Pledge(**data) pledge.updated = datetime.utcnow() try: pledge.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 return helpers.api_return('OK', pledge.updated, pledge.id, 'Pledge')
def delete(self, ml_id, id): email = request.args.get("email", None) if ml_id is None or email is None: return helpers.api_error("No Contact ID Provided!", 404), 404 else: ml = MarketingList.objects(id=ml_id).update(pull__contacts__email=email) return helpers.api_return("DELETED", datetime.utcnow(), ml_id, "Contact")
def delete(self, id): if id is None: return helpers.api_error('No Organization ID Provided!', 404), 404 else: o = Organization.objects.get_or_404(id=id) o.delete() return helpers.api_return('DELETED', datetime.utcnow(), id, 'Organization')
def get(self, id, cid=None, org_perma=None, proj_perma=None): if id is None: if cid is not None: # this is temporary - return list of projects for this cid? return helpers.api_error('No Project ID Provided!', 404), 404 elif (org_perma is not None) and (proj_perma is not None): org = Organization.objects.get_or_404(perma_name=org_perma) return Project.objects.get_or_404(organization=org, perma_name=proj_perma).select_related(1).to_json() elif 'user' in request.args: u = User.objects.get_or_404(id=request.args['user']) projects = Project.objects(creator=u) return jsonify(result=projects.to_json()) else: return helpers.api_error('No Project ID Provided!', 404), 404 else: return Project.objects.get_or_404(id=id).select_related(1).to_json()
def delete(self, id): if id is None: return helpers.api_error('No user_id provided!', 404), 404 else: u = User.objects.get_or_404(id=id) u.delete() return helpers.api_return('DELETED', datetime.utcnow(), id, 'User')
def delete(self, id): if id is None: return helpers.api_error('No Project ID Provided!', 404), 404 else: p = Project.objects.get_or_404(id=id) p.delete() return helpers.api_return('DELETED', datetime.utcnow(), id, 'Project')
def get(self, id): proj = request.args.get('blitz', None) if proj is not None: return MarketingList.objects.get_or_404(project=proj).select_related(1).to_json() if id is None: return helpers.api_error('No MarketingList ID Provided!', 404), 404 else: return MarketingList.objects.get_or_404(id=id).select_related(1).to_json()
def get(self, ml_id, id=None): email = request.args.get("email", None) if ml_id is not None: if id is not None: return MarketingList.objects.get_or_404(id=ml_id, contacts__con_id=id).to_json() if email is not None: return MarketingList.objects.get_or_404(id=ml_id, contacts__email=email).to_json() return helpers.api_error("No Contact ID Provided!", 404), 404
def post(self, id=None): data = request.get_json(force=True, silent=False) if 'name' not in data: raise helpers.api_error('Please enter an appropriate name for this Organization!', 400), 400 elif 'perma_name' not in data: data['perma_name'] = slugify(data['name']) org = Organization(**data) org.updated = datetime.utcnow() try: org.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 return helpers.api_return('OK', org.updated, org.id, 'Organization')
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()
def get(self, id): if id is None: if 'email' in request.args: return User.objects.get_or_404(email=request.args['email']).select_related(2).to_json() elif 'facebook' in request.args: return User.objects.get_or_404(facebook_id=int(request.args['facebook'])).select_related(2).to_json() elif 'twitter' in request.args: return User.objects.get_or_404(twitter_id=int(request.args['twitter'])).select_related(2).to_json() else: return helpers.api_error('No user_id provided!', 404), 404 else: return User.objects.get_or_404(id=id).select_related(2).to_json()
def delete(self, id): if id is None: return helpers.api_error("No Transaction ID Provided!", 404), 404 else: t = Transaction.objects.get_or_404(id=id) Project.objects(id=t.project.id).update_one( dec__total_raised=t.total_amt, dec__total_giga_fee=t.giga_fee, dec__total_trans_fee=t.trans_fee, dec__total_net_raised=t.net_amt, pull__donor_list=t.email, ) t.delete() return helpers.api_return("DELETED", datetime.utcnow(), id, "Transaction")
def get(self, id): if id is None: return helpers.api_error('No Pledge ID Provided!', 404), 404 else: return Pledge.objects.get_or_404(id=id).select_related(1).to_json()
def get(self, id): if id is None: return helpers.api_error('No Organization ID Provided', 404), 404 else: return Organization.objects.get_or_404(id=id).to_json()