Exemplo n.º 1
0
    def test_post_when_user_is_lonely_admin(app_and_db, client,
                                            test_with_authenticated_user,
                                            inactive_user):
        db = app_and_db[1]
        investment = Investment(name="Test Invest")
        user1 = User.query.filter_by(username="******").first()
        user2 = User.query.filter_by(username="******").first()
        worker1 = Worker(position="pos1", admin=True, user_id=user1.id)
        worker2 = Worker(position="pos2", admin=False, user_id=user2.id)
        investment.workers.append(worker1)
        investment.workers.append(worker2)
        db.session.add(investment)
        db.session.commit()

        response = client.post(
            url_for("auth.delete_account", username="******"),
            data={"yes": True},
            follow_redirects=True,
        )
        assert response.status_code == 200
        assert User.query.filter_by(username="******").first()
        assert Worker.query.filter_by(user_id=user1.id).first()
        assert Worker.query.filter_by(user_id=user2.id).first()
        assert (
            b"This accounts is only admin in projects: ['Test Invest']."
            b" Give root permission to other user and try again"
            in response.data)
Exemplo n.º 2
0
    def test_get_workers(app_and_db):
        db = app_and_db[1]
        user1 = User(username="******",
                     email="*****@*****.**",
                     password="******")
        user2 = User(username="******",
                     email="*****@*****.**",
                     password="******")
        db.session.add(user1)
        db.session.add(user2)
        db.session.add(Investment(name="test invest 1"))
        db.session.add(Investment(name="test invest 2"))
        db.session.add(Investment(name="test invest 3"))
        db.session.commit()

        user1 = User.get_user(1)
        invest1 = Investment.query.filter_by(id=1).first()
        invest1.workers.append(Worker(position="pos1", user_id=user1.id))
        invest2 = Investment.query.filter_by(id=2).first()
        invest2.workers.append(Worker(position="pos2", user_id=user1.id))

        user2 = User.get_user(2)
        invest3 = Investment.query.filter_by(id=3).first()
        invest3.workers.append(Worker(position="pos3", user_id=user2.id))

        db.session.commit()

        worker1 = Worker.query.filter_by(position="pos1").first()
        worker2 = Worker.query.filter_by(position="pos2").first()

        assert User.get_workers(user_id=1) == [worker1, worker2]
Exemplo n.º 3
0
    def test_post_when_delete(app_and_db, client, test_with_authenticated_user,
                              inactive_user):
        db = app_and_db[1]

        investment1 = Investment(name="Test Invest 1")
        user1 = User.query.filter_by(username="******").first()
        user2 = User.query.filter_by(username="******").first()
        worker1 = Worker(position="pos1", admin=True, user_id=user1.id)
        worker2 = Worker(position="pos2", admin=True, user_id=user2.id)
        investment1.workers.append(worker1)
        investment1.workers.append(worker2)

        investment2 = Investment(name="Test Invest 2")
        worker = Worker(position="pos1", admin=True, user_id=user1.id)
        investment2.workers.append(worker)

        db.session.add(investment1)
        db.session.add(investment2)
        db.session.commit()

        response = client.post(
            url_for("auth.delete_account", username="******"),
            data={"yes": True},
            follow_redirects=True,
        )
        assert response.status_code == 200
        assert not User.query.filter_by(username="******").first()
        assert not Worker.query.filter_by(user_id=user1.id).first()
        assert Worker.query.filter_by(user_id=user2.id).first()
        assert Investment.query.filter_by(name="Test Invest 1").first()
        assert not Investment.query.filter_by(name="Test Invest 2").first()
        assert b"The account has been deleted." in response.data
Exemplo n.º 4
0
    def test_get_num_of_admins(app_and_db):
        db = app_and_db[1]
        for i in range(1, 4):
            user = User(
                username="******".format(i),
                email="user_{}@mail.com".format(i),
                password="******",
            )
            user.is_active = True
            db.session.add(user)
        investment = Investment(name="test invest")
        db.session.add(investment)
        db.session.commit()

        user1 = User.get_user(1)
        user2 = User.get_user(2)
        user3 = User.get_user(3)
        invest = Investment.query.filter_by(id=1).first()
        worker1 = Worker(position="pos1", admin=True, user_id=user1.id)
        worker2 = Worker(position="pos2", admin=False, user_id=user2.id)
        worker3 = Worker(position="pos3", admin=True, user_id=user3.id)
        invest.workers.append(worker1)
        invest.workers.append(worker2)
        invest.workers.append(worker3)
        db.session.commit()

        assert Investment.get_num_of_admins(investment_id=1) == 2
Exemplo n.º 5
0
    def test_is_admin(app_and_db, active_user):
        db = app_and_db[1]
        db.session.add(Investment(name="test invest 1"))
        db.session.add(Investment(name="test invest 2"))
        db.session.add(
            Worker(position="pos1", admin=True, user_id=1, investment_id=1))
        db.session.add(
            Worker(position="pos2", admin=False, user_id=1, investment_id=2))
        db.session.commit()

        assert Worker.is_admin(user_id=1, investment_id=1)
        assert not Worker.is_admin(user_id=1, investment_id=2)
