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'}
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)})
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)}}
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'}
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)})
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 })
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'}
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)})
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'}
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}
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)})
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"}
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})
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"}
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'}
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])
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)
def delete_process(): [token, id] = require_arguments('token', 'id') user = auth_by_token(token) Process.objects(id=id).delete() return {'status': 'success'}
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'}
def fault_report(): token = require_arguments('token') user = auth_by_token(token) fault = Fault(owner=user) return fault