Пример #1
0
    def get(self):
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt
        if cur_apt == None:
            response = {}
            response[
                'error'] = 'the apt: ' + apt_name + ' is not available for user: ' + user_email
            return self.respond(**response)

        for expense_id in cur_apt.expense_id_lst:
            expense_lst = Expense.query(
                Expense.expense_id == expense_id).fetch()
            if len(expense_lst) > 0:
                expense = expense_lst[0]
                if not expense.is_paid:
                    expense.checkout()
                    cur_apt.total_cost += expense.total_cost
                    cur_apt.put()

        self.respond(status="Success")
Пример #2
0
 def get(self):
     apt_id = self.request.get(IDENTIFIER_APT_ID)
     print "getExpenseListService, apt_id="+apt_id
     expenses_lst = []
     apt_lst = Apartment.query(Apartment.apt_id == apt_id).fetch()
     if len(apt_lst)!=0 :
         apt = apt_lst[0]
         expenses = apt.getAllexpenses()
         if len(expenses)!=0:
             for expense in expenses:
                 cur_expense = {}
                 cur_expense['expense_id'] = str(expense.expense_id)
                 creater_email = expense.creater_email
                 creaters = User.query(User.user_email == creater_email).fetch()
                 creater = creaters[0]
                 creater_nick_name = creater.nick_name
                 cur_expense['creater_nickname'] = creater_nick_name
                 cur_expense['photo'] = expense.cover_url
                 cur_expense['date'] = str(expense.last_edit)
                 cur_expense['expense_name'] = expense.expense_name
                 cur_expense['sharer_lst'] = expense.user_email_lst
                 cur_expense['is_paid'] = expense.is_paid
                 cur_expense['the_number_of_items'] = len(expense.item_id_lst)
                 cur_expense['total_cost'] = expense.total_cost
                 # cur_expense['approval_cost'] = expense.approval_cost
                 expenses_lst.append(cur_expense)
     self.respond(status="success", expenses_lst=expenses_lst)
Пример #3
0
    def get(self):

        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        # print "called: " + user_email + ", " + apt_name
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        user_info_lst = []
        for user_email in apt.user_email_lst:
            users = User.query(User.user_email == user_email).fetch()
            user = users[0]
            user_info = {}
            user_info['email:'] = user_email
            user_info['nick_name'] = user.nick_name
            user_info['owe'] = user.cost
            user_info['owed'] = user.borrow
            user_info['balance'] = user.owe
            user_info_lst.append(user_info)

        self.respond(user_info_lst = user_info_lst, total_cost = apt.total_cost, status="Success")
Пример #4
0
    def get(self):
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        # print "called: " + user_email + ", " + apt_name
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        cur_notebook_lst = NoteBook.query(
            NoteBook.notebook_id == cur_apt.notebook_id).fetch()
        if len(cur_notebook_lst) == 0:
            response = {}
            response[
                'error'] = 'we dont have notebook for the apt: ' + apt_name
            return self.respond(**response)

        cur_notebook = cur_notebook_lst[0]

        retList = []
        for noteid in cur_notebook.note_id_lst:
            note_lst = Note.query(Note.id == noteid).fetch()
            cur_note = note_lst[0]
            ret_note = {}
            ret_note['author'] = cur_note.author_email
            ret_note['description'] = cur_note.description
            date = str(cur_note.date)
            ret_note['last_edit_date'] = date
            retList.append(ret_note)

        self.respond(AllNoteLst=retList, status="Success")
Пример #5
0
    def get(self):
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        # print "called: " + user_email + ", " + apt_name
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        cur_notebook_lst = NoteBook.query( NoteBook.notebook_id == cur_apt.notebook_id).fetch()
        if len(cur_notebook_lst) == 0:
            response = {}
            response['error'] = 'we dont have notebook for the apt: ' + apt_name
            return self.respond(**response)


        cur_notebook = cur_notebook_lst[0]


        retList = []
        for noteid in cur_notebook.note_id_lst:
            note_lst = Note.query(Note.id == noteid).fetch()
            cur_note = note_lst[0]
            ret_note = {}
            ret_note['author'] = cur_note.author_email
            ret_note['description'] = cur_note.description
            date = str(cur_note.date)
            ret_note['last_edit_date'] = date
            retList.append(ret_note)

        self.respond(AllNoteLst = retList, status="Success")