Exemplo n.º 6
0
    def test_get_investment(app_and_db, active_user):
        db = app_and_db[1]
        user = User.get_user(1)
        db.session.add(Investment(name="test invest 1"))
        db.session.add(Investment(name="test invest 2"))
        db.session.commit()

        invest1 = Investment.query.filter_by(id=1).first()
        invest1.workers.append(Worker(user_id=user.id))
        invest2 = Investment.query.filter_by(id=2).first()
        invest2.workers.append(Worker(user_id=user.id))
        db.session.commit()

        assert User.get_investments(user_id=1) == [invest1, invest2]
    def test_create_worker(self):
        w = Worker(id='30132180123',
                   name='hss',
                   email='*****@*****.**',
                   address='tju',
                   password='******')
        db.session.add(w)
        db.session.commit()

        # test the password
        assert w.verify_password('123')
        assert not w.verify_password('1234')

        # test the token
        token = w.generate_auth_token(expiration=1000)
        ver_w = w.verify_auth_token(token)
        assert ver_w != Worker.query.get('30132180xx')
        assert ver_w == Worker.query.get('30132180123')

        db.session.add(w)
        db.session.commit()

        d = WorkerDegree(worker_id=w.id, department_id=1)
        db.session.add(d)
        db.session.commit()
Exemplo n.º 8
0
def add_investment(app_and_db, active_user, unlogged_user):
    db = app_and_db[1]
    user1 = User.query.filter_by(username="******").first()
    user2 = User.query.filter_by(username="******").first()
    investment = Investment(name="Test Invest", description="test text")
    worker1 = Worker(position="admin", admin=True, user_id=user1.id)
    worker2 = Worker(position="second worker", admin=False, user_id=user2.id)
    investment.workers.append(worker1)
    investment.workers.append(worker2)
    db.session.add(investment)
    db.session.commit()

    # setting current_invest
    investment = Investment.query.filter_by(name="Test Invest").first()
    user1.current_invest_id = investment.id
    db.session.commit()
Exemplo n.º 9
0
    def test_get_team(app_and_db, active_user):
        db = app_and_db[1]
        db.session.add(Investment(name="test invest 1"))
        db.session.add(Worker(position="pos1", admin=True, investment_id=1))
        db.session.add(Worker(position="pos2", admin=False, investment_id=1))
        db.session.add(Worker(position="pos2", admin=False, investment_id=1))
        db.session.add(Investment(name="test invest 2"))
        db.session.add(Worker(position="pos2", admin=False, investment_id=2))
        db.session.add(Worker(position="pos2", admin=False, investment_id=2))
        db.session.commit()

        worker1 = Worker.query.get(1)
        worker2 = Worker.query.get(2)
        worker3 = Worker.query.get(3)

        assert Worker.get_team(investment_id=1) == [worker1, worker2, worker3]
Exemplo n.º 10
0
def add_worker() -> str:
    if not Worker.is_admin(current_user.id, g.current_invest.id):
        return redirect(url_for("team.team"))
    form = CreateWorkerForm()
    if form.validate_on_submit():
        if Worker.belongs_to_investment(form.email.data, g.current_invest.id):
            flash("This user is already added to workers.")
            return redirect(url_for("team.team"))
        user = User.query.filter_by(email=form.email.data).first()
        if not user:
            user = User(
                username=form.email.data,
                email=form.email.data,
                password=uuid.uuid4().hex,
            )
            db.session.add(user)
            db.session.commit()
            user = User.query.filter_by(email=form.email.data).first()
            email.send_complete_registration_mail(user)
        worker = Worker(
            position=form.position.data,
            admin=form.admin.data,
            user_id=user.id,
        )
        g.current_invest.workers.append(worker)
        db.session.commit()
        flash("You have added new worker successfully.")
        return redirect(url_for("team.team"))
    return render_template("team/form.html", title="Add Worker", form=form)
Exemplo n.º 11
0
    def test_get_by_user_id(app_and_db, active_user):
        db = app_and_db[1]
        investment = Investment(name="test")
        user = User.query.filter_by(username="******").first()
        worker = Worker(position="test worker", user_id=user.id)
        investment.workers.append(worker)
        db.session.add(investment)
        db.session.commit()

        assert Investment.get_by_user_id(user_id=1)
