Пример #1
0
def note_edit():
    [token,note_id,note_content] = require_arguments('token','note_id','note_content')
    #这个错怎么处理
    user = auth_by_token(token)
    if not user:
        raise InvalidArgument('token required')
    other_note = note_by_id(note_id)
    other_note.note_content = note_content
    other_note.save()
    # if 'title' in request.form:
    #     title = request.form['title']
    #     other_note.title=title
    #     other_note.save()
    # if 'text' in request.form:
    #     text = request.form['text']
    #     note_content.text=text
    #     note_content.save()
    #     other_note.note_content=note_content
    #     other_note.save()
    # if 'image_url' in request.form:
    #     image_url = request.form['image_url']
    #     note_content.image_url=image_url
    #     note_content.save()
    #     other_note.note_content=note_content
    #     other_note.save()
    return {'status':'success'}
Пример #2
0
def new_assignment():
    days_given = require_arguments('days_given')
    try:
        days_given = int(days_given)
    except ValueError:
        raise InvalidArgument('days given must be an integar')
    students = request.json.get('student')
    if students is None:
        raise InvalidArgument('students required')
    token = request.json.get('token')
    if not token:
        raise InvalidArgument('token required')
    problems = request.json.get('problems')
    if not problems:
        raise InvalidArgument('problems required')

    user = auth_by_token(token,min_privilege='teacher')
    for student in students:
        if User.objects(id=students).count() == 0:
            raise InvalidArgument('user '+student+' does not exist')
        scored_problems = []
        for problem in problems:
            problem_id = problem.get('id')
            point = problem.get('point')
            scored_problems.append(ScoredProblem(problem=Problem.objects(id=problem_id).first(),point=point))
        date = datetime.datetime.now()
        assignment = Assignment(owner=user,scored_problems=scored_problems,students=students,assign_time=date,days_given=days_given).save()
        return success({'id':str(assignment.id)})        
Пример #3
0
def material_add():
    #  验证登陆
    token = request.form.get("token")
    if not token:
        return {"status": "failed", "data": "token required"}
    user = auth_by_token(token)
    if not user:
        return {"status": "failed", "data": "invalid token"}

    if 'title' in request.form:
        title = request.form['title']
    else:
        return {"status": "failed", "data": "title required"}
    if 'content' in request.form:
        content = request.form['content']
    else:
        return {"status": "failed", "data": "content required"}
    if 'category' in request.form:
        category = request.form['category']
    else:
        return {"status": "failed", "data": "category required"}

    if user.type not in ['teacher', 'student']:
        return {"status": "failed", "data": "invalid user type"}
    if user.type == "teacher" and category not in ['经典教案', '网课视频', '笔记展示']:
        return {"status": "failed", "data": "category invalid"}
    if user.type == "student" and category != '笔记展示':
        return {"status": "failed", "data": "category invalid"}

    mat = Material(content=content, title=title, category=category, owner=user)
    mat.save()

    return {"status": "success", "data": {"id": str(mat.id)}}
Пример #4
0
def note_delete():
    [token,note_id] = require_arguments('token','note_id')
    #需弹窗确认是否删除
    user = auth_by_token(token)
    if not user:
        raise InvalidArgument('token required')
    Other_note.objects(id=note_id).delete()
    return {'status':'success'}
Пример #5
0
def add_event():
    [token, event_name,
     event_type] = require_arguments('token', 'event_name', 'event_type')
    user = auth_by_token(token)
    #problem = Problem(problem=problem,key=key,type_=type_,owner=user,difficulty=difficulty).save()
    event = Event(event_name=event_name, event_type=event_type,
                  owner=user).save()
    return success({'id': str(event.id)})
Пример #6
0
def get_user_event():
    [token] = require_arguments('token')
    user = auth_by_token(token)
    #event = Event.objects(owner_name=user.username).first()
    event = Event.objects.get(owner=user)
    return success({
        'event_name': event.event_name,
        'event_type': event.event_type
    })
Пример #7
0
def edit_event():
    [token, id, event_name,
     event_type] = require_arguments('token', 'id', 'event_name', 'event_type')
    user = auth_by_token(token)
    event = event_by_id(id)
    event.event_name = event_name
    event.event_type = event_type
    event.save()
    return {'status': 'success'}
Пример #8
0
def problem_add():

    [token,problem,key,type_,difficulty] = require_arguments('token','problem','key','type_','difficulty')
    user = auth_by_token(token,min_privilege='teacher')
    try:
        difficulty = int(difficulty)
    except ValueError:
        raise InvalidArgument('difficulty must be an integar')
    problem = Problem(problem=problem,key=key,type_=type_,owner=user,difficulty=difficulty).save()

    return success({'id':str(problem.id)})