Пример #6
0
    def get(self):

        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        # print "called: " + user_email + ", " + apt_name
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        user_info_lst = []
        for user_email in apt.user_email_lst:
            users = User.query(User.user_email == user_email).fetch()
            user = users[0]
            user_info = {}
            user_info['email:'] = user_email
            user_info['nick_name'] = user.nick_name
            user_info['owe'] = user.cost
            user_info['owed'] = user.borrow
            user_info['balance'] = user.owe
            user_info_lst.append(user_info)

        self.respond(user_info_lst=user_info_lst,
                     total_cost=apt.total_cost,
                     status="Success")
Пример #7
0
 def get(self):
     apt_id = self.request.get(IDENTIFIER_APT_ID)
     print "getExpenseListService, apt_id=" + apt_id
     expenses_lst = []
     apt_lst = Apartment.query(Apartment.apt_id == apt_id).fetch()
     if len(apt_lst) != 0:
         apt = apt_lst[0]
         expenses = apt.getAllexpenses()
         if len(expenses) != 0:
             for expense in expenses:
                 cur_expense = {}
                 cur_expense['expense_id'] = str(expense.expense_id)
                 creater_email = expense.creater_email
                 creaters = User.query(
                     User.user_email == creater_email).fetch()
                 creater = creaters[0]
                 creater_nick_name = creater.nick_name
                 cur_expense['creater_nickname'] = creater_nick_name
                 cur_expense['photo'] = expense.cover_url
                 cur_expense['date'] = str(expense.last_edit)
                 cur_expense['expense_name'] = expense.expense_name
                 cur_expense['sharer_lst'] = expense.user_email_lst
                 cur_expense['is_paid'] = expense.is_paid
                 cur_expense['the_number_of_items'] = len(
                     expense.item_id_lst)
                 cur_expense['total_cost'] = expense.total_cost
                 # cur_expense['approval_cost'] = expense.approval_cost
                 expenses_lst.append(cur_expense)
     self.respond(status="success", expenses_lst=expenses_lst)
Пример #8
0
    def get(self):
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        # print "called: " + user_email + ", " + apt_name
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        user_lst = User.query(User.apt_id == cur_apt.apt_id).fetch()

        sorted_user_lst = sorted(user_lst, key=lambda user:user.owe)

        first = 0
        end = len(sorted_user_lst) - 1

        payment_lst = []

        print "sorted_lst: " + str(sorted_user_lst)

        while first < end:
            first_user = sorted_user_lst[first]
            end_user = sorted_user_lst[end]
            if first_user.owe == 0:
                first += 1
                continue
            if end_user.owe == 0:
                end -= 1
                continue
            payment = {}

            payment['from'] = first_user.user_email
            payment['to'] = end_user.user_email



            if abs(first_user.owe) > end_user.owe:
                payment['amount'] = end_user.owe
                first_user.owe += end_user.owe
                end_user.owe = 0

            else:
                payment['amount'] = abs(first_user.owe)
                end_user.owe -= abs(first_user.owe)
                first_user.owe = 0


            print payment
            print first_user.user_email + ": " + str(first_user.owe)
            print end_user.user_email + ": " + str(end_user.owe)

            payment_lst.append(payment)
            first_user.put()
            end_user.put()

        self.respond(payment_lst = payment_lst, status="Success")