Exemplo n.º 12
0
    def test_check_admins(app_and_db):
        db = app_and_db[1]

        for i in range(1, 5):
            user = User(
                username="******".format(i),
                email="user_{}@mail.com".format(i),
                password="******",
            )
            user.is_active = True
            db.session.add(user)
            investment = Investment(name="test invest {}".format(i))
            db.session.add(investment)
            db.session.commit()

        user1 = Investment.query.filter_by(id=1).first()
        user2 = Investment.query.filter_by(id=2).first()
        user3 = Investment.query.filter_by(id=3).first()

        # one user -> not add to list
        invest1 = Investment.query.filter_by(id=1).first()
        worker1 = Worker(position="pos1", admin=True, user_id=user1.id)
        invest1.workers.append(worker1)

        # two users, one admin, user1 is admin -> add to list
        invest2 = Investment.query.filter_by(id=2).first()
        worker1 = Worker(position="pos1", admin=True, user_id=user1.id)
        worker2 = Worker(position="pos2", admin=False, user_id=user2.id)
        invest2.workers.append(worker1)
        invest2.workers.append(worker2)

        # two users, user1 is not admin -> not add to list
        invest3 = Investment.query.filter_by(id=3).first()
        worker1 = Worker(position="pos1", admin=False, user_id=user1.id)
        worker2 = Worker(position="pos2", admin=True, user_id=user2.id)
        invest3.workers.append(worker1)
        invest3.workers.append(worker2)

        # three user, two admin, user1 is admin -> not add to list
        invest4 = Investment.query.filter_by(id=4).first()
        worker1 = Worker(position="pos1", admin=True, user_id=user1.id)
        worker2 = Worker(position="pos2", admin=False, user_id=user2.id)
        worker3 = Worker(position="pos3", admin=True, user_id=user3.id)
        invest4.workers.append(worker1)
        invest4.workers.append(worker2)
        invest4.workers.append(worker3)

        db.session.commit()

        user = User.query.filter_by(username="******").first()
        assert User.check_admins(user_id=user.id)[0] == [invest2]
        assert User.check_admins(user_id=user.id)[1] == [invest1]
Exemplo n.º 13
0
    def test_belongs_to_investment(app_and_db, active_user):
        db = app_and_db[1]
        investment = Investment(name="test invest")
        worker = Worker(position="pos1", user_id=1)
        investment.workers.append(worker)
        db.session.add(investment)
        db.session.commit()

        assert Worker.belongs_to_investment(email="*****@*****.**",
                                            investment_id=1)
        assert not Worker.belongs_to_investment(email="*****@*****.**",
                                                investment_id=1)
Exemplo n.º 14
0
    def test_get_current_invest(app_and_db, active_user):
        db = app_and_db[1]

        investment = Investment(name="Test Investment")
        user = User.query.filter_by(username="******").first()
        user.current_invest_id = 1
        worker = Worker(position="test position", user_id=user.id)
        investment.workers.append(worker)
        db.session.add(investment)
        db.session.commit()

        user = User.query.filter_by(username="******").first()
        current_invest = user.get_current_invest()
        print(type(current_invest))
        assert current_invest.name == "Test Investment"
Exemplo n.º 15
0
def register_worker():
    data = request.get_json(force=True)

    if Worker.query.filter_by(hostname=data['hostname']).first():
        return error_response(409, 'Worker already registered.')

    worker = Worker()
    worker.from_dict(data)

    db.session.add(worker)
    db.session.commit()

    response = jsonify(worker.to_dict())
    response.status_code = 201

    return response
Exemplo n.º 16
0
def add_worker():
    if request.method == 'POST':
        worker_name = request.form['worker_name']
        worker_address = request.form['worker_address']
        worker_contact = request.form['worker_contact']
        worker = Worker(worker_name=worker_name,
                        worker_address=worker_address,
                        worker_contact=worker_contact,
                        admin=current_user)
        db.session.add(worker)
        db.session.commit()
        flash('{} is successfully added'.format(worker_name))
        return redirect(url_for('worker_detials'))

    return render_template('administrator/worker.html',
                           title='Worker',
                           worker=None)
Exemplo n.º 17
0
 def post(self):
     if request.is_json:
         email = request.json['email']
         fname = request.json['fname']
         lname = request.json['lname']
         dob = request.json['dob']
         identity = request.json['identity']
         phone = request.json['phone']
         worker = Worker(email=email,
                         first_name=fname,
                         last_name=lname,
                         dob=dob,
                         identification=identity,
                         phone=phone,
                         availibility=True)
         worker.save()
         return jsonify(worker)
     return {'status': 'invalid request'}
Exemplo n.º 18
0
    def test_investment(app_and_db, active_user):
        db = app_and_db[1]

        investment = Investment(name="Test Investment")
        user = User.query.filter_by(username="******").first()
        worker = Worker(position="test position", user_id=user.id)
        investment.workers.append(worker)
        db.session.add(investment)
        db.session.commit()

        user = User.query.filter_by(username="******").first()
        worker = Worker.query.filter_by(position="test position").first()
        investment = Investment.query.filter_by(name="Test Investment").first()

        assert user.workers.first() == worker
        assert investment.workers.first() == worker
        assert worker.user_id == user.id
        assert worker.investment_id == investment.id