Пример #9
0
def edit_process():
    [token, id, process_name, book, section,
     brief_intro] = require_arguments('token', 'id', 'process_name', 'book',
                                      'section', 'brief_intro')
    user = auth_by_token(toketn)
    process = process_by_id(id)
    process.process_name = process_name
    process.book = book
    process.section = section
    process.brief_intro = brief_intro
    process.save()
    return {'status': 'success'}
Пример #10
0
def record_time(record,token):
    #五秒一次
    flag = False
    try:
        user = auth_by_token(token)
        flag = True
        record = record + 5
    #InvalidArgument()?
    except InvalidArgument:
        flag = False
    return {'user':user,'record_time':record,
    'condition':flag}
Пример #11
0
def add_process():
    [token, process_name, book, section,
     brief_intro] = require_arguments('token', 'process_name', 'book',
                                      'section', 'brief_intro')
    user = auth_by_token(token)
    #problem = Problem(problem=problem,key=key,type_=type_,owner=user,difficulty=difficulty).save()
    process = Process(owner=user,
                      process_name=process_name,
                      book=book,
                      section=section,
                      brief_intro=brief_intro).save()
    return success({'id': str(process.id)})
Пример #12
0
def on_join(data):
    token = data.get("token")
    if not token:
        return {"status": "failed", "data": "token required"}
    to = data.get("to")
    if not to:
        return {"status": "failed", "data": "to required"}
    user = auth_by_token(token)
    if not user:
        return {"status": "failed", "data": "token invalid"}
    # user.username to to
    join_room('{}{}'.format(user.username, to))
    return {"status": "success", "data": "you have joined"}
Пример #13
0
def user_note():
    [token] = require_arguments('token')
    user = auth_by_token(token)
    #process = process.objects(owner_name=user.username).first()
    try:
        other_note = Other_note.objects.get(owner=user)
    except:
        other_note = None
    #     process_name = '学习'
    #     process_brief_intro = '复习所学内容'
    #     Process(owner=user,process_name=process_name,brief_intro=process_brief_intro).save()
    return success({'note_content':other_note.note_content,
            'process_brief_intro':process.brief_intro})
Пример #14
0
def on_message(data):
    token = data.get("token")
    if not token:
        return {"status": "failed", "data": "token required"}
    to = data.get("to")
    if not to:
        return {"status": "failed", "data": "to required"}
    message = data.get('message')
    if not message:
        return {"status": "failed", "data": "message required"}
    user = auth_by_token(token)
    if not user:
        return {"status": "failed", "data": "token invalid"}
    send(message, room='{}{}'.format(to, user.username))
    return {"status": "success", "data": "message sent"}
Пример #15
0
def note_add():
    [token,note_category,note_content]=require_arguments('token','note_category','note_content')
    user = auth_by_token(token)
    other_note = Other_note(owner=user,note_content=note_content).save()
    # if 'text' in request.form:
    #     text = request.form['text']
    #     note_content.text=text
    #     note_content.save()
    #     other_note.note_content=note_content
    #     other_note.save()
    # if 'image_url' in request.form:
    #     image_url = request.form['image_url']
    #     note_content.image_url=image_url
    #     note_content.save()
    #     other_note.note_content=note_content
    #     other_note.save()
    return {'status':'success'}
Пример #16
0
def user_process():
    [token] = require_arguments('token')
    user = auth_by_token(token)
    #process = process.objects(owner_name=user.username).first()
    if Process.objects(owner=user).count() > 0:
        processes = Process.objects(owner=user).all()
        # return success({'process_name':processes.process_name,'process_brief_intro':processes.brief_intro})
        return success([{
            'process_name': process.process_name,
            'process_brief_intro': process.brief_intro
        } for process in processes])
    else:
        process_name = '学习'
        process_brief_intro = '学习永无止境'
        Process(owner=user,
                process_name=process_name,
                brief_intro=process_brief_intro).save()
        processes = Process.objects.get(owner=user).all()
        return success([{
            'process_name': process.process_name,
            'process_brief_intro': process.brief_intro
        } for process in processes])
Пример #17
0
def auto_check_answer():
    [token,answer_id]=require_arguments('token','answer_id')
    user = auth_by_token(token)
    answers = answer_by_id(answer_id)
    assignment = answers.assignment
    problems = answers.assignment.scored_problems

    submit_time = datetime.datetime.now()
    t = assignment.days_given
    deadline = assignment.assign_time + datetime.timedelta(days=t)
    if submit_time > deadline:
        raise InvalidArgument('you have missed the deadline')
    for index,answer in enumerate(answers):
        problem = problems[index]
        if answer == problem.problem.key:
            answer.points_get.append(problems[index].point)
        else:
            fault_answer = FaultAnswer(answer=answer,problems=problem).save()
            fault = Fault(owner=user,fault_answer=fault_answer)
            fault.save()
    answer.save()
    return success(answer)
