Пример #1
0
def papers(tag_id):
    if not tag_id:
        tags = Tag.select().paginate(0, 1)
    else:
        tags = Tag.select().where(Tag.id == tag_id)
    tag = tags[0]
    papers = Paper.select().where(Paper.tag == tag)
    return render_template("papers.html", tag=tag, papers=papers)
Пример #2
0
def get_item(paper_id):
    papers = Paper.select().where(Paper.id == paper_id).dicts()
    paper = list(papers)[0]
    paper['state'] = ''
    items = Item.select().where(Item.paper == paper_id).order_by(
        Item.index).dicts()
    state = TestState(paper=paper)
    response = {'state': state.dicts(), 'items': list(items)}
    return jsonify(response)
Пример #3
0
def get_papers(tag_id):
    if tag_id:
        tags = Tag.select().where(Tag.id == tag_id)
    else:
        tags = Tag.select().paginate(0, 1)
    papers = Paper.select().where(
        Paper.tag << tags).dicts()  #.paginate(0, 100)
    response = {'papers': list(papers)}
    return jsonify(response)
Пример #4
0
def paper_new():
    if request.method == "GET":
        return render_template("paper_new.html")
    else:
        assert request.method == "POST"
        print request.form
        p = Paper(title=request.form['title'])
        db.session.add(p)
        db.session.commit()
        return redirect('/paper/' + str(p.id))
    return "Unknown method " + request.method
Пример #5
0
def commit_paper():
    data = request.json
    print(data)
    if not data:
        raise APIValueError('state', 'not fond')
    state = data.get('state')
    result_list = state.get('results', [])

    finish_items = state.get('finish_items', [])
    finappend = finish_items.append

    unfinish_items = state.get('unfinish_items', [])
    uappend = unfinish_items.append

    true_items = state.get('true_items', [])
    tappend = true_items.append

    false_items = state.get('false_items', [])
    print('len')
    print(len(false_items))
    falappend = false_items.append
    d1 = datetime.now()
    for i in result_list:
        item_id = i.get('item')
        item = Item.select().where(Item.id == item_id)[0]
        item.user_answer = i.get('user_answer')
        if item.user_answer:
            finappend(item.id)
        else:
            uappend(item.id)
        if item.user_answer == item.answer:
            state['score'] += item.score
            tappend(item.id)
        if item.user_answer and item.user_answer != item.answer:
            falappend(item.id)
        item.save()
    d2 = datetime.now()
    state['status'] = '已完成'
    paper = state['paper']
    paper_id = paper.get('id')
    papers = Paper.select().where(Paper.id == paper_id)
    paper = papers[0]
    #state.pop('results')
    state.pop('paper')
    paper.state = json.dumps(state)
    paper.save()
    response = {'url': '/test/results/' + paper.id}
    return jsonify(response)
Пример #6
0
    def get_record(self):
        try:
            paper_id = int(
                self.id_pattern.findall(self.fd.readline())[0].strip())
        except IndexError:
            raise EOFError
        paper_title = self.title_pattern.findall(self.fd.readline())[0].strip()
        paper_authors = self.author_pattern.findall(
            self.fd.readline())[0].strip()
        paper_authors = [a for a in paper_authors.split(',') if a]
        paper_affiliations = self.affiliations_pattern.findall(
            self.fd.readline())[0].strip()
        if paper_affiliations == '-':
            paper_affiliations = None
        paper_year = self.year_pattern.findall(self.fd.readline())[0].strip()
        paper_venue = self.venue_pattern.findall(self.fd.readline())[0].strip()
        paper_refs = list()
        paper_abstract = None

        # references
        line = self.fd.readline()
        m = self.refs_pattern.match(line)
        while m is not None:
            if m:
                paper_refs.append(
                    int(self.refs_pattern.findall(line)[0].strip()))
            line = self.fd.readline()
            m = self.refs_pattern.match(line)
        if len(paper_refs) == 0:
            paper_refs = None
        if line.strip():
            try:
                paper_abstract = self.abstract_pattern.findall(line)[0].strip()
            except:
                paper_abstract = None

        # skip if blank + consume
        #if not line.strip(): fd.readline()

        return Paper(paper_idx=paper_id,
                     title=paper_title,
                     authors=paper_authors,
                     affiliation=paper_affiliations,
                     year=paper_year,
                     venue=paper_venue,
                     refs=paper_refs,
                     abstract=paper_abstract)
Пример #7
0
def get_testResults(paper_id):
    d1 = datetime.now()
    if not paper_id:
        raise APIValueError('paper', 'not fond')
    paper = list(Paper.select().where(Paper.id == paper_id).dicts())[0]
    data = json.loads(paper['state'])
    print(paper['state'])
    res = data['results']
    paper['state'] = ''
    re_state = TestState(paper=paper)

    re_state.finish_items = list(
        Item.select().where(Item.id << data['finish_items']).dicts())
    re_state.unfinish_items = list(
        Item.select().where(Item.id << data['unfinish_items']).dicts())
    re_state.true_items = list(
        Item.select().where(Item.id << data['true_items']).dicts())
    re_state.false_items = list(
        Item.select().where(Item.id << data['false_items']).dicts())
    '''
    items = list(Item.select().where(Item.paper==paper['id']).dicts())
    for item in items:
        for re in res:
            if item['id'] == re['item']:
                item['user_answer'] = re['user_answer']
        if item['id'] in data['finish_items']:
            re_state.finish_items.append(item)
        if item['id'] in data['unfinish_items']:
            re_state.unfinish_items.append(item)
        if item['id'] in data['true_items']:
            re_state.true_items.append(item)
        if item['id'] in data['false_items']:
            re_state.false_items.append(item)
    '''
    re_state.score = data['score']
    re_state.status = data['status']
    re_state.finish_time = data['finish_time']
    re_state.utime = data['utime']
    response = {'state': re_state.dicts()}
    d2 = datetime.now()
    return jsonify(response)
Пример #8
0
def add_items():
    d1 = datetime.now()
    answer = ['A', 'B', 'C', 'D']
    answer2 = ['A', 'B']
    papers = Paper.select()
    for paper in papers:
        for i in range(30):
            if(i<=20):
                item = Item.create(index=i+1,content=faker_zh.text(),answer=choice(answer),
                                   answer_A=faker_zh.word(),answer_B=faker_zh.word(),answer_C=faker_zh.word(),answer_D=faker_zh.word(),
                                   answer_type = '选择题',score =1,paper=paper)
            else:
                item = Item.create(index=i + 1, content=faker_zh.text(), answer=choice(answer2),
                                   answer_A='正確', answer_B='錯誤',
                                   answer_type='判斷題', score=1, paper=paper)
            item.save()
            print('item:'+ str(item.index)+'done')
        #paper.munber = 30
        #paper.total = 30
        #paper.save()
        print('a paper save done')
    d2 = datetime.now()
    print('save success')
    print(d2-d1)
Пример #9
0
def index():
    tags = Tag.select().paginate(0, 1)
    tag = tags[0]
    papers = Paper.select().where(Paper.tag == tag)
    return render_template("papers.html", tag=tag, papers=papers)
Пример #10
0
def testing2(paper_id):
    papers = Paper.select().where(Paper.id == paper_id)
    return render_template("item2.html", paper=papers[0])