Exemplo n.º 19
0
def create() -> str:
    form = InvestmentForm()
    if form.validate_on_submit():
        investment = Investment(
            name=form.name.data,
            description=form.description.data,
        )
        worker = Worker(
            position="admin",
            admin=True,
            user_id=current_user.id,
        )
        investment.workers.append(worker)
        db.session.add(investment)
        db.session.commit()
        flash("You have created new investment successfully.")
        return redirect(url_for("investments.invest_list"))
    return render_template("investments/form.html",
                           title="Create Investment",
                           form=form)
Exemplo n.º 20
0
def workers():
    form = AddWorkerForm()
    if form.validate_on_submit():
        worker = Worker(first_name=form.first_name.data, middle_name=form.middle_name.data,
                        second_name=form.second_name.data, email=form.email.data, company_id=current_user.id)
        db.session.add(worker)
        db.session.commit()
        if not os.path.exists('{}/workers/{}'.format(current_user.uploads_path, worker.id)):
            os.mkdir('{}/workers/{}'.format(current_user.uploads_path, worker.id))
        worker.uploads_path = os.path.join(
            current_user.uploads_path, 'workers', str(worker.id))
        db.session.commit()
        flash('Новый сотрудник добавлен')
        return redirect(url_for('main.workers'))
    if current_user.role == 'company':
        company = Company.query.get(current_user.id)
        workers = Worker.query.filter_by(company_id=current_user.id).all()
    elif current_user.role == 'doctor':
        doctor = Doctor.query.get(current_user.id)
        company = Company.query.get(doctor.company_id)
        workers = Worker.query.filter_by(company_id=doctor.company_id).all()
    return render_template('workers.html', title='Работники', form=form, company=company, workers=workers)
Exemplo n.º 21
0
def addWorker():
    workerF = WorkerF()
    if request.method == 'POST':
        if workerF.validate_on_submit():
            fname = workerF.fname.data
            lname = workerF.lname.data
            address1 = workerF.address1.data
            city = workerF.city.data
            state = workerF.state.data
            country = workerF.country.data
            telephone = workerF.telephone.data
            role = workerF.role.data
            email = workerF.email.data

            worker = Worker(fname, lname, address1, city, state, country,
                            telephone, role, email)
            db.session.add(worker)
            db.session.commit()

            flash('Worker successfully added!', 'success')
            return redirect(url_for('home'))

        flash_errors(worker)
    return render_template('addworker.html', form=workerF)