Пример #18
0
def delete_process():
    [token, id] = require_arguments('token', 'id')
    user = auth_by_token(token)
    Process.objects(id=id).delete()
    return {'status': 'success'}
Пример #19
0
def material_delete():
    #  验证登陆
    token = request.form.get("token")
    if not token:
        return {"status": "failed", "data": "token required"}
    user = auth_by_token(token)
    if not user:
        return {"status": "failed", "data": "invalid token"}

    id = request.form.get("id", default=None)
    if not id:
        return {"status": "failed", "data": "id required"}
    material = Material.objects(id=id).first()
    if not material:
        return {"status": "failed", "data": "id does not exist"}

    if material.owner != user:
        return {"status": "failed", "data": "forbidden"}

    material.delete()
    return {"status": "success"}


#  import os
# from flask import Flask,request,Blueprint
# from flask_mongoengine import MongoEngine
# from mongoengine import  Document, StringField, ReferenceField, DateTimeField,EmbeddedDocumentField,ListField,EmbeddedDocument
# from flaskr.auth import auth_by_token

# bp = Blueprint('material', __name__, url_prefix='/material')

# class Material(Document):
#     title = StringField(required=True)
#     content = StringField(required=True)
#     owner = ReferenceField('User',required=True)
#     category = StringField(required=True)#资料类型?
#     #搜索时所占权重?
#     meta = {'indexes':[{
#         'fields':['$title','content'],
#         'default_language':'English',#默认语言是英语
#         'weights':{'title':10,'content':2}
#     }]}

# #未登录也可进入,因而要改
# @bp.route('/material_add',methods=['POST'])
# def material_add():
#     # 验证登陆
#     token = request.form.get('token')
#     if not token:
#         return {"status":"failed","data":"token required"}
#     user = auth_by_token(token)
#     if not user:
#         return {"status":"failed",'data':"invalid token"}

#     if 'title' in request.form:
#         title = request.form["title"]
#     else:
#         return {"status":"failed",'data':"title required"}
#     if 'content' in request.form:
#         content=request.form['content']
#     else:
#         return {"status":"failed",'data':"content required"}
#     if 'category' in request.form:
#         category = request.form['category']
#     else:
#         return {"status":"failed",'data':"category required"}
#     if user.type_ not in ['teacher','student']:
#         return {"status":"failed",'data':"invalid user type"}
#     if user.type_ == 'teacher' and category not in ['经典教案','网课视频','学生笔记','教材链接']:
#         return {'status':"failed","data":"category invalid"}
#     if user.type_ == 'student' and category not in ['学生笔记','网课视频','教材链接']:#教案学生和教师还分吗?
#       return {'status':'failed','data':'category invalid'}

#     mat = Material(title=title,content=content,category=category,owner=user)
#     mat.save()

#     return {'status':"success","data":{'id':str(mat.id)}}

# @bp.route('/material_by_id',methods=['POST'])
# def meterial_by_id():
#     id = request.form.get('id',default=None)
#     if not id:
#         return {'status':'failed','data':'id required'}
#     material = Material.objects(id=id).first()
#     if not material:
#         return {'status':'failed','data':'id does not exist'}
#     return {'status':'success','data':{
#         'title':material.title,
#         'category':material.category,
#         'content':material.content,
#         'owner_name':material.owner.username
#     }}

# @bp.route('/material_search',methods=['POST'])
# def material_search():
#     text = request.form.get('text',default=None)
#     if not text:
#         return {'status':'failed',"data":'text required'}

#     materials = Material.objects.search_text(text)
#     return {'status':"success",'data':
#             [{'id':str(material.id),
#               'title':material.title,
#               'category':material.category,
#               'content':material.content,
#               'owner_name':material.owner.username} for material in materials#for循环
#             ]
#     }

# @bp.route('/material_delete',methods=['POST'])
# def material_delete():
#     # 验证登陆
#     token = request.form.get('token')
#     if not token:
#         return {'status':"failed",'data':'token requied'}
#     user = auth_by_token(token)
#     if not user:
#         return {'status':'failed','data':'invalid token'}

#     id = request.form.get('id',default=None)
#     if not id:
#         return {"status":'failed','data':'id required'}
#     material = Material.objects(id=id).first()
#     if not material:
#         return {'status':'failed','data':'id does not exist'}

#     if material.owner != user:
#         return {'status':'failed','data':'forbidden'}

#     material.delete()
#     return {'status':'success'}
Пример #20
0
def fault_report():
    token = require_arguments('token')
    user = auth_by_token(token)
    fault =  Fault(owner=user)
    return fault