コード例 #1
0
def addreport():
    form = AddReportForm()
    report = Report()
    context = {
        'title': "GecMonitor | Add a Report",
        'report': report,
        'form': form,
        'sites': current_user.sites
    }
    if request.method == 'POST' and form.validate():
        report_name = form.report_name.data
        selected_sites = form.current_user_sites.data
        description = form.description.data
        new_report = Report(report_name=report_name,
                            sites=selected_sites,
                            description=description)
        current_user.reports.append(new_report)
        db.session.add(new_report)
        db.session.commit()
        sites_list = [[site.id, site.gt_global_id]
                      for site in new_report.sites]
        initial_site_scan = InitialSiteScan(sites_list, new_report.id)
        initial_site_scan.start()
        flash(f"{report_name} has been added to your sites!")
        return redirect(url_for("index"))
    return render_template("add_report.html", **context)
コード例 #2
0
ファイル: routes.py プロジェクト: jawnhoang/Archer
def reportUser(username):
    user = User.query.filter_by(username=username).first()
    form = ReportForm()
    if form.validate_on_submit():
        report = Report(reasonReported=form.reasons.data, report_recipient_id = user.id)
        score = user.reportTally #gets report numbers
        if form.reasons.data == 'Harrasment':
            score += 1
            user.reportTally = score
            db.session.commit()
        elif form.reasons.data == 'Illegal Activities':
            score += 3
            user.reportTally = score
            db.session.commit()
        elif form.reasons.data == 'Blackmailing':
            score += 2
            user.reportTally = score
            db.session.commit()
        elif form.reasons.data == 'Harmful/Racist messages':
            score += 5
            user.reportTally = score
            db.session.commit()
        elif form.reasons.data == 'Stalking':
            score += 2
            user.reportTally = score
            db.session.commit()
        db.session.add(report)
        db.session.commit()
        #accountCheck(user.username)
        flash('User has been Reported!')
        return redirect(url_for('user', username=username))
    return render_template('Report.html', user = user, form=form, title = 'Reporting')
コード例 #3
0
def add_report_to_db(data):
    province=Province.query.filter_by(id=int(data['province'])).first()
    district=District.query.filter_by(id=int(data['district'])).first()
    localbody=LocalBody.query.filter_by(id=int(data['localbody'])).first()
    report=Report(province=province.name,district=district.name,localbody=localbody.name,customer_id=data['customer_id'],latitude=data['latitude'],longitude=data['longitude'],ward=data['ward_number'],status="Reported")
    db.session.add(report)
    db.session.commit()
コード例 #4
0
def add_report():
    """
    Add report to the database
    """
    add_report = True

    form = ReportForm()
    if form.validate_on_submit():

        report = Report(name=form.name.data,
                        report_file=secure_filename(
                            form.report_file.data.filename),
                        employee=current_user)
        f = form.report_file.data
        filename = secure_filename(f.filename)
        f.save(os.path.join(current_app.config['UPLOAD_FOLDER'], filename))
        try:
            # add report to the database
            db.session.add(report)
            db.session.commit()
            flash('Đã thêm báo cáo thành công.')
        except:
            # in case report file already exists
            flash('Lỗi: Tên file báo cáo đã tồn tại.')

        # redirect to the reports page
        return redirect(url_for('home.list_reports'))

    # load report template
    return render_template('home/report.html',
                           add_report=add_report,
                           form=form,
                           title='Thêm báo cáo')
コード例 #5
0
    def test_find_reports(self):
        """Test that the reports that a loan belongs to are found correctly."""
        u, v, l, r = self.test_add_user_loan_report()

        # Create reports, and assign them to loan l2 except the fifth one
        l2 = Loan(balance=100, currency='USD', debtor=u)
        db.session.add(l2)
        rep = []
        for i in range(5):
            rep.append(
                Report(title="report" + str(i),
                       body="This is the body of the report",
                       author=v))
            db.session.add(rep[i])
        db.session.commit()
        for i in range(4):
            l2.refer(rep[i])

        # Check that all but the fifth are referring l2
        for i in range(5):
            if i != 4:
                self.assertTrue(l2.is_referred(rep[i]))
            else:
                self.assertFalse(l2.is_referred(rep[i]))

        # Check that the rep list is NOT l2.reports
        self.assertFalse(l2.reports == rep)
        # Check that the first 4 items in rep are in the list of l2.reports
        for i in range(len(rep[:4])):
            self.assertTrue(rep[i] in l2.reports)