Exemplo n.º 22
0
    def get(self):

        log = logging.getLogger(__name__)

        time_now = datetime.datetime.now()

        try:
            grain_storehouses = list()
            grain_storehouses.append(
                GrainStorehouse(storehouse_no='1', storehouse_name='福州直属库'))
            db.session.add(grain_storehouses[0])
            db.session.commit()
        except Exception as e:
            log.error("Creating grain_storehouse: %s", e)
            db.session.rollback()

        try:
            lora_gateways = list()
            lora_gateways.append(
                LoraGateway(gateway_addr='1',
                            grain_storehouse=grain_storehouses[0]))

            db.session.add(lora_gateways[0])
            db.session.commit()
        except Exception as e:
            log.error("Creating lora_gateway: %s", e)
            db.session.rollback()

        try:
            grain_barns = list()
            grain_barns.append(
                GrainBarn(barn_no='1',
                          barn_name='37号仓',
                          grain_storehouse=grain_storehouses[0],
                          lora_gateway=lora_gateways[0],
                          high_limit=30,
                          low_limit=20))
            grain_barns.append(
                GrainBarn(barn_no='2',
                          barn_name='34号仓',
                          grain_storehouse=grain_storehouses[0],
                          lora_gateway=lora_gateways[0],
                          high_limit=30,
                          low_limit=20))
            grain_barns.append(
                GrainBarn(barn_no='3',
                          barn_name='41号仓',
                          grain_storehouse=grain_storehouses[0],
                          lora_gateway=lora_gateways[0],
                          high_limit=30,
                          low_limit=20))
            grain_barns.append(
                GrainBarn(barn_no='4',
                          barn_name='11号仓',
                          grain_storehouse=grain_storehouses[0],
                          lora_gateway=lora_gateways[0],
                          high_limit=30,
                          low_limit=20))

            for i in range(len(grain_barns)):
                db.session.add(grain_barns[i])

            db.session.commit()

        except Exception as e:
            log.error("Creating barns: %s", e)
            db.session.rollback()

        try:
            power_ios = list()
            power_ios.append(
                PowerIo(addr='1', name='34号仓配电箱1#', grain_barn=grain_barns[1]))
            power_ios.append(
                PowerIo(addr='2', name='34号仓配电箱2#', grain_barn=grain_barns[1]))
            power_ios.append(
                PowerIo(addr='3', name='37号仓配电箱1#', grain_barn=grain_barns[0]))
            power_ios.append(
                PowerIo(addr='4', name='11号仓配电箱1#', grain_barn=grain_barns[3]))
            power_ios.append(
                PowerIo(addr='5', name='41号仓配电箱1#', grain_barn=grain_barns[2]))
            power_ios.append(
                PowerIo(addr='6', name='37号仓配电箱2#', grain_barn=grain_barns[0]))
            power_ios.append(
                PowerIo(addr='7', name='41号仓配电箱2#', grain_barn=grain_barns[2]))
            power_ios.append(
                PowerIo(addr='8', name='11号仓配电箱2#', grain_barn=grain_barns[3]))

            db.session.add(power_ios[0])
            db.session.add(power_ios[1])
            db.session.add(power_ios[2])
            db.session.add(power_ios[3])
            db.session.add(power_ios[4])
            db.session.add(power_ios[5])
            db.session.add(power_ios[6])
            db.session.add(power_ios[7])

            db.session.commit()
        except Exception as e:
            log.error("Creating power_io: %s", e)
            db.session.rollback()

        try:
            tianshuo_485s = list()
            tianshuo_485s.append(
                TianshuoRs485(addr='1',
                              name='11号仓1#空调',
                              grain_barn=grain_barns[3]))
            tianshuo_485s.append(
                TianshuoRs485(addr='2',
                              name='11号仓2#空调',
                              grain_barn=grain_barns[3]))

            db.session.add(tianshuo_485s[0])
            db.session.add(tianshuo_485s[1])

            db.session.commit()
        except Exception as e:
            log.error("Creating tianshuo_485: %s", e)
            db.session.rollback()

        try:
            lora_nodes = list()

            lora_nodes.append(
                LoraNode(node_addr='29',
                         node_name='37-1',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[0],
                         power_io=power_ios[2],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='21',
                         node_name='37-2',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[0],
                         power_io=power_ios[2],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='17',
                         node_name='37-3',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[0],
                         power_io=power_ios[5],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='25',
                         node_name='37-4',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[0],
                         power_io=power_ios[5],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='18',
                         node_name='34-1',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[1],
                         power_io=power_ios[0],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='24',
                         node_name='34-2',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[1],
                         power_io=power_ios[0],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='10',
                         node_name='34-3',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[1],
                         power_io=power_ios[1],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='15',
                         node_name='34-4',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[1],
                         power_io=power_ios[1],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='16',
                         node_name='41-1',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[2],
                         power_io=power_ios[4],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='20',
                         node_name='41-2',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[2],
                         power_io=power_ios[4],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='auto',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='19',
                         node_name='41-3',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[2],
                         power_io=power_ios[6],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='26',
                         node_name='41-4',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[2],
                         power_io=power_ios[6],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='27',
                         node_name='11-1',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[3],
                         power_io=power_ios[3],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='28',
                         node_name='11-2',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[3],
                         power_io=power_ios[3],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='22',
                         node_name='11-3',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[3],
                         power_io=power_ios[7],
                         current=1.0,
                         current_no=1,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))
            lora_nodes.append(
                LoraNode(node_addr='30',
                         node_name='11-4',
                         grain_storehouse=grain_storehouses[0],
                         lora_gateway=lora_gateways[0],
                         grain_barn=grain_barns[3],
                         power_io=power_ios[7],
                         current=1.0,
                         current_no=2,
                         current_limit=10,
                         auto_manual='manual',
                         manual_start_time=time_now,
                         manual_end_time=time_now +
                         datetime.timedelta(seconds=600),
                         auto_start_time=time_now,
                         auto_end_time=time_now))

            db.session.add(lora_nodes[0])
            db.session.add(lora_nodes[1])
            db.session.add(lora_nodes[2])
            db.session.add(lora_nodes[3])
            db.session.add(lora_nodes[4])
            db.session.add(lora_nodes[5])
            db.session.add(lora_nodes[6])
            db.session.add(lora_nodes[7])
            db.session.add(lora_nodes[8])
            db.session.add(lora_nodes[9])
            db.session.add(lora_nodes[10])
            db.session.add(lora_nodes[11])
            db.session.add(lora_nodes[12])
            db.session.add(lora_nodes[13])
            db.session.add(lora_nodes[14])
            db.session.add(lora_nodes[15])

            db.session.commit()
        except Exception as e:
            log.error("Creating lora_node: %s", e)
            db.session.rollback()

        for i in range(1, 100):
            gt = GrainTemp()
            gt.grain_storehouse = grain_storehouses[0]
            gt.lora_gateway = lora_gateways[0]
            gt.grain_barn = grain_barns[0]
            gt.lora_node = lora_nodes[random.randint(0, 3)]
            gt.switch = False
            gt.temp1 = random.randrange(20, 30)
            gt.temp2 = random.randrange(20, 30)
            gt.temp3 = random.randrange(20, 30)
            gt.battery_vol = random.randint(1, 3)
            gt.datetime = datetime.datetime.now()

            db.session.add(gt)
            try:
                db.session.commit()
                print("inserted", gt)
            except Exception as e:
                log.error("Creating GrainTemp: %s", e)
                db.session.rollback()

        try:
            relay_current_rs485_funcs = list()

            relay_current_rs485_funcs.append(
                RelayCurrentRs485Func(function_name='suck_func_code',
                                      function_code='1000000001020100'))
            relay_current_rs485_funcs.append(
                RelayCurrentRs485Func(function_name='release_func_code',
                                      function_code='1000000001020000'))
            relay_current_rs485_funcs.append(
                RelayCurrentRs485Func(function_name='current_A1_A2_func_code',
                                      function_code='0300040004'))

            db.session.add(relay_current_rs485_funcs[0])
            db.session.add(relay_current_rs485_funcs[1])
            db.session.add(relay_current_rs485_funcs[2])

            db.session.commit()
        except Exception as e:
            log.error("Creating relay_current_rs485_funcs: %s", e)
            db.session.rollback()

        try:
            power_io_rs485_funcs = list()
            power_io_rs485_funcs.append(
                PowerIoRs485Func(function_name='open_channel_1',
                                 function_code=5,
                                 start_at_reg_high=0,
                                 start_at_reg_low=16,
                                 num_of_reg_high=255,
                                 num_of_reg_low=0))
            power_io_rs485_funcs.append(
                PowerIoRs485Func(function_name='close_channel_1',
                                 function_code=5,
                                 start_at_reg_high=0,
                                 start_at_reg_low=16,
                                 num_of_reg_high=0,
                                 num_of_reg_low=0))

            # power_1_close = '010500100000CC0F'
            # power_1_open = '01050010FF008DFF'

            db.session.add(power_io_rs485_funcs[0])
            db.session.add(power_io_rs485_funcs[1])

            db.session.commit()
        except Exception as e:
            log.error("Creating power_io_rs485_funcs: %s", e)
            db.session.rollback()

        try:
            tianshuo_rs485_funcs = list()
            tianshuo_rs485_funcs.append(
                TianshuoRs485Func(function_name='off_and_cold',
                                  function_code=6,
                                  start_at_reg_high=0,
                                  start_at_reg_low=0,
                                  num_of_reg_high=0,
                                  num_of_reg_low=1))
            tianshuo_rs485_funcs.append(
                TianshuoRs485Func(function_name='on_and_cold',
                                  function_code=6,
                                  start_at_reg_high=0,
                                  start_at_reg_low=0,
                                  num_of_reg_high=0,
                                  num_of_reg_low=9))

            # off_cold = '010600000001'
            # on_cold = '010600000009'

            db.session.add(tianshuo_rs485_funcs[0])
            db.session.add(tianshuo_rs485_funcs[1])

            db.session.commit()
        except Exception as e:
            log.error("Creating tianshuo_rs485_funcs: %s", e)
            db.session.rollback()

        for i in range(1, 50):
            mq_func = NodeMqttTransFunc()
            mq_func.gateway_addr = '001'
            mq_func.node_addr = bitstring.pack('uint:13', i).bin
            mq_func.trans_direct = '1'
            mq_func.func_code = '0010001'
            mq_func.wind_direct = '00'
            mq_func.wind_speed = '11'
            mq_func.model = '0000011011'
            mq_func.on_off = '00'
            mq_func.work_mode = '001'
            mq_func.temp = '10000'

            db.session.add(mq_func)
            try:
                db.session.commit()
                print("inserted", mq_func)
            except Exception as e:
                log.error("Creating NodeMqttTransFunc: %s", e)
                db.session.rollback()

        try:
            alarm_level_setting = list()
            alarm_level_setting.append(AlarmLevelSetting(warning=57, error=68))

            db.session.add(alarm_level_setting[0])

            db.session.commit()
        except Exception as e:
            log.error("Creating alarm_level_setting: %s", e)
            db.session.rollback()

        try:
            alarm_statuses = list()
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[0],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[1],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[2],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[3],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[4],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[5],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[6],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[7],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[8],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[9],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[10],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[11],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[12],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[13],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[14],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))
            alarm_statuses.append(
                AlarmStatus(lora_node=lora_nodes[15],
                            alarm_status=False,
                            datetime=time_now,
                            send_alarm_datetime=time_now))

            db.session.add(alarm_statuses[0])
            db.session.add(alarm_statuses[1])
            db.session.add(alarm_statuses[2])
            db.session.add(alarm_statuses[3])
            db.session.add(alarm_statuses[4])
            db.session.add(alarm_statuses[5])
            db.session.add(alarm_statuses[6])
            db.session.add(alarm_statuses[7])
            db.session.add(alarm_statuses[8])
            db.session.add(alarm_statuses[9])
            db.session.add(alarm_statuses[10])
            db.session.add(alarm_statuses[11])
            db.session.add(alarm_statuses[12])
            db.session.add(alarm_statuses[13])
            db.session.add(alarm_statuses[14])
            db.session.add(alarm_statuses[15])

            db.session.commit()

        except Exception as e:
            log.error("Creating alarm_status: %s", e)
            db.session.rollback()

        try:
            alarm_types = list()
            alarm_types.append(
                AlarmTypes(
                    alarm_type='Now temperature higher than the warning level!'
                ))
            alarm_types.append(
                AlarmTypes(
                    alarm_type='Now temperature higher than the error level!'))
            alarm_types.append(
                AlarmTypes(
                    alarm_type='Now current higher than the current limit!'))

            db.session.add(alarm_types[0])
            db.session.add(alarm_types[1])
            db.session.add(alarm_types[2])

            db.session.commit()

        except Exception as e:
            log.error("Creating alarm_types: %s", e)
            db.session.rollback()

        try:
            alarm_records = list()
            alarm_records.append(
                AlarmRecords(lora_node=lora_nodes[0],
                             alarm_type=alarm_types[0],
                             datetime=time_now))
            alarm_records.append(
                AlarmRecords(lora_node=lora_nodes[1],
                             alarm_type=alarm_types[1],
                             datetime=time_now))
            alarm_records.append(
                AlarmRecords(lora_node=lora_nodes[2],
                             alarm_type=alarm_types[2],
                             datetime=time_now))
            alarm_records.append(
                AlarmRecords(lora_node=lora_nodes[3],
                             alarm_type=alarm_types[0],
                             datetime=time_now))
            alarm_records.append(
                AlarmRecords(lora_node=lora_nodes[4],
                             alarm_type=alarm_types[1],
                             datetime=time_now))
            alarm_records.append(
                AlarmRecords(lora_node=lora_nodes[5],
                             alarm_type=alarm_types[2],
                             datetime=time_now))

            db.session.add(alarm_records[0])
            db.session.add(alarm_records[1])
            db.session.add(alarm_records[2])
            db.session.add(alarm_records[3])
            db.session.add(alarm_records[4])
            db.session.add(alarm_records[5])

            db.session.commit()

        except Exception as e:
            log.error("Creating alarm_records: %s", e)
            db.session.rollback()

        try:
            daq_projects = list()
            daq_projects.append(Project(name='project1'))
            daq_projects.append(Project(name='project2'))
            daq_projects.append(Project(name='project3'))
            db.session.add(daq_projects[0])
            db.session.add(daq_projects[1])
            db.session.add(daq_projects[2])
            db.session.commit()
        except Exception as e:
            log.error("Creating daq_projects: %s", e)
            db.session.rollback()

        try:
            daq_workers = list()
            daq_workers.append(Worker(name='worker1', project=daq_projects[0]))
            daq_workers.append(Worker(name='worker2', project=daq_projects[0]))
            daq_workers.append(Worker(name='worker1', project=daq_projects[1]))
            daq_workers.append(Worker(name='worker2', project=daq_projects[1]))
            daq_workers.append(Worker(name='worker1', project=daq_projects[2]))
            daq_workers.append(Worker(name='worker2', project=daq_projects[2]))

            db.session.add(daq_workers[0])
            db.session.add(daq_workers[1])
            db.session.add(daq_workers[2])
            db.session.add(daq_workers[3])
            db.session.add(daq_workers[4])
            db.session.add(daq_workers[5])
            db.session.commit()
        except Exception as e:
            log.error("Creating daq_workers: %s", e)
            db.session.rollback()

        for i in range(1, 100):
            gt = Temperature()

            gt.project = daq_projects[0]
            gt.worker = daq_workers[0]
            gt.datetime = datetime.datetime.now()
            gt.value = json.dumps([[x, round(random.uniform(250, 300), 2)]
                                   for x in range(20)])

            db.session.add(gt)
            try:
                db.session.commit()
                print("inserted", gt)
            except Exception as e:
                log.error("Creating Temperature: %s", e)
                db.session.rollback()

        for i in range(1, 10):
            power = Power()
            power.project = daq_projects[0]
            power.worker = daq_workers[0]
            power.datetime = datetime.datetime.now()

            powerValue1 = [
                round(random.uniform(0, 30), 2) for x in range(0, 8)
            ]
            powerValue2 = [
                round(random.uniform(0, 30), 2) for x in range(0, 8)
            ]
            powerMoudle1 = [1, powerValue1]
            powerMoudle2 = [2, powerValue2]

            power.value = json.dumps([powerMoudle1, powerMoudle2])

            db.session.add(power)
            try:
                db.session.commit()
                print("inserted", power)
            except Exception as e:
                log.error("Creating Power: %s", e)
                db.session.rollback()

        return jsonify({'success': 'auto insert init datas!'})
