コード例 #1
0
def expenses():
    try:
        jdata = request.get_json(force=True)
        name = jdata['name']
        email = jdata['email']
        category = jdata['category']
        description = jdata['description']
        link = jdata['link']
        status = 'Pending'  #jdata['status']
        estimated_costs = jdata['estimated_costs']
        submit_date = jdata['submit_date']
        decision_date = ' '  #jdata['decision_date']
        expense = Expense(name, email, category, description, link, status,
                          estimated_costs, submit_date, decision_date)
        db.session.add(expense)
        db.session.commit()
        return Response(response=json.dumps({
            "id": expense.id,
            "name": name,
            "email": email,
            "category": category,
            "description": description,
            "link": link,
            "status": status,
            "estimated_costs": estimated_costs,
            "submit_date": submit_date,
            "decision_date": decision_date
        }),
                        status=201,
                        mimetype='application/json')
    except IntegrityError:
        return Response(status=400)
コード例 #2
0
ファイル: server.py プロジェクト: alenajk/expense-tracker
def savemsg():

    if request.method == "POST":
        msg = request.form.get('Body')
        date = str(datetime.now()).split()[0]
        msg_parsed = msg.split()
        amount = msg_parsed[0]
        category = msg_parsed[1]
        description = ' '.join(msg_parsed[2:])
        expense = Expense(date=date,
                          amount=amount,
                          category=category,
                          description=description)
        db.session.add(expense)
        db.session.commit()

    return 'Testing newmsg app route'
コード例 #3
0
    def get(self):
        expense_id = uuid.uuid4()
        # req_json = json.loads(self.request.body)

        # expense_name = req_json[IDENTIFIER_EXPENSE_NAME ]
        expense_name = self.request.get(IDENTIFIER_EXPENSE_NAME)
        # user_email = req_json[IDENTIFIER_USER_EMAIL]
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)

        # apt_name = req_json[IDENTIFIER_APT_NAME]
        apt_name = self.request.get(IDENTIFIER_APT_NAME)

        user_emails = self.request.get(IDENTIFIER_USER_LIST)
        user_email_lst = user_emails.split(",")

        target_apt_lst = Apartment.query(
            Apartment.apt_name == apt_name).fetch()

        target_apt = None

        for apt in target_apt_lst:
            if user_email in apt.user_email_lst:
                target_apt = apt
                break
        if target_apt == None:
            response = {}
            response[
                'error'] = 'the user: '******' is not valid for apt: ' + apt_name
            return self.respond(**response)

        # user_email_lst.insert(0, user_email)

        # check whether this apt name is valid or not
        expense_lst = Expense.query(Expense.expense_name == expense_name)
        for expense in expense_lst:
            for user in user_email_lst:
                if user in expense.user_email_lst:
                    response = {}
                    response[
                        'error'] = 'the apartment name: ' + expense_name + ' has not been used for ' + user
                    return self.respond(**response)

        # check whether all of these email are valid users
        for user in user_email_lst:
            users = User.query(User.user_email == user).fetch()
            if len(users) == 0:
                response = {}
                response[
                    'error'] = 'the email: ' + user + ' has not been registered'
                return self.respond(**response)

        cover_url = None
        # if IDENTIFIER_APT_PHOTO in req_json:
        #     cover_url = req_json[IDENTIFIER_APT_PHOTO]

        new_expense = Expense(apt_id=target_apt.apt_id,
                              creater_email=user_email,
                              user_email_lst=user_email_lst,
                              cover_url=cover_url,
                              expense_name=expense_name,
                              total_cost=0,
                              is_paid=False,
                              expense_id=str(expense_id))

        target_apt.expense_id_lst.insert(0, str(expense_id))
        new_expense.put()
        target_apt.put()
        self.respond(expense_id=str(expense_id), status="Success")
