Exemplo n.º 1
0
    def post(self):
        session = db.get_session()

        if not request.json:
            abort(400, 'Malformed Request')

        userInfo = authorize(request)

        if not userInfo:
            abort(403, 'Invalid Auth Token')

        (request_title, request_content) = unpack(request.json,
                                                  'request_title',
                                                  'request_content')

        request_time = getLocalTime()

        new_request = db.Request(user_name=userInfo.username,
                                 user_id=userInfo.id,
                                 avatar=userInfo.avatar,
                                 request_title=request_title,
                                 request_content=request_content,
                                 request_time=request_time)
        session.add(new_request)
        session.commit()
        session.close()
        return {'message': 'success'}
Exemplo n.º 2
0
    def post(self):
        session = db.get_session()

        if not request.json or not request.args:
            abort(400, 'Missing Arguments')

        userInfo = authorize(request)

        if not userInfo:
            abort(403, 'Invalid Auth Token')

        request_id = request.args.get('req_id')
        [comment_content] = unpack(request.json, 'comment_content')
        req_info = session.query(db.Request).filter_by(id=request_id).first()

        if not req_info:
            abort(405, 'Invalid Request Id')

        new_comment = db.Comment(request_id=request_id,
                                 commenter_id=userInfo.id,
                                 commenter_name=userInfo.username,
                                 commenter_avatar=userInfo.avatar,
                                 comment_content=comment_content,
                                 comment_time=getLocalTime())
        session.add(new_comment)
        session.commit()
        session.close()
        return {'message': 'success'}
Exemplo n.º 3
0
 def post(self):
     user = authorize(request)
     (assignment_id, title, topic, backend_skill, frontend_skill) = unpack(request.json, 'assignment_id', 'title', 'topic', 'backend_skill', 'frontend_skill')
     session = db.get_session()
     num_backend = 0
     num_frontend = 0
     if (backend_skill == frontend_skill):
         num_backend = 1
         skill = 'backend'
     elif (backend_skill > frontend_skill):
         num_backend = 1
         skill = 'backend'
     else:
         num_frontend = 1
         skill = 'frontend'
     curr_assignment = session.query(db.Assignment).filter_by(id=assignment_id).first()
     group_chatroom = db.ChatRoom(course_id=curr_assignment.course_id, channel="group")
     session.add(group_chatroom)
     session.commit()
     new_group = db.Group(assignment_id=assignment_id, leader_id=user.id, title=title, topic=topic, group_chatroom_id = group_chatroom.id, num_member=1, num_backend=num_backend, num_frontend=num_frontend)
     session.add(new_group)
     session.commit()
     new_member = db.GroupMember(group_id=new_group.id, student_id=user.id, role=skill)
     session.add(new_member)
     session.commit()
     session.close()
     return {
         'message': 'success'
     }
Exemplo n.º 4
0
 def post(self):
     session = db.get_session()
     if not request.json:
         abort(400, 'Malformed Request')
     (username, password, email, phone, avatar) = unpack(request.json, 'username', 'password', 'email', 'phone', 'avatar')
     if username == '' or password == '' or email == '' or phone == '':
         abort(400, 'Malformed Request')
     check_username = session.query(db.User).filter_by(username=username).first()
     check_email = session.query(db.User).filter_by(email=email).first()
     if check_username != None:
         abort(409, 'Username Taken')
     if check_email != None:
         abort(410, 'Email Taken')
     key = os.urandom(24)
     password_bytes = password.encode()
     hash_password = hashlib.sha256(key + password_bytes).hexdigest()
     new_user = db.User(username=username,
                        password=hash_password,
                        email=email,
                        phone=phone,
                        avatar=base_img_url+avatar,
                        token='',
                        key=key)
     session.add(new_user)
     from run import app
     send_register_email(app, username, email)
     session.commit()
     session.close()
     return { 'message': 'success' }