コード例 #6
0
def AssignTask(task_id):
	task = Task.query.filter().first()
	if task is None:
		flash('Такой задачи не существует.')
		return redirect(url_for('main.ShowTasks'))
	form = AssignmentForm()
	if current_user.role == UserRoles.manager:
		users = User.query.filter(User.dep_id == current_user.dep_id, User.id != current_user.id, User.role == UserRoles.employee).order_by(User.name).all()
		users_list = [(u.id, u.name) for u in users]
	else:
		users_list = [(current_user.id,current_user.name)]
	form.user.choices = users_list
	if form.validate_on_submit():
		report = Report.query.filter(Report.user_id == form.user.data, Report.date == form.date.data).first()
		if report is None:
			report = Report(user_id = form.user.data, date = form.date.data)
			db.session.add(report)
			db.session.commit()
		report_task = ReportTask(name = task.name, metric = task.metric, measurement = form.measurement.data, completed = form.completed.data)
		if form.comment.data is not None:
			report_task.comment = form.comment.data.strip()
		db.session.add(report_task)
		report_task.report = report
		db.session.commit()
		flash('Задача успешно назначена сотруднику.')
	else:
		for error in form.user.errors + form.date.errors + form.measurement.errors + form.completed.errors + form.comment.errors:
			flash(error)
	return redirect(url_for('main.ShowTasks'))
コード例 #7
0
def publish():
    if request.method == "GET":
        admin_id = session.get('admin_id')
        admin_name = Admin.query.filter(Admin.id == admin_id).first().name
        contexts = {"admin_name": admin_name}
        return render_template("admin/publish.html", **contexts)
    else:
        #每次写新报告之前删除之前的报告,根据登录id删除之前的记录
        admin_id = session.get('admin_id')
        old_record = Report.query.filter(Report.id == admin_id).first()
        try:
            db.session.delete(old_record)
            db.session.commit()
            #获取新的report并添加进数据库
        except:
            pass
        name = Admin.query.filter(Admin.id == admin_id).first().name
        content = request.form.get('content')

        report = Report(id=admin_id,
                        content=content,
                        name=name,
                        admin_id=admin_id)
        db.session.add(report)
        db.session.commit()
        return redirect('/report_show')
コード例 #8
0
def handle_request():
    if request.method == 'POST':
        if request.files:
            username = '******'

            filename = images.save(request.files['image'])
            url = images.url(filename)

            #---------------------

            result = predict(filename)

            #---------------------

            user = User.query.filter_by(username=username).first()
            if user is None: user = User(username=username)

            report = Report(user=user, data=json.dumps(result))

            image = Image(report=report)

            image.image_filename = filename
            image.image_url = url

            db.session.add(user)
            db.session.add(report)
            db.session.add(image)

            db.session.commit()

            return 'Report Generated'
        return 'No Files Recieved'
    return 'Method not POST'
コード例 #9
0
ファイル: test_backend.py プロジェクト: blaiddyd/arch-rank
 def test_report(self):
     self.assertEqual(Report.query.count(), 0)
     report = Report(reporter_id='66666666',
                     reported_id='11111',
                     report_id=gen_id(),
                     body='Terrible mate.')
     db.session.add(report)
     db.session.commit()
     self.assertEqual(Report.query.count(), 1)
コード例 #10
0
def report(cert_id):
    """
    Return template for report page
    """
    cert = Cert.query.get(cert_id)
    if cert.file_id is None:
        urls = [url_for('static', filename=os.path.join('img', "missing.png"))]
    else:
        if not cert.file.converted:
            cert.file.convert()
        urls = cert.file.pngs

    form = ReportForm(request.form)
    if request.method == 'POST':
        if form.validate_on_submit():
            form_completed = False
            for key, value in form.data.items():
                if value != "" and key is not 'csrf_token' and key is not 'submit':
                    form_completed = True
            if not form_completed:
                flash("Please complete at least one form field.",
                      category="warning")
                return render_template('report_issue.html',
                                       form=form,
                                       cert=cert,
                                       urls=urls)
            else:
                form_fields = {
                    name: data
                    for name, data in {
                        'county': form.county.data,
                        'month': form.month.data,
                        'day': form.day.data,
                        'year': form.year.data,
                        'age': form.age.data,
                        'number': form.number.data,
                        'soundex': form.soundex.data,
                        'first_name': form.first_name.data,
                        'last_name': form.last_name.data,
                        'comments': form.comments.data
                    }.items() if data
                }
                report = Report(cert_id=cert_id,
                                user_id=current_user.id,
                                values=form_fields)
                db.session.add(report)
                db.session.commit()
                flash("Your report has been submitted.", category="success")
                return redirect('/')
        else:
            flash("An error has occurred.")
            print(form.errors)
    return render_template('report_issue.html',
                           form=form,
                           cert=cert,
                           urls=urls)