コード例 #4
0
    def get(self):

        photo = None
        # if IDENTIFIER_TASK_PHOTO in req_json:
        #     photo = req_json[IDENTIFIER_TASK_PHOTO]

        task_id = uuid.uuid4()

        # req_json = json.loads(self.request.body)

        # task_name = req_json[IDENTIFIER_TASK_NAME]
        task_name = self.request.get(IDENTIFIER_TASK_NAME)

        # creater_email = req_json[IDENTIFIER_USER_EMAIL]
        creater_email = self.request.get(IDENTIFIER_USER_EMAIL)

        #create a new expense
        expense_id = uuid.uuid4()
        # req_json = json.loads(self.request.body)
        expense_name = "Task_" + task_name

        # candidate_lst= req_json[IDENTIFIER_USER_EMAIL_LIST]
        candidates = self.request.get(IDENTIFIER_USER_EMAIL_LIST)
        candidate_lst = candidates.split(",")

        # description = req_json[IDENTIFIER_DESCRIPTION_NAME]
        description = self.request.get(IDENTIFIER_DESCRIPTION_NAME)

        apt_id = self.request.get(IDENTIFIER_APT_ID)

        target_apt_lst = Apartment.query(Apartment.apt_id == apt_id).fetch()

        if len(target_apt_lst) != 0:
            target_apt = target_apt_lst[0]
            print "Found the target_apt " + target_apt.apt_name
            new_expense = Expense(apt_id=target_apt.apt_id,
                                  creater_email=creater_email,
                                  user_email_lst=candidate_lst,
                                  cover_url=None,
                                  expense_name=expense_name,
                                  total_cost=0,
                                  is_paid=False,
                                  expense_id=str(expense_id))

            target_apt.expense_id_lst.insert(0, str(expense_id))
            new_expense.put()
            target_apt.put()
            task_id_lst = new_expense.task_id_lst
            if not task_id_lst:
                task_id_lst = []
            task_id_lst.append(str(task_id))
            new_expense.task_id_lst = task_id_lst
            new_expense.put()

            # # expenses = Expense.query(Expense.expense_id == expense_id).fetch()
            # # expense = expenses[0]
            # expense.task_id_lst.append(str(task_id))
            # expense.put()
            new_task = Task(task_name=task_name,
                            expense_id=str(expense_id),
                            creater_email=creater_email,
                            candidate_lst=candidate_lst,
                            description=description,
                            photo_blobkey=photo,
                            task_id=str(task_id),
                            finished=False,
                            assigned=False)
            new_task.put()

            self.respond(task_id=str(task_id), status="Success")