Exemplo n.º 5
0
    def post(self):
        session = db.get_session()
        userInfo = authorize(request)

        if not request.json:
            abort(400, 'Malformed Request')

        if not userInfo:
            abort(403, 'Invalid Auth Token')

        (property_id, review_content) = unpack(request.json, 'property_id', 'review_content')
        review_date = getLocalTime()

        new_review = db.Review(property_id=property_id,
                               reviewer_id=userInfo.id,
                               reviewer_name=userInfo.username,
                               review_date=review_date,
                               review_content=review_content,
                               head_picture=userInfo.avatar)


        order_info = session.query(db.Order).filter_by(user_id=userInfo.id,property_id=property_id).first()

        if order_info:
            order_info.comment_status = False

        session.add(new_review)
        session.commit()
        session.close()
        return {'message': 'success'}
Exemplo n.º 6
0
 def get(self):
     user = authorize(request)
     course_id = int(request.args.get('course_id', None))
     channel = request.args.get('channel', None)
     if (channel != "public" and channel != "group"):
         abort(400, "Wrong channel request")
     session = db.get_session()
     if (channel == "public"):
         chatroom = session.query(db.ChatRoom).filter_by(
             course_id=course_id).filter_by(channel=channel).first()
         session.close()
     else:
         assignments = session.query(db.Assignment)
         for assignment in assignments:
             if (assignment.course_id == course_id):
                 break
         groupMembers = session.query(
             db.GroupMember).filter_by(student_id=user.id).all()
         if (groupMembers is None):
             abort(400, "User is not in a group")
         found = 0
         for groupMember in groupMembers:
             group = session.query(
                 db.Group).filter_by(id=groupMember.group_id).first()
             if (group.assignment_id == assignment.id):
                 found = 1
                 break
         session.close()
         if (found == 0):
             return None
         return {'chat_room_id': group.group_chatroom_id}
     if (chatroom is None):
         return None
     return {'chat_room_id': chatroom.id}
Exemplo n.º 7
0
    def get(self):
        session = db.get_session()

        user = authorize(request)
        user_id = request.args.get('user_id', None)
        if (user_id is not None):
            user = session.query(db.User).filter_by(id=user_id).first()


        pro_host = session.query(db.Host).filter_by(host_id=user.id).all()
        res = []
        for host_obj in pro_host:
            property_id = host_obj.property_id
            pro_obj = session.query(db.Property).filter_by(property_id=property_id).first()
            img_obj = session.query(db.Image).filter_by(property_id=property_id).first()
            add_obj = session.query(db.Address).filter_by(property_id=property_id).first()
            ord_obj = session.query(db.Order).filter_by(property_id=property_id).first()
            if not ord_obj:
                ord_obj = 0

            res.append(getAllProOfHost(ord_obj,pro_obj, img_obj, add_obj))

        session.close()
        return {
            "id": user.id,
            'username': user.username,
            'email': user.email,
            'phone': user.phone,
            'avatar': user.avatar,
            'properties': res
        }
Exemplo n.º 8
0
    def delete(self):
        session = db.get_session()

        if not request.args:
            abort(400, 'Missing Arguments')

        userInfo = authorize(request)

        if not userInfo:
            abort(403, 'Invalid Auth Token')

        property_id = request.args.get('property_id')

        host_obj = session.query(db.Host).filter_by(
            property_id=property_id, host_id=userInfo.id).first()

        if not host_obj:
            abort(405, 'Invalid property_id')
        else:
            pro_obj = session.query(
                db.Property).filter_by(property_id=property_id).first()
            add_obj = session.query(
                db.Address).filter_by(property_id=property_id).first()

            session.delete(pro_obj)
            session.delete(add_obj)
            session.delete(host_obj)

            session.commit()

        session.close()
        return {'message': 'success'}