Пример #9
0
    def get(self):
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)

        users = User.query(User.user_email == user_email).fetch()
        if len(users) == 0:
            response = {}
            response['error'] = 'the email: ' + user_email + ' has not registered yet'
            return self.respond(**response)

        cur_user = users[0]
        bank_account = cur_user.bank_account
        nick_name = cur_user.nick_name
        owe = cur_user.cost
        owed = cur_user.borrow
        balance = cur_user.owe

        print("user information collected. e.g. bankaccount="+bank_account)

        tasks = cur_user.getAlltasks()
        finished_task_lst = []
        unfinished_task_lst = []

        # for task in tasks:
        #     cur_task = {}
        #     cur_task['task_id'] = task.task_id
        #     cur_task['task_name'] = task.task_name
        #     if task.finished:
        #         finished_task_lst.append(cur_task)
        #     else:
        #         unfinished_task_lst.append(cur_task)

        taskinfo = {}
        taskinfo['finished_task_lst'] = finished_task_lst
        taskinfo['unfinished_task_lst'] = unfinished_task_lst

        print("task collected")

        apt_id = cur_user.apt_id

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

        apt_info = {}
        if len(apts) > 0:
            apt = apts[0]
            apt_info['apt_name'] = apt.apt_name
            apt_info['apt_id'] = apt.apt_id
            apt_info['roommates_lst'] = apt.get_all_memebers_nickname()
            apt_info['apt_photo'] = apt.cover_url

        # usr_photo = cur_user.cover_url

        print("apartment information collected. now respond.")

        self.respond(status="Success", bank_account=bank_account, nick_name = nick_name,
                     user_email = user_email, owe=owe, owed = owed, balance = balance, apt_info = apt_info,
                     task_info = taskinfo, registered=True)
Пример #10
0
    def get(self):
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        # print "called: " + user_email + ", " + apt_name
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        user_lst = User.query(User.apt_id == cur_apt.apt_id).fetch()

        sorted_user_lst = sorted(user_lst, key=lambda user: user.owe)

        first = 0
        end = len(sorted_user_lst) - 1

        payment_lst = []

        print "sorted_lst: " + str(sorted_user_lst)

        while first < end:
            first_user = sorted_user_lst[first]
            end_user = sorted_user_lst[end]
            if first_user.owe == 0:
                first += 1
                continue
            if end_user.owe == 0:
                end -= 1
                continue
            payment = {}

            payment['from'] = first_user.user_email
            payment['to'] = end_user.user_email

            if abs(first_user.owe) > end_user.owe:
                payment['amount'] = end_user.owe
                first_user.owe += end_user.owe
                end_user.owe = 0

            else:
                payment['amount'] = abs(first_user.owe)
                end_user.owe -= abs(first_user.owe)
                first_user.owe = 0

            print payment
            print first_user.user_email + ": " + str(first_user.owe)
            print end_user.user_email + ": " + str(end_user.owe)

            payment_lst.append(payment)
            first_user.put()
            end_user.put()

        self.respond(payment_lst=payment_lst, status="Success")
Пример #11
0
    def get(self):

        expense_name = self.request.get(IDENTIFIER_EXPENSE_NAME)
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        if cur_apt == None:
            response = {}
            response[
                'error'] = 'the apt: ' + apt_name + ' is not available for user: '******'error'] = 'the apt: ' + apt_name + ' does not have a expense named: ' + expense_name
            return self.respond(**response)
        if cur_expense.is_paid:
            response = {}
            response[
                'error'] = 'the : ' + expense_name + ' has already been paid'
            return self.respond(**response)
        cur_expense.checkout()
        cur_apt.total_cost += cur_expense.total_cost
        cur_apt.put()

        user_info_lst = []
        for user_email in cur_apt.user_email_lst:
            users = User.query(User.user_email == user_email).fetch()
            user = users[0]
            user_info = {}
            user_info['email:'] = user_email
            user_info['nick_name'] = user.nick_name
            user_info['owe'] = user.cost
            user_info['owed'] = user.borrow
            user_info['balance'] = user.owe
            user_info_lst.append(user_info)

        self.respond(user_info_lst=user_info_lst, status="Success")
Пример #12
0
    def get(self):

        expense_name = self.request.get(IDENTIFIER_EXPENSE_NAME)
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()

        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        if cur_apt == None:
            response = {}
            response['error'] = 'the apt: ' + apt_name + ' is not available for user: '******'error'] = 'the apt: ' + apt_name + ' does not have a expense named: ' + expense_name
            return self.respond(**response)
        if cur_expense.is_paid:
            response = {}
            response['error'] = 'the : ' + expense_name + ' has already been paid'
            return self.respond(**response)
        cur_expense.checkout()
        cur_apt.total_cost += cur_expense.total_cost
        cur_apt.put()


        user_info_lst = []
        for user_email in cur_apt.user_email_lst:
            users = User.query(User.user_email == user_email).fetch()
            user = users[0]
            user_info = {}
            user_info['email:'] = user_email
            user_info['nick_name'] = user.nick_name
            user_info['owe'] = user.cost
            user_info['owed'] = user.borrow
            user_info['balance'] = user.owe
            user_info_lst.append(user_info)



        self.respond(user_info_lst = user_info_lst, status="Success")