コード例 #5
0
ファイル: _comp.py プロジェクト: bubbleboy14/ctcomp
def response():
	action = cgi_get("action", choices=["view", "pay", "service", "commitment", "request", "invite", "expense", "verify", "unverify", "apply", "join", "pod", "membership", "person", "enroll", "manage", "confcode", "mint", "balance", "responsibilities"])
	if action == "view":
		ip = local("response").ip
		user = cgi_get("user", required=False) # key
		if user:
			user = db.get(user)
		else:
			user = Person.query(Person.ip == ip).get()
		if not user:
			user = Person()
			user.ip = ip
			user.put()
		views(user)
	elif action == "mint":
		user = db.get(cgi_get("user"))
		amount = cgi_get("amount")
		user.wallet.get().mint(amount)
	elif action == "balance":
		user = db.get(cgi_get("user"))
		succeed(user.wallet.get().balance())
	elif action == "pay":
		payer = db.get(cgi_get("payer"))
		memship = db.get(cgi_get("membership"))
		person = memship.person.get()
		pod = memship.pod.get()
		pment = Payment()
		pment.membership = memship.key
		pment.payer = payer.key
		pment.amount = cgi_get("amount")
		pment.notes = cgi_get("notes")
		if payer.key.urlsafe() == person.key.urlsafe():
			fail("pay yourself?")
		if payer.wallet.get().outstanding < pment.amount:
			fail("you don't have enough in your account!")
		pment.put()
		pkey = pment.key.urlsafe()
		pment.notify("confirm payment", lambda signer : PAYMENT%(pment.amount,
			person.firstName, pod.name, pment.notes, pkey, signer.urlsafe()))
		succeed(pkey)
	elif action == "service":
		succeed(reg_act(cgi_get("membership"), cgi_get("service"),
			cgi_get("workers"), cgi_get("beneficiaries"), cgi_get("notes")))
	elif action == "commitment":
		comm = Commitment()
		comm.membership = cgi_get("membership")
		comm.service = cgi_get("service")
		comm.estimate = cgi_get("estimate")
		comm.notes = cgi_get("notes")
		comm.put()
		comm.verify(comm.membership.get().person) # (submitter already agrees)
		ckey = comm.key.urlsafe()
		service = comm.service.get()
		memship = comm.membership.get()
		person = memship.person.get()
		pod = memship.pod.get()
		comm.notify("affirm commitment", lambda signer : COMMITMENT%(person.email,
			pod.name, comm.estimate, service.name, comm.notes, ckey, signer.urlsafe()))
		succeed(ckey)
	elif action == "request":
		req = Request()
		req.membership = cgi_get("membership")
		req.change = cgi_get("change")
		req.person = cgi_get("person", required=False)
		req.notes = cgi_get("notes")
		req.put()
		req.remind()
		succeed(req.key.urlsafe())
	elif action == "invite":
		inv = Invitation()
		inv.membership = cgi_get("membership")
		inv.email = cgi_get("email").lower()
		inv.notes = cgi_get("notes")
		inv.put()
		inv.invite()
	elif action == "expense":
		exp = Expense()
		exp.membership = cgi_get("membership")
		exp.executor = cgi_get("executor", required=False)
		exp.variety = cgi_get("variety", choices=["dividend", "reimbursement"])
		exp.amount = cgi_get("amount")
		exp.recurring = cgi_get("recurring")
		exp.notes = cgi_get("notes")
		exp.put()
		memship = exp.membership.get()
		mpmail = memship.person.get().email
		pod = memship.pod.get()
		variety = exp.variety
		amount = exp.amount
		if exp.executor:
			variety = "%s - executor: %s"%(variety, exp.executor.get().email)
		else:
			amount = "%s%%"%(amount * 100,)
		exp.notify("approve expense", lambda signer: EXPENSE%(mpmail, pod.name,
			variety, amount, exp.recurring, exp.notes, signer.urlsafe()))
		succeed(exp.key.urlsafe())
	elif action == "verify":
		verifiable = db.get(cgi_get("verifiable")) # act/request/commitment/expense/appointment
		verifiable.verify(db.KeyWrapper(cgi_get("person")))
		redirect("/comp/pods.html", "you did it!")
	elif action == "unverify": # commitment only!!!!??!
		vkey = cgi_get("verifiable")
		verifiable = db.get(vkey)
		verifiable.unverify()
		service = verifiable.service.get()
		memship = verifiable.membership.get()
		person = memship.person.get()
		pod = memship.pod.get()
		for signer in pod.members():
			send_mail(to=signer.get().email, subject="affirm commitment - estimate adjustment",
				body=COMMITMENT%(person.email, pod.name, verifiable.estimate,
					service.name, vkey, signer.urlsafe()))
	elif action == "apply":
		db.get(cgi_get("request")).apply()
		redirect("/comp/pods.html", "you did it!")
	elif action == "join": # support only
		pod = db.get(cgi_get("pod"))
		if pod.variety != "support":
			fail()
		person = db.get(cgi_get("person"))
		succeed(person.enroll(pod).urlsafe())
	elif action == "pod":
		pod = db.get(cgi_get("pod"))
		succeed({
			"services": [a.data() for a in pod.acts()],
			"requests": [r.data() for r in pod.requests()],
			"proposals": [p.data() for p in db.get_multi(pod.proposals())],
			"commitments": [c.data() for c in pod.commitments()],
			"memberships": [m.data() for m in pod.members(True)],
			"people": [p.data() for p in db.get_multi(pod.members())],
			"codebases": [c.data() for c in pod.codebases()],
			"expenses": [e.data() for e in pod.expenses()]
		})
	elif action == "membership":
		memship = db.get(cgi_get("membership"))
		succeed({
			"content": [c.data() for c in Content.query(Content.membership == memship.key).fetch()],
			"products": [p.data() for p in db.get_multi(memship.products)]
		})
	elif action == "person":
		person = db.get(cgi_get("person"))
		succeed({
			"services": len(person.acts()), # more efficient way?
			"memberships": [m.data() for m in person.memberships()],
			"commitments": sum([c.estimate for c in person.commitments()])
		})
	elif action == "responsibilities":
		person = db.get(cgi_get("person"))
		succeed([t.data() for t in person.tasks()])
	elif action == "enroll":
		succeed(enroll(cgi_get("agent"), cgi_get("pod"), cgi_get("person")).urlsafe())
	elif action == "manage":
		succeed(manage(cgi_get("agent"), cgi_get("membership"), cgi_get("content")).key.urlsafe())
	elif action == "confcode":
		send_mail(to=cgi_get("email"), subject="carecoin confirmation code",
			body=CONFCODE%(cgi_get("code"),))