コード例 #11
0
ファイル: reports.py プロジェクト: llayman/signal-flare
def create_report():
    data = request.get_json() or {}
    if 'guid' not in data or 'latitude' not in data or 'longitude' not in data:
        return bad_request('must include guid, latitude, and longitude fields')

    report = Report()
    report.from_dict(data)
    db.session.add(report)
    db.session.commit()
    response = jsonify(report.to_dict())
    response.status_code = 201
    return response
コード例 #12
0
ファイル: routes.py プロジェクト: WyrickM/E-commerce-Website
def report(user_id):
    user = User.query.get(user_id)
    form = ReportForm()
    if form.validate_on_submit():
        report = Report(title = form.title.data, username = current_user.username, body = form.body.data)
        db.session.add(report)
        db.session.commit()
        report.add_report(user, current_user)
        db.session.commit()
        flash('Your report has been recorded.')
        return redirect('/clear_search')
    return render_template('report.html', title='Report User', form=form)
コード例 #13
0
def checkin_employee():
    id = request.form['id'].strip()
    observation = 'Prezent'

    employee = Employee.query.get_or_404(id)
    report = Report(employee=employee, observations=observation, check_in=True)

    db.session.add(report)
    db.session.commit()

    return json.dumps({'success': True}), 200, {
        'ContentType': 'application/json'
    }
コード例 #14
0
def multiavscan(sha256):
    """Task to run the AV scanners

    :param sha256: File hash
    """
    scanned = Sample.query.filter_by(sha256=sha256).first()
    file_path = os.path.join(current_app.config['APP_UPLOADS_SAMPLES'], sha256)
    av = Scanner(current_app.config['AVSCAN_CONFIG'])
    av_report = av.scan(file_path)

    scanned.reports.append(Report(type_id=2, report=json.dumps(av_report)))
    db.session.add(scanned)
    db.session.commit()
コード例 #15
0
 def test_add_user_loan_report(self):
     """Test that the test worked."""
     u = User(name="Uu")
     v = User(name="Vv")
     l = Loan(balance=10, currency='GBP', debtor=u)
     r = Report(title="The Report",
                body="This is the body of the report",
                author=v)
     db.session.add(u)
     db.session.add(v)
     db.session.add(r)
     db.session.add(l)
     db.session.commit()
     return u, v, l, r
コード例 #16
0
def specific_report(id):
    form = ReportForm()
    if form.validate_on_submit():
        prev_url = request.args.get('prev')
        report_type = request.args.get('type')
        if url_parse(prev_url).netloc != '':
            return redirect('index')
        if report_type.find('post') != -1:
            report = Report(reason=form.reason.data,
                            author=current_user,
                            post_id=id)
        elif report_type.find('comment') != -1:
            report = Report(reason=form.reason.data,
                            author=current_user,
                            comment_id=id)
        else:
            report = Report(reason=form.reason.data,
                            author=current_user,
                            profile_id=id)
        db.session.add(report)
        db.session.commit()
        flash('Your report has been submitted. Thank you for your feedback!')
        return redirect(prev_url)
    return render_template('specific_report.html', title='Report', form=form)
コード例 #17
0
def general_report():
    form0 = SearchProfileForm()
    form = ReportForm()
    if form.validate_on_submit():
        prev_url = request.args.get('prev')
        if url_parse(prev_url).netloc != '':
            return redirect(url_for('index'))
        report = Report(reason=form.reason.data,
                        page_of_report=prev_url,
                        author=current_user)
        db.session.add(report)
        db.session.commit()
        flash('Your report has been submitted. Thank you for your feedback!')
        return redirect(prev_url)
    return render_template('general_report.html',
                           form=form,
                           form0=form0,
                           title='Report')