Пример #13
0
    def get(self):

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

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

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

        # new_email = req_json[IDENTIFIER_NEW_EMAIL]
        new_email = self.request.get(IDENTIFIER_NEW_EMAIL)

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

        target_apt = None

        if len(apt_lst)!=0:
            target_apt = apt_lst[0]



        # for apt in apt_lst:
        #     if user_email in apt.user_email_lst:
        #         target_apt = apt
        #         break
        user_lst = User.query(User.user_email == new_email).fetch()

        # if target_apt == None:
        #     response = {}
        #     response['error'] = 'the email: ' + user_email + ' has not been registered'
        #     return self.respond(**response)
        if len(user_lst) == 0:
            response = {}
            response['error'] = 'the new email: ' + new_email + ' has not been registered'
            return self.respond(**response)

        new_user = user_lst[0]

        if not new_user.apt_id is None:
            response = {}
            response['error'] = 'the user: '******' cannot be added'
            return self.respond(**response)

        new_user.apt_id = target_apt.apt_id
        if not new_email in target_apt.user_email_lst:
            target_apt.user_email_lst.insert(0, new_email)
            target_apt.put()
        new_user.put()

        self.respond(apt_id = target_apt.apt_id, status="Success")
Пример #14
0
 def get(self):
     apt_id = self.request.get(IDENTIFIER_APT_ID)
     apts = Apartment.query(Apartment.apt_id == apt_id).fetch()
     user_nickname_lst=[]
     if apts[0]:
        apt = apts[0]
        for user_email in apt.user_email_lst:
            users = User.query(User.user_email == user_email).fetch()
            user = users[0]
            user_nickname_lst.append(user.nick_name)
        self.respond(status="success", apt_id=apt.apt_id, apt_name=apt.apt_name, creater_email=apt.user_email_lst, user_email_lst=apt.user_email_lst, user_nickname_lst=user_nickname_lst)
     else:
        print("cannot find the apartment with id :" + apt_id)
        self.respond(status="fail", error_msg="cannot find the apartment with id :" + apt_id)
Пример #15
0
    def get(self):

        apt_id = self.request.get(IDENTIFIER_APT_ID)
        target_apt_lst = Apartment.query(Apartment.apt_id == apt_id).fetch()
        if len(target_apt_lst) != 1:
            print "target_apt_lst length error:" + str(len(target_apt_lst))
        query_apt = target_apt_lst[0]

        expense_id_lst = query_apt.expense_id_lst
        print "expense_id_lst length:" + str(len(expense_id_lst))

        unassigned_tasks_lst = []
        assigned_tasks_lst = []
        finished_tasks_lst = []

        for expense_id in expense_id_lst:
            # expense_id = self.request.get(IDENTIFIER_EXPENSE_ID)
            expenses = Expense.query(Expense.expense_id == expense_id).fetch()
            if len(expenses) == 0:
                continue
            expense = expenses[0]

            tasks = expense.getAllTasks()

            for task in tasks:
                cur_task = {}
                cur_task['photo_blobkey'] = str(task.photo_blobkey)
                cur_task['creator_nickname'] = task.getCreaterNickName()
                cur_task['creator_email'] = task.creater_email
                cur_task['task_name'] = task.task_name
                cur_task['description'] = task.description
                cur_task['task_id'] = str(task.task_id)
                cur_task['expense_id'] = str(task.expense_id)
                cur_task['candidate_lst_str'] = task.getCandidateListString()
                if task.assigned:
                    cur_task['charger_name'] = task.getChargerNickName()
                    cur_task['charger_email'] = task.charger_email
                    if task.finished:
                        finished_tasks_lst.append(cur_task)
                    else:
                        assigned_tasks_lst.append(cur_task)
                else:
                    unassigned_tasks_lst.append(cur_task)

        task_info = {}
        task_info['finished_tasks_lst'] = finished_tasks_lst
        task_info['unassigned_tasks_lst'] = unassigned_tasks_lst
        task_info['assigned_tasks_lst'] = assigned_tasks_lst

        self.respond(task_info=task_info, status="Success")