Exemplo n.º 23
0
    def get(self):

        log = logging.getLogger(__name__)

        time_now = datetime.datetime.now()


        try:
            daq_projects = list()
            daq_projects.append(Project(name='project1'))
            daq_projects.append(Project(name='project2'))
            daq_projects.append(Project(name='project3'))
            db.session.add(daq_projects[0])
            db.session.add(daq_projects[1])
            db.session.add(daq_projects[2])
            db.session.commit()
        except Exception as e:
            log.error("Creating daq_projects: %s", e)
            db.session.rollback()


        try:
            daq_workers = list()
            daq_workers.append(Worker(name='worker1', project=daq_projects[0]))
            daq_workers.append(Worker(name='worker2', project=daq_projects[0]))
            daq_workers.append(Worker(name='worker1', project=daq_projects[1]))
            daq_workers.append(Worker(name='worker2', project=daq_projects[1]))
            daq_workers.append(Worker(name='worker1', project=daq_projects[2]))
            daq_workers.append(Worker(name='worker2', project=daq_projects[2]))

            db.session.add(daq_workers[0])
            db.session.add(daq_workers[1])
            db.session.add(daq_workers[2])
            db.session.add(daq_workers[3])
            db.session.add(daq_workers[4])
            db.session.add(daq_workers[5])
            db.session.commit()
        except Exception as e:
            log.error("Creating daq_workers: %s", e)
            db.session.rollback()



        for i in range(1, 100):
            gt = Temperature()

            gt.project = daq_projects[0]
            gt.worker = daq_workers[0]
            gt.datetime = datetime.datetime.now()
            gt.value = json.dumps([[x,round(random.uniform(250,300),2)] for x in range(20)])

            db.session.add(gt)
            try:
                db.session.commit()
                print("inserted", gt)
            except Exception as e:
                log.error("Creating Temperature: %s", e)
                db.session.rollback()


        for i in range(1, 10):
            power = Power()
            power.project = daq_projects[0]
            power.worker = daq_workers[0]
            power.datetime = datetime.datetime.now()

            powerValue1 = [round(random.uniform(0, 30),2) for x in range(0,8)]
            powerValue2 = [round(random.uniform(0, 30),2) for x in range(0,8)]
            powerMoudle1 = [1, powerValue1]
            powerMoudle2 = [2, powerValue2]

            power.value = json.dumps([powerMoudle1,powerMoudle2])


            db.session.add(power)
            try:
                db.session.commit()
                print("inserted", power)
            except Exception as e:
                log.error("Creating Power: %s", e)
                db.session.rollback()

        return jsonify({'success': 'auto insert init datas!'})
