Exemplo n.º 1
0
 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')
Exemplo n.º 2
0
 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')
Exemplo n.º 3
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")
Exemplo n.º 4
0
 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')
Exemplo n.º 5
0
 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")
Exemplo n.º 6
0
 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')
Exemplo n.º 7
0
 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()
Exemplo n.º 8
0
 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')
Exemplo n.º 9
0
 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')
Exemplo n.º 10
0
 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()
Exemplo n.º 11
0
 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
Exemplo n.º 12
0
 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')
Exemplo n.º 13
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()
Exemplo n.º 14
0
 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()
Exemplo n.º 15
0
 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")
Exemplo n.º 16
0
 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()
Exemplo n.º 17
0
 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()