Пример #16
0
    def get(self):

        apt_id = self.request.get(IDENTIFIER_APT_ID)
        target_apt_lst = Apartment.query(Apartment.apt_id == apt_id).fetch()
        if len(target_apt_lst)!=1:
            print "target_apt_lst length error:" + str(len(target_apt_lst))
        query_apt = target_apt_lst[0]

        expense_id_lst = query_apt.expense_id_lst
        print "expense_id_lst length:" + str(len(expense_id_lst))

        unassigned_tasks_lst = []
        assigned_tasks_lst = []
        finished_tasks_lst = []

        for expense_id in expense_id_lst:
            # expense_id = self.request.get(IDENTIFIER_EXPENSE_ID)
            expenses = Expense.query(Expense.expense_id == expense_id).fetch()
            if len(expenses) == 0:
                continue
            expense = expenses[0]

            tasks = expense.getAllTasks()

            for task in tasks:
                cur_task = {}
                cur_task['photo_blobkey'] = str(task.photo_blobkey)
                cur_task['creator_nickname'] = task.getCreaterNickName()
                cur_task['creator_email'] = task.creater_email
                cur_task['task_name'] = task.task_name
                cur_task['description'] = task.description
                cur_task['task_id'] = str(task.task_id)
                cur_task['expense_id'] = str(task.expense_id)
                cur_task['candidate_lst_str'] = task.getCandidateListString()
                if task.assigned:
                    cur_task['charger_name'] = task.getChargerNickName()
                    cur_task['charger_email'] = task.charger_email
                    if task.finished:
                        finished_tasks_lst.append(cur_task)
                    else:
                        assigned_tasks_lst.append(cur_task)
                else:
                    unassigned_tasks_lst.append(cur_task)

        task_info = {}
        task_info['finished_tasks_lst'] = finished_tasks_lst
        task_info['unassigned_tasks_lst'] = unassigned_tasks_lst
        task_info['assigned_tasks_lst'] = assigned_tasks_lst

        self.respond(task_info=task_info, status="Success")
Пример #17
0
    def get(self):

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

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

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

        # new_email = req_json[IDENTIFIER_NEW_EMAIL]
        new_email = self.request.get(IDENTIFIER_NEW_EMAIL)

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

        target_apt = None

        if len(apt_lst) != 0:
            target_apt = apt_lst[0]

        # for apt in apt_lst:
        #     if user_email in apt.user_email_lst:
        #         target_apt = apt
        #         break
        user_lst = User.query(User.user_email == new_email).fetch()

        # if target_apt == None:
        #     response = {}
        #     response['error'] = 'the email: ' + user_email + ' has not been registered'
        #     return self.respond(**response)
        if len(user_lst) == 0:
            response = {}
            response[
                'error'] = 'the new email: ' + new_email + ' has not been registered'
            return self.respond(**response)

        new_user = user_lst[0]

        if not new_user.apt_id is None:
            response = {}
            response['error'] = 'the user: '******' cannot be added'
            return self.respond(**response)

        new_user.apt_id = target_apt.apt_id
        if not new_email in target_apt.user_email_lst:
            target_apt.user_email_lst.insert(0, new_email)
            target_apt.put()
        new_user.put()

        self.respond(apt_id=target_apt.apt_id, status="Success")
Пример #18
0
    def get(self):

        # req_json = json.loads(self.request.body)
        # 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)
        # description = req_json[IDENTIFIER_DESCRIPTION_NAME]
        description = self.request.get(IDENTIFIER_DESCRIPTION_NAME)

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

        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        if cur_apt == None:
            response = {}
            response[
                'error'] = 'the apt: ' + apt_name + ' is not available for user: '******'error'] = 'we dont have notebook for the apt: ' + apt_name
            return self.respond(**response)

        cur_note_book = cur_note_book_lst[0]

        note_id = uuid.uuid4()
        note = Note(id=str(note_id),
                    description=description,
                    author_email=user_email,
                    notebook_id=cur_note_book_id)

        cur_note_book.note_id_lst.append(str(note_id))

        cur_note_book.put()
        note.put()

        self.respond(note_id=str(note_id),
                     notebook_id=cur_note_book_id,
                     status="Success")