Exemplo n.º 9
0
 def get(self):
     course_id = int(request.args.get('course_id', None))
     session = db.get_session()
     course = session.query(db.Course).filter_by(id=course_id).first()
     session.close()
     return {
         'courseInfo': getCourseInfo(course)
     }
Exemplo n.º 10
0
 def get(self):
     resource_id = int(request.args.get('resource_id', None))
     session = db.get_session()
     resource = session.query(db.Resource).filter_by(id=resource_id).first()
     session.close()
     if (resource is None):
         return None
     return getResourceInfo(resource)
Exemplo n.º 11
0
def generatePropertyId():
    while True:
        pro_id = random.randint(10000, 100000)
        session = db.get_session()
        pro_info = session.query(
            db.Property).filter_by(property_id=pro_id).first()
        if not pro_info:
            break
    return pro_id
Exemplo n.º 12
0
 def get(self):
     user = authorize(request)
     thread_id = int(request.args.get('thread_id', None))
     session = db.get_session()
     thread = session.query(db.Thread).filter_by(id=thread_id).first()
     if (thread is None):
         return None
     session.close()
     return getThreadInfo(thread)
Exemplo n.º 13
0
 def get(self):
     session = db.get_session()
     courses = session.query(db.Course)
     session.close()
     if (courses is None):
         return None
     courseList = []
     for course in courses:
         courseList.append(getCourseInfo(course))
     return courseList
Exemplo n.º 14
0
def authorize(request):
    res = request.headers.get('Authorization', None)
    if not res:
        abort(403, 'Unsupplied Authorization Token')
    session = db.get_session()
    user = session.query(db.User).filter_by(token=res).first()
    session.close()
    if not user:
        abort(403, 'Invalid Authorization Token')
    return user
Exemplo n.º 15
0
def getMessageInfo(raw):
    session = db.get_session()
    user = session.query(db.User).filter_by(id=raw.user_id).first()
    session.close()
    return {
        "id": raw.id,
        'user_id': raw.user_id,
        'user_name': user.name,
        'message': raw.message
    }
Exemplo n.º 16
0
 def post(self):
     authorize(request)
     (course_id, title, group, content) = unpack(request.json, 'course_id', 'title', 'group', 'content')
     session = db.get_session()
     new_resource = db.Resource(course_id=course_id, title=title, content=content, group=group)
     session.add(new_resource)
     session.commit()
     session.close()
     return {
         'message': 'success'
     }
Exemplo n.º 17
0
 def get(self):
     authorize(request)
     group_id = int(request.args.get('group_id', None))
     session = db.get_session()
     curr_group = session.query(db.Group).filter_by(id=group_id).first()
     session.close()
     if (curr_group is None):
         return None
     return{
         'groupInfo': getGroupInfo(curr_group)
     }
Exemplo n.º 18
0
 def post(self):
     user = authorize(request)
     (thread_id, publisher_id, content) = unpack(request.json, 'thread_id', 'publisher_id', 'content')
     session = db.get_session()
     comment = db.Comment(thread_id=thread_id, publisher_id=publisher_id, content=content)
     session.add(comment)
     session.commit()
     session.close()
     return {
         'message': 'success'
     }
Exemplo n.º 19
0
 def post(self):
     user = authorize(request)
     (course_id, title, content) = unpack(request.json, 'course_id', 'title', 'content')
     session = db.get_session()
     thread = db.Thread(course_id=course_id, title=title, content=content, publisher_id = user.id, up_vote = 0)
     session.add(thread)
     session.commit()
     session.close()
     return {
         'message': 'success'
     }
Exemplo n.º 20
0
 def get(self):
     user = authorize(request)
     chat_room_id = int(request.args.get('chat_room_id', None))
     session = db.get_session()
     messages = session.query(
         db.Message).filter_by(chat_room_id=chat_room_id).all()
     session.close()
     messageList = []
     for message in messages:
         messageList.append(getMessageInfo(message))
     return messageList
