Mesclagem de arquivos
This commit is contained in:
parent
3d6821682b
commit
b1a4e48f4a
2
app.py
2
app.py
@ -20,6 +20,7 @@ from routes.service import service_bp
|
||||
from routes.service_roles import service_role_bp
|
||||
from routes.cameras import camera_bp
|
||||
from routes.ambiente import ambiente_bp
|
||||
from routes.service_instance import service_instance_bp
|
||||
from routes.reports import employee_bp
|
||||
import logging
|
||||
from dotenv import load_dotenv
|
||||
@ -119,6 +120,7 @@ def create_app():
|
||||
app.register_blueprint(user_service_role_bp)
|
||||
app.register_blueprint(camera_bp)
|
||||
app.register_blueprint(ambiente_bp)
|
||||
app.register_blueprint(service_instance_bp)
|
||||
|
||||
# Testa a conexão com o banco de dados
|
||||
with app.app_context():
|
||||
|
||||
@ -31,6 +31,10 @@ parameters:
|
||||
type: integer
|
||||
description: ID do serviço associado
|
||||
example: 1
|
||||
service_instance_id:
|
||||
type: integer
|
||||
description: ID da empresa associada
|
||||
example: 1
|
||||
ambiente_id:
|
||||
type: integer
|
||||
description: ID do serviço associado
|
||||
@ -65,6 +69,9 @@ responses:
|
||||
service_id:
|
||||
type: integer
|
||||
description: ID do serviço associado
|
||||
service_instance_id:
|
||||
type: integer
|
||||
description: ID da empresa associada
|
||||
ambiente_id:
|
||||
type: integer
|
||||
description: ID do ambiente_id
|
||||
@ -81,6 +88,7 @@ responses:
|
||||
service_id: 3
|
||||
ambiente_id: 1
|
||||
service_role_id: 5
|
||||
service_instance_id: 1
|
||||
400:
|
||||
description: Requisição inválida (dados incorretos ou ausentes)
|
||||
content:
|
||||
|
||||
@ -34,6 +34,9 @@ responses:
|
||||
service_role_id:
|
||||
type: "integer"
|
||||
example: 1
|
||||
service_instance_id:
|
||||
type: "integer"
|
||||
example: 1
|
||||
404:
|
||||
description: "Função de serviço não encontrada"
|
||||
schema:
|
||||
|
||||
@ -83,6 +83,7 @@ responses:
|
||||
service_id: 1
|
||||
ambiente_id: 1
|
||||
service_role_id: 1
|
||||
service_instance_id: 1
|
||||
|
||||
- id: 2
|
||||
name: "camera 1"
|
||||
@ -92,6 +93,7 @@ responses:
|
||||
service_id: 1
|
||||
ambiente_id: 1
|
||||
service_role_id: 1
|
||||
service_instance_id: 1
|
||||
401:
|
||||
description: Token inválido ou ausente
|
||||
content:
|
||||
|
||||
@ -32,6 +32,12 @@ parameters:
|
||||
schema:
|
||||
type: "string"
|
||||
description: "url da camera."
|
||||
- name: "service_instance_id"
|
||||
in: "body"
|
||||
required: false
|
||||
schema:
|
||||
type: "integer"
|
||||
description: "empresa associada a camera."
|
||||
responses:
|
||||
200:
|
||||
description: "Camera atualizada com sucesso"
|
||||
|
||||
99
docs/service_instance/get.yml
Normal file
99
docs/service_instance/get.yml
Normal file
@ -0,0 +1,99 @@
|
||||
tags:
|
||||
- Service Instance
|
||||
summary: Lista todas as Empresas.
|
||||
security:
|
||||
- bearerAuth: []
|
||||
parameters:
|
||||
- in: query
|
||||
name: page
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
default: 1
|
||||
description: Número da página a ser retornada
|
||||
status: Status da empresa
|
||||
- in: query
|
||||
name: per_page
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
default: 10
|
||||
description: Número de funções de serviço por página
|
||||
responses:
|
||||
200:
|
||||
description: Lista de cameras com informações de paginação
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
total:
|
||||
type: integer
|
||||
description: Número total de funções de serviço
|
||||
pages:
|
||||
type: integer
|
||||
description: Número total de páginas
|
||||
current_page:
|
||||
type: integer
|
||||
description: Página atual
|
||||
per_page:
|
||||
type: integer
|
||||
description: Número de itens por página
|
||||
roles:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
id:
|
||||
type: integer
|
||||
description: ID da empresa
|
||||
name:
|
||||
type: string
|
||||
description: Nome da empresa
|
||||
description:
|
||||
type: string
|
||||
description: Descrição da empresa
|
||||
service_id:
|
||||
type: integer
|
||||
description: ID do serviço associado
|
||||
|
||||
examples:
|
||||
application/json:
|
||||
total: 2
|
||||
pages: 1
|
||||
current_page: 1
|
||||
per_page: 10
|
||||
roles:
|
||||
- id: 1
|
||||
name: "Farmacia"
|
||||
description: "farmacia 1"
|
||||
service_id: 1
|
||||
|
||||
- id: 2
|
||||
name: "Farmacia 2"
|
||||
description: "Farmacia 2"
|
||||
service_id: 1
|
||||
401:
|
||||
description: Token inválido ou ausente
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
examples:
|
||||
application/json:
|
||||
error: "Token inválido ou ausente"
|
||||
404:
|
||||
description: Nenhuma camera encontrada
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
error:
|
||||
type: string
|
||||
examples:
|
||||
application/json:
|
||||
error: "Nenhuma camera encontrada"
|
||||
@ -6,6 +6,7 @@ class Cameras(db.Model):
|
||||
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
||||
service_id = db.Column(db.Integer, db.ForeignKey('service.id'), nullable=False)
|
||||
ambiente_id = db.Column(db.Integer, db.ForeignKey('ambiente.id'), nullable=False)
|
||||
service_instance_id = db.Column(db.Integer, db.ForeignKey('service_instance.id'), nullable=False)
|
||||
service_role_id = db.Column(db.Integer, db.ForeignKey('service_roles.id'), nullable=False)
|
||||
name = db.Column(db.String(255), nullable=False)
|
||||
description = db.Column(db.Text, nullable=True)
|
||||
|
||||
@ -20,6 +20,7 @@ def create_camera():
|
||||
status = data.get('status')
|
||||
description = data.get('description')
|
||||
url = data.get('url')
|
||||
service_instance_id = data.get('service_instance_id')
|
||||
|
||||
# Verifica se o serviço existe
|
||||
service = Service.query.get(service_id)
|
||||
@ -40,6 +41,7 @@ def create_camera():
|
||||
description=description,
|
||||
status=status,
|
||||
url=url,
|
||||
service_instance_id = service_instance_id,
|
||||
|
||||
)
|
||||
|
||||
@ -70,6 +72,7 @@ def list_service_roles():
|
||||
'service_role_id': camera.service_role_id,
|
||||
'status': camera.status,
|
||||
'url':camera.url,
|
||||
'service_instance_id':camera.service_instance_id
|
||||
} for camera in cameras
|
||||
],
|
||||
'total': pagination.total,
|
||||
@ -94,6 +97,7 @@ def get_service_role(camera_id):
|
||||
'service_role_id': camera.service_role_id,
|
||||
'status': camera.status,
|
||||
'url':camera.url,
|
||||
'service_instance_id' : camera.service_instance_id
|
||||
}), 200
|
||||
|
||||
@camera_bp.route('/<int:camera_id>', methods=['PUT'])
|
||||
@ -106,6 +110,7 @@ def update_camera(camera_id):
|
||||
status=data.get('status')
|
||||
url = data.get('url')
|
||||
ambiente_id = data.get('ambiente_id')
|
||||
service_instance_id = data.get('service_instance_id')
|
||||
|
||||
camera = Cameras.query.get(camera_id)
|
||||
if not camera:
|
||||
@ -122,6 +127,8 @@ def update_camera(camera_id):
|
||||
camera.url = url
|
||||
if ambiente_id :
|
||||
camera.ambiente_id = ambiente_id
|
||||
if service_instance_id:
|
||||
camera.service_instance_id = service_instance_id
|
||||
|
||||
db.session.commit()
|
||||
|
||||
|
||||
31
routes/service_instance.py
Normal file
31
routes/service_instance.py
Normal file
@ -0,0 +1,31 @@
|
||||
from flask import Blueprint, request, jsonify
|
||||
from flask_jwt_extended import jwt_required
|
||||
from flasgger.utils import swag_from
|
||||
from models.service_instance import ServiceInstance
|
||||
from models.service import Service
|
||||
|
||||
service_instance_bp = Blueprint('service_instance', __name__, url_prefix='/service_instance')
|
||||
|
||||
@service_instance_bp.route('/', methods=['GET'])
|
||||
@jwt_required()
|
||||
@swag_from('../docs/service_instance/list.yml')
|
||||
def list_ambiente():
|
||||
page = request.args.get('page', 1, type=int)
|
||||
per_page = request.args.get('per_page', 10, type=int)
|
||||
|
||||
pagination = ServiceInstance.query.paginate(page=page, per_page=per_page, error_out=False)
|
||||
service_instances = pagination.items
|
||||
|
||||
return jsonify({
|
||||
'service_instance': [
|
||||
{
|
||||
'id': service_instance.id,
|
||||
'name': service_instance.name,
|
||||
'description': service_instance.description,
|
||||
'service_id': service_instance.service_id
|
||||
} for service_instance in service_instances
|
||||
],
|
||||
'total': pagination.total,
|
||||
'page': pagination.page,
|
||||
'per_page': pagination.per_page
|
||||
}), 200
|
||||
@ -5,18 +5,20 @@ def seed_ambiente():
|
||||
ambientes = [
|
||||
# Ambiente 1
|
||||
{
|
||||
"service_id": 4,
|
||||
"service_id": 1,
|
||||
"service_role_id":4,
|
||||
"name": "Entrada",
|
||||
"description": " Hall de Entrada, apresenta 3 cameras."
|
||||
"description": " Hall de Entrada, apresenta 3 cameras.",
|
||||
"status":"Active"
|
||||
},
|
||||
|
||||
# Ambiente 2
|
||||
{
|
||||
"service_id": 4,
|
||||
"service_id": 1,
|
||||
"service_role_id":4,
|
||||
"name": "Estoque",
|
||||
"description": "Estoque, apresenta 3 cameras."
|
||||
"description": "Estoque, apresenta 3 cameras.",
|
||||
"status":"Active"
|
||||
},
|
||||
]
|
||||
for ambiente_data in ambientes:
|
||||
@ -34,7 +36,9 @@ def seed_ambiente():
|
||||
name=ambiente_data["name"],
|
||||
description=ambiente_data["description"]
|
||||
)
|
||||
print("antes do banco")
|
||||
db.session.add(ambiente)
|
||||
print("adiconei no banco")
|
||||
|
||||
# Commit a transação para salvar os dados no banco
|
||||
db.session.commit()
|
||||
|
||||
@ -10,6 +10,7 @@ def seed_cameras():
|
||||
"service_role_id":3,
|
||||
"name": "Camera Hall de Entrada",
|
||||
"description": "Camera 1 Hall de entrada, modelo XXX.",
|
||||
"url":"http://testecameraentrada",
|
||||
"status":"Active"
|
||||
},
|
||||
|
||||
@ -20,6 +21,7 @@ def seed_cameras():
|
||||
"service_role_id":3,
|
||||
"name": "Camera Estoque",
|
||||
"description": "Camera 1 Estoque, modelo XXX.",
|
||||
"url":"http://testecamerestoque",
|
||||
"status":"Active"
|
||||
},
|
||||
]
|
||||
|
||||
35
seeds/delet.py
Normal file
35
seeds/delet.py
Normal file
@ -0,0 +1,35 @@
|
||||
import sys
|
||||
import os
|
||||
from flask import Flask
|
||||
|
||||
from dotenv import load_dotenv
|
||||
|
||||
# Carrega variáveis do .env
|
||||
load_dotenv()
|
||||
|
||||
# Adiciona o diretório raiz do projeto ao sys.path
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
|
||||
from extensions import db
|
||||
app = Flask(__name__)
|
||||
|
||||
# Configuração do banco de dados usando o .env
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL')
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
|
||||
# Inicializa o db
|
||||
db.init_app(app)
|
||||
|
||||
def clear_all_tables():
|
||||
try:
|
||||
with app.app_context():
|
||||
meta = db.metadata
|
||||
for table in reversed(meta.sorted_tables):
|
||||
print(f"Apagando dados da tabela: {table.name}")
|
||||
# Comando para excluir os dados
|
||||
result = db.session.execute(table.delete())
|
||||
db.session.commit()
|
||||
print(f"✅ Dados apagados da tabela {table.name}")
|
||||
except Exception as e:
|
||||
print(f"Erro ao apagar dados: {e}")
|
||||
|
||||
clear_all_tables()
|
||||
@ -30,9 +30,10 @@ def run_all_seeds():
|
||||
seed_contacts()
|
||||
seed_user_service_roles()
|
||||
seed_licenses()
|
||||
seed_cameras()
|
||||
seed_ambiente()
|
||||
reports_seed()
|
||||
seed_cameras()
|
||||
|
||||
print("Seeds executados com sucesso!")
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
|
||||
@ -21,9 +21,9 @@ def seed_service_instances():
|
||||
|
||||
# Verifica se as instâncias de serviço já existem, caso contrário, cria
|
||||
instances_data = [
|
||||
{"service_id": service_1.id, "name": "Farmácia 1", "description": "Instância para Farmácia 1"},
|
||||
#{"service_id": service_1.id, "name": "Escola Beta", "description": "Instância para Escola Beta"},
|
||||
#{"service_id": service_2.id, "name": "Campus Principal", "description": "Controle de Acesso Campus"},
|
||||
{"service_id": service_1.id, "name": "Drograsil", "description": "Instância para Farmácia Drogasil"},
|
||||
{"service_id": service_1.id, "name": "Fogo de Chão", "description": "Instância para Escola Fogo de Chão"},
|
||||
{"service_id": service_1.id, "name": "Sabin", "description": "Instancia para Farmacia Sabin"},
|
||||
]
|
||||
|
||||
for instance_data in instances_data:
|
||||
|
||||
@ -6,11 +6,12 @@ from models.user import User
|
||||
from extensions import db
|
||||
|
||||
def seed_service_role_permissions():
|
||||
user = User.query.first() # Obtém o primeiro usuário para fins de exemplo
|
||||
users = User.query.filter(User.id.in_([1, 3, 5])).all() # Alterado para considerar usuarios admins
|
||||
|
||||
service_instance = ServiceInstance.query.first() # Obtém a primeira instância de serviço
|
||||
|
||||
# Verifica se há um usuário e uma instância de serviço
|
||||
if user and service_instance:
|
||||
if users and service_instance:
|
||||
# Define as permissões que você deseja atribuir
|
||||
permissions = [
|
||||
{'name': "Read Access", 'description': "Permission to read data", 'type': 'read'},
|
||||
@ -18,49 +19,49 @@ def seed_service_role_permissions():
|
||||
{'name': "Edit Access", 'description': "Permission to edit data", 'type': 'edit'},
|
||||
{'name': "Delete Access", 'description': "Permission to delete data", 'type': 'delete'},
|
||||
]
|
||||
for user in users:
|
||||
# Itera sobre todos os service roles (1 a 10)
|
||||
for service_role_id in range(1, 11): # Para cada role de 1 até 10
|
||||
service_role = ServiceRole.query.get(service_role_id)
|
||||
if not service_role:
|
||||
print(f"ServiceRole com id {service_role_id} não encontrado.")
|
||||
continue # Se o service_role não existir, pula
|
||||
|
||||
# Itera sobre todos os service roles (1 a 10)
|
||||
for service_role_id in range(1, 11): # Para cada role de 1 até 10
|
||||
service_role = ServiceRole.query.get(service_role_id)
|
||||
if not service_role:
|
||||
print(f"ServiceRole com id {service_role_id} não encontrado.")
|
||||
continue # Se o service_role não existir, pula
|
||||
# Para cada permissão definida, associa ao service role
|
||||
for perm in permissions:
|
||||
# Verifica se a permissão já existe no banco de dados
|
||||
existing_permission = Permission.query.filter_by(name=perm['name']).first()
|
||||
if not existing_permission:
|
||||
# Se a permissão não existir, cria e adiciona ao banco
|
||||
permission = Permission(name=perm['name'], description=perm['description'])
|
||||
db.session.add(permission)
|
||||
db.session.commit()
|
||||
print(f"Permissão '{perm['name']}' criada com sucesso.")
|
||||
else:
|
||||
permission = existing_permission
|
||||
|
||||
# Para cada permissão definida, associa ao service role
|
||||
for perm in permissions:
|
||||
# Verifica se a permissão já existe no banco de dados
|
||||
existing_permission = Permission.query.filter_by(name=perm['name']).first()
|
||||
if not existing_permission:
|
||||
# Se a permissão não existir, cria e adiciona ao banco
|
||||
permission = Permission(name=perm['name'], description=perm['description'])
|
||||
db.session.add(permission)
|
||||
db.session.commit()
|
||||
print(f"Permissão '{perm['name']}' criada com sucesso.")
|
||||
else:
|
||||
permission = existing_permission
|
||||
|
||||
# Verifica se a permissão de papel de serviço já existe
|
||||
existing_permission_role = ServiceRolePermission.query.filter_by(
|
||||
service_role_id=service_role.id,
|
||||
service_instance_id=service_instance.id,
|
||||
permission_id=permission.id,
|
||||
user_id=user.id
|
||||
).first()
|
||||
|
||||
if not existing_permission_role:
|
||||
# Se a permissão de papel de serviço não existir, cria e adiciona ao banco
|
||||
service_role_permission = ServiceRolePermission(
|
||||
# Verifica se a permissão de papel de serviço já existe
|
||||
existing_permission_role = ServiceRolePermission.query.filter_by(
|
||||
service_role_id=service_role.id,
|
||||
service_instance_id=service_instance.id,
|
||||
permission_id=permission.id,
|
||||
permission_type=perm['type'], # Definindo o tipo de permissão (read, write, etc.)
|
||||
user_id=user.id
|
||||
)
|
||||
db.session.add(service_role_permission)
|
||||
db.session.commit()
|
||||
print(f"Permissão de papel de serviço '{perm['name']}' atribuída com sucesso para o role '{service_role.name}'.")
|
||||
else:
|
||||
print(f"Permissão de papel de serviço '{perm['name']}' já atribuída para o role '{service_role.name}'.")
|
||||
).first()
|
||||
|
||||
if not existing_permission_role:
|
||||
# Se a permissão de papel de serviço não existir, cria e adiciona ao banco
|
||||
service_role_permission = ServiceRolePermission(
|
||||
service_role_id=service_role.id,
|
||||
service_instance_id=service_instance.id,
|
||||
permission_id=permission.id,
|
||||
permission_type=perm['type'], # Definindo o tipo de permissão (read, write, etc.)
|
||||
user_id=user.id
|
||||
)
|
||||
db.session.add(service_role_permission)
|
||||
db.session.commit()
|
||||
print(f"Permissão de papel de serviço '{perm['name']}' atribuída com sucesso para o role '{service_role.name}'.")
|
||||
else:
|
||||
print(f"Permissão de papel de serviço '{perm['name']}' já atribuída para o role '{service_role.name}'.")
|
||||
|
||||
else:
|
||||
print("Usuário ou instância de serviço não encontrados.")
|
||||
|
||||
@ -3,6 +3,7 @@ from models.service_roles import ServiceRole
|
||||
|
||||
def seed_service_roles():
|
||||
roles = [
|
||||
#-------------------- Farmacia 1 ----------------------------------------
|
||||
# Colaboradores Internos Role: Gestão de câmeras
|
||||
{
|
||||
"service_id": 1,
|
||||
@ -58,6 +59,7 @@ def seed_service_roles():
|
||||
"name": "Admin",
|
||||
"description": "Coordenador de plataforma."
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
# Verificar se o role já existe antes de criar
|
||||
|
||||
@ -5,6 +5,7 @@ def seed_services():
|
||||
services = [
|
||||
#{"name": "Chamada Escolar Pro", "description": "Sistema de gestão para escolas"},
|
||||
{"name": "Controle de Acesso", "description": "Gestão de acessos virtuais"},
|
||||
{"name": "Controle de Camera", "description": "Gestão de Camera"}
|
||||
]
|
||||
|
||||
for service_data in services:
|
||||
|
||||
@ -7,7 +7,7 @@ def seed_user_service_roles():
|
||||
service_instance_id = 1 # Exemplo: instância de serviço para associar os papéis
|
||||
|
||||
# Criar até 10 service_role_ids para o usuário 1 na instância 1
|
||||
for service_role_id in range(1, 11): # Gerando service_role_id de 1 até 10
|
||||
for service_role_id in range(1, 9): # Gerando service_role_id de 1 até 10
|
||||
user_role = UserServiceRole(
|
||||
user_id=user_id,
|
||||
service_instance_id=service_instance_id,
|
||||
|
||||
@ -5,6 +5,7 @@ from sqlalchemy.exc import IntegrityError
|
||||
def seed_users():
|
||||
# Lista de usuários para criar
|
||||
users_data = [
|
||||
#---login farmacia 1-----
|
||||
{
|
||||
"username": "admin",
|
||||
"email": "admin@exemplo.com",
|
||||
@ -17,6 +18,33 @@ def seed_users():
|
||||
"phone": "987654321",
|
||||
"password": "senha456"
|
||||
},
|
||||
#-----login farmacia 2--------
|
||||
{
|
||||
"username": "fogo_admin",
|
||||
"email": "fogodechaoadmin@exemplo.com",
|
||||
"phone": "983749265",
|
||||
"password": "senha123"
|
||||
},
|
||||
{
|
||||
"username": "fogo_user_2",
|
||||
"email": "fogodechaouser2@exemplo.com",
|
||||
"phone": "983084637",
|
||||
"password": "senha456"
|
||||
},
|
||||
#----------login farmacia 3----------
|
||||
{
|
||||
"username": "sabin_admin",
|
||||
"email": "sabinadmin@exemplo.com",
|
||||
"phone": "983749265",
|
||||
"password": "senha123"
|
||||
},
|
||||
{
|
||||
"username": "sabin_user_2",
|
||||
"email": "sabinuser2@exemplo.com",
|
||||
"phone": "983086725",
|
||||
"password": "senha456"
|
||||
},
|
||||
|
||||
]
|
||||
|
||||
users_added = False # Flag para verificar se algum usuário foi adicionado
|
||||
|
||||
Loading…
Reference in New Issue
Block a user