コード例 #18
0
ファイル: routes.py プロジェクト: esreli/repo-reporter
def index():
    # Build start and end dates
    (start, end) = __build_dates_from_request(request)
    # Gather filters
    filter = request.args.get('group',
                              default=Filter.no_filter(),
                              type=__to_attribute_filter)
    # Build Repo models
    repos = Repo.all_display()
    # Group Repos by filter
    groups = Group.group_repos(repos, filter, start, end)
    # Generate report
    report = Report(groups, filter, start, end)
    # Build filters
    filters = [Filter.no_filter()] + Repo.filterable_attributes()
    # Render from template
    rendered = render_template("report.html", report=report, filters=filters)
    # Build response
    return __build_response_with_dates_cookies(rendered, 200, start, end)
コード例 #19
0
ファイル: views.py プロジェクト: colaisr/flask_algotrader
def logreport():
    request_data = request.get_json()
    logged_user = request_data["user"]
    user = User.query.filter_by(email=logged_user).first()
    if user is not None:
        report = Report()
        report.email = logged_user
        report.report_time = datetime.fromisoformat(
            request_data["report_time"])
        report.report_time = datetime.utcnow()
        report.remaining_trades = request_data["remaining_trades"]
        report.open_positions_json = request_data["open_positions"]
        report.open_orders_json = request_data["open_orders"]
        report.candidates_live_json = request_data["candidates_live"]
        report.all_positions_value = request_data["all_positions_value"]
        report.net_liquidation = request_data["net_liquidation"]
        report.remaining_sma_with_safety = request_data[
            "remaining_sma_with_safety"]
        report.excess_liquidity = request_data["excess_liquidity"]
        report.dailyPnl = request_data["dailyPnl"]
        report.api_connected = request_data["api_connected"]
        report.last_worker_execution = datetime.fromisoformat(
            request_data["last_worker_run"])
        report.market_time = datetime.fromisoformat(
            request_data["market_time"])
        report.market_state = request_data["market_state"]
        report.started_time = datetime.fromisoformat(
            request_data["started_time"])
        report.market_data_error = request_data["market_data_error"]
        report.client_version = request_data["client_version"]
        report.update_report()

        if report.api_connected:
            if report.market_state == "Open":  # can be none .... in not taken from api...tws not yet connected on first run
                check_stop_loss(logged_user, report.net_liquidation)
                # check_if_market_fall(logged_user)
                # check_for_signals(report.candidates_live_json)

        return "Report snapshot stored at server"
    else:
        return "The user configured is not found on Server the report is not logged"
コード例 #20
0
def upload():
    form = UploadForm()
    if request.method == 'POST':
        if form.validate_on_submit():

            username = form.username.data

            filename = images.save(request.files['image'])
            url = images.url(filename)

            #---------------------

            result = predict(filename)

            #---------------------

            user = User.query.filter_by(username=username).first()
            if user is None: user = User(username=username)

            report = Report(user=user, data=json.dumps(result))

            image = Image(report=report)

            image.image_filename = filename
            image.image_url = url

            db.session.add(user)
            db.session.add(report)
            db.session.add(image)

            db.session.commit()

            flash(
                'User Report for username: {} generated. '.format(
                    form.username.data), 'success')
            return redirect(url_for('report', report_id=report.id))
        else:
            flash_errors(form)
            flash('ERROR! Report was not generated.', 'error')

    return render_template('upload.html', title='Upload', form=form)
コード例 #21
0
ファイル: script.py プロジェクト: project-d3/Chansey
def one_report(severity, email, days, symptoms):
    user = User.query.filter_by(email=email).first()
    user_id = user.id

    days = datetime.today() - timedelta(days=days)
    new_report = Report(severity=severity,
                        user_id=user_id,
                        school_id=user.school.id,
                        date=days)
    new_report.symptoms = []
    new_report.buildings = []
    symptoms = symptoms.split(",")
    for symptom in symptoms:
        s = Symptom.query.filter_by(name=symptom).first()
        if s:
            new_report.symptoms.append(s)
    for building in user.buildings:
        new_report.buildings.append(
            Building.query.filter_by(name=building.name).first())
    db.session.add(new_report)
    db.session.commit()