Пример #19
0
    def get(self):

        # req_json = json.loads(self.request.body)
        # 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)
        # description = req_json[IDENTIFIER_DESCRIPTION_NAME]
        description = self.request.get(IDENTIFIER_DESCRIPTION_NAME)

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

        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt

        if cur_apt == None:
            response = {}
            response['error'] = 'the apt: ' + apt_name + ' is not available for user: '******'error'] = 'we dont have notebook for the apt: ' + apt_name
            return self.respond(**response)

        cur_note_book = cur_note_book_lst[0]

        note_id = uuid.uuid4()
        note = Note(id = str(note_id), description = description, author_email = user_email, notebook_id = cur_note_book_id)

        cur_note_book.note_id_lst.append(str(note_id))

        cur_note_book.put()
        note.put()

        self.respond(note_id = str(note_id), notebook_id = cur_note_book_id, status="Success")
Пример #20
0
 def get(self):
     apt_id = self.request.get(IDENTIFIER_APT_ID)
     apts = Apartment.query(Apartment.apt_id == apt_id).fetch()
     user_nickname_lst = []
     if apts[0]:
         apt = apts[0]
         for user_email in apt.user_email_lst:
             users = User.query(User.user_email == user_email).fetch()
             user = users[0]
             user_nickname_lst.append(user.nick_name)
         self.respond(status="success",
                      apt_id=apt.apt_id,
                      apt_name=apt.apt_name,
                      creater_email=apt.user_email_lst,
                      user_email_lst=apt.user_email_lst,
                      user_nickname_lst=user_nickname_lst)
     else:
         print("cannot find the apartment with id :" + apt_id)
         self.respond(status="fail",
                      error_msg="cannot find the apartment with id :" +
                      apt_id)
Пример #21
0
    def get(self):
        apt_name = self.request.get(IDENTIFIER_APT_NAME)
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt
        if cur_apt == None:
            response = {}
            response['error'] = 'the apt: ' + apt_name + ' is not available for user: ' + user_email
            return self.respond(**response)

        for expense_id in cur_apt.expense_id_lst:
            expense_lst = Expense.query(Expense.expense_id == expense_id).fetch()
            if len(expense_lst) > 0:
                expense = expense_lst[0]
                if not expense.is_paid:
                    expense.checkout()
                    cur_apt.total_cost += expense.total_cost
                    cur_apt.put()

        self.respond(status="Success")
Пример #22
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")
Пример #23
0
    def get(self):
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)
        apt_name = self.request.get(IDENTIFIER_APT_NAME)

        apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()
        cur_apt = None
        for apt in apt_lst:
            if user_email in apt.user_email_lst:
                cur_apt = apt
        if cur_apt == None:
            response = {}
            response[
                'error'] = 'the apt: ' + apt_name + ' is not available for user: '******'id'] = str(note.id)
            cur_note['description'] = note.description
            author_email = note.author_email
            authors = User.query(User.user_email == author_email).fetch()
            author = authors[0]
            writer = author.nick_name
            cur_note['writer'] = writer
            cur_note['date'] = str(note.date)
            note_lst.append(cur_note)
        expenses_lst = []

        expenses = cur_apt.getAllexpenses()

        for expense in expenses:
            cur_expense = {}
            cur_expense['expense_id'] = str(expense.expense_id)
            creater_email = expense.creater_email
            creaters = User.query(User.user_email == creater_email).fetch()
            creater = creaters[0]
            creater_nick_name = creater.nick_name
            cur_expense['creater_nickname'] = creater_nick_name
            cur_expense['photo'] = expense.cover_url
            cur_expense['date'] = str(expense.last_edit)
            cur_expense['expense_name'] = expense.expense_name
            cur_expense['sharer_lst'] = expense.user_email_lst
            cur_expense['is_paid'] = expense.is_paid
            cur_expense['the_number_of_items'] = len(expense.item_id_lst)
            cur_expense['total_cost'] = str(expense.total_cost)
            expenses_lst.append(cur_expense)

        self.respond(roomates_email_lst=roomates_email_lst,
                     roomates_nickname_lst=roomates_nickname_lst,
                     apt_id=str(apt_id),
                     apt_name=apt_name,
                     cover_url=cover_url,
                     notes_lst=note_lst,
                     expenses_lst=expenses_lst,
                     status="Success")