Exemplo n.º 21
0
 def get(self):
     course_id = int(request.args.get('course_id', None))
     session = db.get_session()
     notices = session.query(db.Notice).filter_by(course_id=course_id).all()
     session.close()
     if (notices is None):
         return None
     noticeList = []
     for notice in notices:
         noticeList.append(getNoticeInfo(notice))
     return noticeList
Exemplo n.º 22
0
 def get(self):
     authorize(request)
     course_id = int(request.args.get('course_id', None))
     session = db.get_session()
     assignment = session.query(db.Assignment).filter_by(course_id=course_id).first()
     session.close()
     if (assignment is None):
         return None
     return {
         'assignmentInfo': getAssignmentInfo(assignment)
     }
Exemplo n.º 23
0
 def post(self):
     authorize(request)
     (course_id, title, content, publisher_id) = unpack(request.json, 'course_id', 'title', 'content', 'publisher_id')
     session = db.get_session()
     new_notice = db.Notice(course_id=course_id, title=title, content=content, publisher_id=publisher_id)
     session.add(new_notice)
     session.commit()
     session.close()
     return {
         'message': 'success'
     }
Exemplo n.º 24
0
 def post(self):
     authorize(request)
     (course_id, title, publish_date, due_date, group_size, all_topics, content) = unpack(request.json, 'course_id', 'title', 'publish_date', 'due_date', 'group_size', 'all_topics', 'content')
     session = db.get_session()
     new_assignment = db.Assignment(course_id=course_id, title=title, publish_date=publish_date, due_date=due_date, group_size=group_size, all_topics=all_topics, content=content)
     session.add(new_assignment)
     session.commit()
     session.close()
     return {
         'message': 'success'
     }
Exemplo n.º 25
0
 def get(self):
     course_id = int(request.args.get('course_id', None))
     session = db.get_session()
     staffs = session.query(db.Teaching).filter_by(course_id=course_id).all()
     session.close()
     if (staffs is None):
         return None
     satffList = []
     for satff in staffs:
         satffList.append(getStaffInfo(satff))
     return satffList
Exemplo n.º 26
0
 def get(self):
     course_id = int(request.args.get('course_id', None))
     session = db.get_session()
     resources = session.query(db.Resource).filter_by(course_id=course_id).all()
     session.close()
     if (resources is None):
         return None
     resourceList = []
     for resource in resources:
         resourceList.append(getResourceInfo(resource))
     return resourceList
Exemplo n.º 27
0
 def get(self):
     user = authorize(request)
     thread_id = int(request.args.get('thread_id', None))
     session = db.get_session()
     comments = session.query(db.Comment).filter_by(thread_id=thread_id).all()
     session.close()
     if (comments is None):
         return None
     commentList = []
     for comment in comments:
         commentList.append(getCommentInfo(comment))
     return commentList
Exemplo n.º 28
0
 def get(self):
     authorize(request)
     course_id = int(request.args.get('course_id', None))
     session = db.get_session()
     threads = session.query(db.Thread).filter_by(course_id=course_id).all()
     session.close()
     if (threads is None):
         return None
     threadList = []
     for thread in threads:
         threadList.append(getThreadInfo(thread))
     return threadList
Exemplo n.º 29
0
 def get(self):
     authorize(request)
     group_id = int(request.args.get('group_id', None))
     session = db.get_session()
     members = session.query(db.GroupMember).filter_by(group_id=group_id).all()
     session.close()
     if (members is None):
         return None
     memberList = []
     for member in members:
         memberList.append(getGroupMebmerInfo(member))
     return memberList
Exemplo n.º 30
0
 def get(self):
     authorize(request)
     assignment_id = int(request.args.get('assignment_id', None))
     session = db.get_session()
     groups = session.query(db.Group).filter_by(assignment_id=assignment_id).all()
     session.close()
     if (groups is None):
         return None
     groupList = []
     for group in groups:
         groupList.append(getGroupInfo(group))
     return groupList