コード例 #22
0
def addreport(id):

    form = AddVisitReport()

    visit = Visit.query.filter_by(id=id).first()

    partner = Partner.query.filter_by(id=visit.partner).first()

    author = current_user.id

    if form.validate_on_submit():
        report = Report(content=form.report.data, visit_id=id, author=author)
        db.session.add(report)
        db.session.commit()
        flash('Visit report added.')
        return redirect(url_for('visitdetails', id=partner.id))

    return render_template('addreport.html',
                           form=form,
                           visit=visit,
                           partner=partner)
コード例 #23
0
    def test_report(self):
        seller = User(username="******",
                      email="*****@*****.**",
                      first_name="SellerFirst",
                      last_name="SellerLast",
                      address="Seller Address",
                      card_number="1111111111111111",
                      security_code="111",
                      is_seller=True)
        seller.set_password('Seller')
        db.session.add(seller)
        db.session.commit()
        buyer = User(username="******",
                     email="*****@*****.**",
                     first_name="BuyerFirst",
                     last_name="BuyerLast",
                     address="Buyer Address",
                     card_number="2222222222222222",
                     security_code="222",
                     is_seller=False)
        buyer.set_password("Buyer")
        db.session.add(buyer)
        db.session.commit()
        report = Report(body='This is a test report for a test seller!')
        db.session.add(report)
        db.session.commit()

        self.assertEqual(report.body,
                         'This is a test report for a test seller!')

        self.assertEqual(seller.reports.all(), [])
        self.assertFalse(report in seller.reports)
        report.add_report(seller, buyer)

        self.assertEqual(seller.reports.count(), 1)

        self.assertEqual(seller.reports.first().username, 'ABuyer')
        self.assertEqual(seller.reports.first().body,
                         'This is a test report for a test seller!')
        self.assertEqual(seller.reports.first().reported_id, seller.id)
コード例 #24
0
def report():
    if Configuration.query.count() == 0:
        #TODO return 404 somehow
        pass

    form = ReportForm()
    form.config_id.choices =[(c.id, c.config_name) for c in Configuration.\
                     query.with_entities(Configuration.id,
                        Configuration.config_name).all()]
    if form.validate_on_submit():
        report = Report(report_name=form.report_name.data,
                        config_id=form.config_id.data,
                        hour=form.hour.data,
                        day=form.day.data,
                        minute=form.minute.data,
                        query_text=form.query_text.data)
        db.session.add(report)
        db.session.commit()
        # keep this redirect here for a bit till I figure out what to do
        # with it
        return redirect(url_for('index'))
    return render_template('report.html', form=form)
コード例 #25
0
ファイル: routes.py プロジェクト: Josecalm/seguridadgdl
def create_report():
    form = CreateReportForm()
    if form.validate_on_submit():
        lat = float(form.coordinates_lat.data)
        lng = float(form.coordinates_lng.data)
        zone = int(form.zone.data)
        report = Report(user_id=current_user.id,
                        date=form.date.data,
                        crime_id=form.crime.data,
                        crime_hour_id=form.hour.data,
                        latitude=lat,
                        longitude=lng,
                        zone=zone,
                        details=form.details.data,
                        reference_id=form.reference.data)
        db.session.add(report)
        db.session.commit()
        return redirect(url_for('user_reports'))
    return render_template('create_report.html',
                           title='Crear Reporte',
                           active='add_report',
                           form=form)
コード例 #26
0
 def setup_db():
     with app.app_context():
         db.drop_all()
         db.create_all()
         db.session.add(
             Report(id=4,
                    content=json.dumps({
                        "organization":
                        "Flowers Inc.",
                        "reported_at":
                        "2017-11-19",
                        "created_at":
                        "2017-11-23",
                        "inventory": [{
                            "name": "Flower pot",
                            "price": "2.00"
                        }, {
                            "name": "Roses, 24",
                            "price": "50.00"
                        }]
                    })))
         db.session.commit()
コード例 #27
0
def new_report():
    rawTime = time.time()
    startDate = datetime.datetime.fromtimestamp(rawTime).strftime(
        '%Y-%m-%d %H:%M:%S')
    substance = request.args.get('substance', "null", type=str)
    dosage = request.args.get('dosage', 0, type=int)
    dosagelabel = request.args.get('dosagelabel', "null", type=str)
    roa = request.args.get('roa', "null", type=str)
    source = request.args.get('source', "null", type=str)

    tester = startDate + substance + str(dosage) + roa + dosagelabel + source

    newReport = Report(StartDate=startDate,
                       Substance=substance,
                       Dosage=dosage,
                       DosageLabel=dosagelabel,
                       ROA=roa,
                       Source=source)
    db.session.add(newReport)
    db.session.commit()

    #print("ID pulled from object: " + str(newReport.id), file=sys.stderr)

    return jsonify(result=newReport.serialize())
