예제 #1
0
 def post(self):
     check_role('annotator')
     args = self.parse_args()
     msg = 'Invalid Submission!'
     if self.store_annotations(args['annotation'], args['assignment_id']):
         msg = 'Assignment Submitted!'
     flash(msg)
     return redirect(url_for('annotatorapi'))
예제 #2
0
    def get(self):
        check_role('instructor')
        datasets = [(d.name, d.author.name) for d in DataSet.objects()]
        instructor = User.objects(email=current_user.email).first()

        assignments = {}
        for assignment in Assignment.objects(instructor=instructor):
            assignments[(assignment.name, assignment.instructor.name)] = (
                self.get_judgement_score(assignment))

        return make_response(
            render_template('instructor.html',
                            datasets=datasets,
                            assignments=assignments))
예제 #3
0
    def get(self, instructor_name, assignment_name):
        # TODO: annotation view
        check_role('annotator')
        instructor = User.objects(name=instructor_name).first()
        assignment = Assignment.objects(name=assignment_name,
                                        instructor=instructor).first()
        if not assignment:
            flash('No Such Assignment!')
            return redirect(url_for('annotatorapi'))
        queries = {}
        assignment_score = Score.objects(assignment=assignment)
        for q in assignment.queries_need_to_show:
            scores = assignment_score.filter(query=q)
            queries[q] = [score.document for score in scores]

        return make_response(
            render_template('assignment.html',
                            assignment=assignment,
                            queries=queries))
예제 #4
0
    def post(self):
        check_role('instructor')
        args = parser.parse_args()
        queries = [q for q in args['query[]'] if q != '']
        if not queries:
            flash('Empty Query!')
            return redirect(url_for('instructorapi'))

        ranker = args['ranker']
        assignment_name = args['assignment_name']
        dataset_name = args['ds_name']
        params = self.generate_params_dict(ranker, args['param[]'])
        num_results = args['num_results']

        instructor = User.objects(email=current_user.email).first()
        dataset = DataSet.objects(name=dataset_name).first()
        assignment = Assignment(name=assignment_name,
                                instructor=instructor,
                                data_set=dataset,
                                ranker=ranker,
                                params=params,
                                num_results=num_results)
        try:
            assignment.save()
        except (NotUniqueError, ValidationError):
            flash('Invalid Input!')
            return redirect(url_for('instructorapi'))

        q = self.generate_queries(queries)
        assignment.update(queries=q)
        assignment.update(queries_need_to_show=q)
        try:
            self.search(assignment, dataset_name, queries, ranker, params,
                        num_results)
        except Exception as e:
            print(e)

        flash('Assignment Created!')
        return redirect(url_for('instructorapi'))
예제 #5
0
 def get(self):
     check_role('annotator')
     return make_response(
         render_template('annotator.html',
                         datasets=DataSet.objects(),
                         assignments=Assignment.objects()))
예제 #6
0
파일: main.py 프로젝트: ibairos/NetworkMode
from rx_mode import main_rx
from tx_mode import main_tx
from util import util

while True:
    # We first check the role of the device
    role = util.check_role()

    # And then execute the corresponding code
    if role == "tx":
        main_tx.transmitter()
    elif role == "rx":
        main_rx.receiver()
    else:
        exit(0)
예제 #7
0
    def post(self):
        check_role('instructor')
        args = parser.parse_args()
        ds_name = args['ds_name']
        author = User.objects(email=current_user.email).first()
        author_dir = os.path.join(current_app.root_path, 'data', author.name)
        ds_dir = os.path.join(author_dir, ds_name)

        if args['_method'] == 'DELETE':
            dataset = DataSet.objects(author=author, name=ds_name).first()
            shutil.rmtree(ds_dir)
            for doc in Document.objects(data_set=dataset):
                doc.delete()
            dataset.delete()
            if not DataSet.objects(author=author).first():
                shutil.rmtree(author_dir)
            flash('Dataset deleted.')
            return redirect(url_for('instructorapi'))
        else:
            # check file format
            files = request.files.getlist('file')
            for f in files:
                if not f or not allowed_file(f.filename):
                    flash('Wrong file format.')
                    return redirect(url_for('uploadapi'))
            # create dataset object
            dataset = DataSet(author, ds_name)
            try:
                dataset.save()
            except NotUniqueError:
                flash('Dataset name is occupied.')
                return redirect(url_for('uploadapi'))
            # save documents
            if not os.path.exists(author_dir):
                os.mkdir(author_dir)
            os.mkdir(ds_dir)
            for f in files:
                filename = secure_filename(f.filename)
                f_path = os.path.join(ds_dir, filename)
                f.save(f_path)
                doc = Document(f.filename, dataset, f_path)
                doc.save()
            # create config files - copied from guoqiao's gift
            if len(os.listdir(ds_dir)) != 0:
                file_corpus = open(ds_dir + "/dataset-full-corpus.txt", "w")
                file_toml = open(ds_dir + "/file.toml", "w")
                file_metadata = open(ds_dir + "/metadata.data", "w")

                for file in os.listdir(ds_dir):
                    if file[-3:] == "txt" and file != "dataset-full-corpus.txt":
                        file_corpus.write("[None] " + file + "\n")
                        file_metadata.write(file + " " + file[:-4] + "\n")

                file_toml.write("type = \"file-corpus\"" + "\n")
                file_toml.write("list = \"dataset\"")

                file_corpus.close()
                file_toml.close()
                file_metadata.close()

            flash('Dataset uploaded.')
            return redirect(url_for('instructorapi'))
예제 #8
0
 def get(self):
     check_role('instructor')
     return make_response(render_template('upload.html'))