Пример #24
0
    def get(self):
        user_email = self.request.get(IDENTIFIER_USER_EMAIL)

        users = User.query(User.user_email == user_email).fetch()
        if len(users) == 0:
            response = {}
            response[
                'error'] = 'the email: ' + user_email + ' has not registered yet'
            return self.respond(**response)

        cur_user = users[0]
        bank_account = cur_user.bank_account
        nick_name = cur_user.nick_name
        owe = cur_user.cost
        owed = cur_user.borrow
        balance = cur_user.owe

        print("user information collected. e.g. bankaccount=" + bank_account)

        tasks = cur_user.getAlltasks()
        finished_task_lst = []
        unfinished_task_lst = []

        # for task in tasks:
        #     cur_task = {}
        #     cur_task['task_id'] = task.task_id
        #     cur_task['task_name'] = task.task_name
        #     if task.finished:
        #         finished_task_lst.append(cur_task)
        #     else:
        #         unfinished_task_lst.append(cur_task)

        taskinfo = {}
        taskinfo['finished_task_lst'] = finished_task_lst
        taskinfo['unfinished_task_lst'] = unfinished_task_lst

        print("task collected")

        apt_id = cur_user.apt_id

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

        apt_info = {}
        if len(apts) > 0:
            apt = apts[0]
            apt_info['apt_name'] = apt.apt_name
            apt_info['apt_id'] = apt.apt_id
            apt_info['roommates_lst'] = apt.get_all_memebers_nickname()
            apt_info['apt_photo'] = apt.cover_url

        # usr_photo = cur_user.cover_url

        print("apartment information collected. now respond.")

        self.respond(status="Success",
                     bank_account=bank_account,
                     nick_name=nick_name,
                     user_email=user_email,
                     owe=owe,
                     owed=owed,
                     balance=balance,
                     apt_info=apt_info,
                     task_info=taskinfo,
                     registered=True)
Пример #25
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")
Пример #26
0
        def get(self):
            user_email = self.request.get(IDENTIFIER_USER_EMAIL)
            apt_name = self.request.get(IDENTIFIER_APT_NAME)

            apt_lst = Apartment.query(Apartment.apt_name == apt_name).fetch()
            cur_apt = None
            for apt in apt_lst:
                if user_email in apt.user_email_lst:
                    cur_apt = apt
            if cur_apt == None:
                response = {}
                response['error'] = 'the apt: ' + apt_name + ' is not available for user: '******'id'] = str(note.id)
                cur_note['description'] = note.description
                author_email = note.author_email
                authors = User.query(User.user_email == author_email).fetch()
                author = authors[0]
                writer = author.nick_name
                cur_note['writer'] = writer
                cur_note['date'] = str(note.date)
                note_lst.append(cur_note)
            expenses_lst = []

            expenses = cur_apt.getAllexpenses()

            for expense in expenses:
                cur_expense = {}
                cur_expense['expense_id'] = str(expense.expense_id)
                creater_email = expense.creater_email
                creaters = User.query(User.user_email == creater_email).fetch()
                creater = creaters[0]
                creater_nick_name = creater.nick_name
                cur_expense['creater_nickname'] = creater_nick_name
                cur_expense['photo'] = expense.cover_url
                cur_expense['date'] = str(expense.last_edit)
                cur_expense['expense_name'] = expense.expense_name
                cur_expense['sharer_lst'] = expense.user_email_lst
                cur_expense['is_paid'] = expense.is_paid
                cur_expense['the_number_of_items'] = len(expense.item_id_lst)
                cur_expense['total_cost'] = str(expense.total_cost)
                expenses_lst.append(cur_expense)


            self.respond(roomates_email_lst = roomates_email_lst,
                         roomates_nickname_lst = roomates_nickname_lst,
                         apt_id = str(apt_id),
                         apt_name = apt_name,
                         cover_url = cover_url,
                         notes_lst = note_lst,
                         expenses_lst = expenses_lst,
                         status="Success")
Пример #27
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")
Пример #28
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")