コード例 #28
0
def submit_report():
    """
    Create and submit report
    """
    form = ReportForm()
    form.main_teacher.choices = Teacher.get_teachers_for_choices()
    form.assistant_teacher.choices = Teacher.get_teachers_for_choices()
    form.submitted_by.choices = Teacher.get_teachers_for_choices()

    if form.validate_on_submit():
        report = Report(main_teacher_id=form.main_teacher.data,
                        assistant_teacher_id=form.assistant_teacher.data,
                        teaching_date=form.teaching_date.data,
                        teaching_content=form.teaching_content.data,
                        student_attendance=form.student_attendance.data,
                        submitted_by_id=form.submitted_by.data)
        db.session.add(report)
        db.session.commit()
        flash(message='Report is successfully submitted.', category='success')
        return redirect(url_for('index'))

    return render_template('report_submit.html',
                           title='Submit a Report',
                           form=form)
コード例 #29
0
ファイル: database.py プロジェクト: tclose/mbi-subjects-db
def init(password=None):

    db_path = app.config['SQLALCHEMY_DATABASE_URI'][10:]
    if op.exists(db_path):
        if app.config.get('TEST', False):
            os.remove(db_path)
        else:
            raise DatabaseAlreadyInitialisedError(
                "Database has already been initialised at {}".format(db_path))
    else:
        os.makedirs(op.dirname(db_path), exist_ok=True)

    db.create_all()

    admin_role = Role(ADMIN_ROLE, 'Administrator')
    reporter_role = Role(REPORTER_ROLE, 'Reporter')

    db.session.add(admin_role)  # noqa pylint: disable=no-member
    db.session.add(reporter_role)  # noqa pylint: disable=no-member

    if not app.config.get('TEST', False):
        if password is None:
            raise Exception("Admin password needs to be provided for "
                            "production database")
        # Add administrator
        db.session.add(
            User(
                'Administrator',
                'Account',  # noqa pylint: disable=no-member
                app.config['ADMIN_EMAIL'],
                generate_password_hash(password),
                roles=[admin_role],
                active=True))
    # Add dummy data to test with
    else:
        scan_types = [
            ScanType('Head_t1_mprage'),
            ScanType('Head_t2_space_sag_p2_iso'),
            ScanType('t1_mprage_sag_p3_iso_1_ADNI'),
            ScanType('t2_space_sag_p2_iso'),
            ScanType('Head_No MT fl3d_axial_p2_iso'),
            ScanType('Shouldnt_be_shown')
        ]

        db.session.add_all((  # noqa pylint: disable=no-member
            User('Thomas',
                 'Close',
                 '*****@*****.**',
                 suffixes='PHD',
                 title='Dr.',
                 password=generate_password_hash('password'),
                 middle_name='G.',
                 roles=[reporter_role, admin_role],
                 active=True),
            User('Parisa',
                 'Zakavi',
                 '*****@*****.**',
                 generate_password_hash('password'),
                 roles=[reporter_role, admin_role],
                 active=True)))

        subjects = []

        for mbi_id, dob, first_name, last_name in [
            ('MSH103138', '12/03/1952', 'Bob', 'Brown'),
            ('MSH223132', '05/12/1951', 'Sami', 'Shah'),
            ('MSH892342', '24/08/1980', 'Bill', 'Bryson'),
            ('MSH234234', '21/09/1993', 'Jesse', 'Jackson'),
            ('MSH623177', '15/12/1967', 'Robert', 'Redford'),
            ('MSH823056', '27/06/2001', 'Danny', 'DeVito'),
            ('MSH097334', '12/03/1972', 'Boris', 'Becker'),
            ('MSH097335', '12/03/1972', 'Charlie', 'Chaplin'),
            ('MSH097336', '12/03/1972', 'Emilio', 'Estevez')
        ]:
            subj = Subject(mbi_id, first_name, last_name,
                           datetime.strptime(dob, '%d/%m/%Y'))  # noqa pylint: disable=no-member
            subjects.append(subj)
            db.session.add(subj)  # pylint: disable=no-member

        img_sessions = {}

        for subj_id, study_id, xnat_id, scan_date, priority, status in [
            (0, 1231, 'MRH100_124_MR02', '10/04/2017', LOW, PRESENT),
            (1, 1244, 'SHOULD_NOT_BE_SHOWN_NEWER_SESSION', '11/02/2018', LOW,
             PRESENT),
            (1, 1254, 'SHOULD_NOT_BE_SHOWN_AS_NOT_FOUND', '12/02/2018', LOW,
             NOT_FOUND),
            (2, 1366, 'MRH999_999_MR01', '11/10/2017', LOW, PRESENT),
            (2, 1500, 'SHOULD_NOT_BE_SHOWN_PREV_REPORT', '11/5/2018',
             LOW, PRESENT),
            (2, 1600, 'MRH999_999_MR99', '11/1/2019', HIGH, PRESENT),
            (3, 3413, 'MRH088_065_MR01', '13/01/2019', MEDIUM, PRESENT),
            (4, 4500, 'MRH112_002_MR01', '11/02/2019', LOW, PRESENT),
            (5, 5003, 'MRH100_025_MR01', '1/08/2017', MEDIUM, PRESENT),
            (6, 9834, 'SHOULD_NOT_BE_SHOWN_AS_NOT_EXPORTED', '10/11/2018', LOW,
             PRESENT),
            (7, 9835, 'SHOULD_NOT_BE_SHOWN_AS_INVALID', '10/12/2018', LOW,
             INVALID_LABEL),
            (8, 9836, 'SHOULD_NOT_BE_SHOWN_AS_NOT_PRESENT', '10/10/2018', LOW,
             NOT_FOUND)
        ]:
            project_id = xnat_id.split('_')[0]
            try:
                project = Project.query.filter_by(mbi_id=project_id).one()
            except orm.exc.NoResultFound:
                project = Project(project_id)
            img_session = img_sessions[study_id] = ImgSession(
                study_id,
                project,
                subjects[subj_id],
                xnat_id,
                datetime.strptime(scan_date, '%d/%m/%Y'),
                data_status=status,
                priority=priority)
            db.session.add(img_session)  # noqa pylint: disable=no-member
            for i, scan_type in enumerate(
                    random.sample(scan_types,
                                  random.randint(1,
                                                 len(scan_types) - 1))):
                db.session.add(
                    Scan(
                        i,
                        img_session,
                        scan_type,  # noqa pylint: disable=no-member
                        exported=scan_type.clinical))
        db.session.commit()  # noqa pylint: disable=no-member

        # Add report for 1366
        img_session = img_sessions[1366]
        db.session.add(
            Report(
                img_session.id,
                1,
                "Nothing to report",
                0,  # noqa pylint: disable=no-member
                used_scans=img_session.scans,
                modality=MRI))

        # Set the final scan of the final session to be not-exported, so it
        # shouldn't show up
        img_sessions[9834].scans[-1].exported = False

        db.session.commit()  # noqa pylint: disable=no-member

    # Add historial reporters for previously reported records
    db.session.add_all((  # noqa pylint: disable=no-member
        User('Nicholas',
             'Ferris',
             '*****@*****.**',
             generate_password_hash(''.join(
                 random.choices(string.printable, k=50))),
             suffixes='MBBS FRANZCR',
             title='Dr.',
             roles=[reporter_role],
             active=False),
        User('Paul',
             'Beech',
             '*****@*****.**',
             generate_password_hash(''.join(
                 random.choices(string.printable, k=50))),
             suffixes='MBBS FRANZCR',
             title='Dr.',
             roles=[reporter_role],
             active=False),
        User('AXIS',
             'Reporting',
             '*****@*****.**',
             generate_password_hash(''.join(
                 random.choices(string.printable, k=50))),
             roles=[reporter_role],
             active=False)))

    db.session.commit()  # noqa pylint: disable=no-member
    return db_path
コード例 #30
0
ファイル: utils.py プロジェクト: csesoc/community-slackbot
def report_message(msg_id, report):
    report = Report(msg_id=msg_id, report=report)
    db.session.add(report)
    db.session.commit()
    return report.id