Exemplo n.º 24
0
def populate_db() -> User:
    # Users
    while True:
        guest_name = get_fake_name_from_buffer(r)
        try:
            guest = get_or_create_user(guest_name, guest=True)
        except (IntegrityError, ValueError):
            db.session.rollback()
        else:
            break

    user2 = get_or_create_user("Fryderyk Pawlak")
    user3 = get_or_create_user("Karina Tomaszewska")
    user4 = get_or_create_user("Jacek Chmiel")
    user5 = get_or_create_user("Honorata Wieczorek")

    # Workers
    worker1 = Worker(position="Visitor", admin=True, user_id=guest.id)
    worker2 = Worker(position="Site Manager", admin=True, user_id=user2.id)
    worker3 = Worker(position="Project Manager", admin=True, user_id=user3.id)
    worker4 = Worker(position="Site Engineer", admin=False, user_id=user4.id)
    worker5 = Worker(position="Quantity Engineer",
                     admin=False,
                     user_id=user5.id)

    # Tasks
    description = "Get to know eCon"
    task1 = Task(
        description=description,
        deadline=date.today() + timedelta(days=2),
        priority=5,
        orderer=worker2,
        executor=worker1,
    )
    task2 = Task(
        description="Very important task",
        deadline=date.today() + timedelta(days=2),
        priority=5,
        orderer=worker2,
        executor=worker3,
    )
    task3 = Task(
        description="Less important task",
        deadline=date.today() + timedelta(days=1),
        priority=2,
        orderer=worker3,
        executor=worker2,
    )

    # Investment
    invest = Investment(
        name="Warsaw Skyscraper",
        description="Office building with reinforced concrete structure.",
    )
    invest.workers.append(worker1)
    invest.workers.append(worker2)
    invest.workers.append(worker3)
    invest.workers.append(worker4)
    invest.workers.append(worker5)
    invest.tasks.append(task1)
    invest.tasks.append(task2)
    invest.tasks.append(task3)
    db.session.add(invest)
    db.session.commit()

    # Task notification
    notification = create_notification(
        worker_id=guest.workers.first().id,
        n_type="task",
        description=
        f"You have a new task: '{description}' from {user2.username}",
    )
    add_notification(r, notification)

    return guest