Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…low-ai into security-fix-v.7.0.0-alpha
  • Loading branch information
abilpraju-aot committed Oct 16, 2024
2 parents 9918932 + 87033ce commit bd7081d
Show file tree
Hide file tree
Showing 41 changed files with 3,284 additions and 5,047 deletions.
8 changes: 4 additions & 4 deletions .github/workflows/forms-flow-api-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,12 @@ jobs:

strategy:
matrix:
python-version: [3.12.6]
python-version: [3.12.7]

steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down Expand Up @@ -87,7 +87,7 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.12.6]
python-version: [3.12.7]

services:
postgres:
Expand All @@ -104,7 +104,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Docker Compose
Expand Down
25 changes: 13 additions & 12 deletions .github/workflows/forms-flow-bpm-cd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -74,34 +74,35 @@ jobs:
key: ${{ runner.os }}-buildx-${{ matrix.name }}-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-${{ matrix.name }}
- name: Build and push Docker image - amd64
- name: Build and push Docker image
if: ${{ github.ref != 'refs/heads/master' }}
uses: docker/build-push-action@v4
with:
context: forms-flow-bpm
push: true
file: forms-flow-bpm/Dockerfile
platforms: linux/amd64
platforms: linux/amd64,linux/arm64/v8
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Build and push Docker image - amd64
- name: Build and push Docker image
if: ${{ github.ref == 'refs/heads/master' }}
uses: docker/build-push-action@v2
with:
context: forms-flow-bpm
push: true
platforms: linux/amd64,linux/arm64/v8
file: forms-flow-bpm/Dockerfile
tags: ${{ steps.meta.outputs.tags }}, formsflow/forms-flow-bpm:latest
labels: ${{ steps.meta.outputs.labels }}
- name: Build and push Docker image - arm64
uses: docker/build-push-action@v4
with:
context: forms-flow-bpm
file: forms-flow-bpm/Dockerfile-ARM64
push: true
platforms: linux/arm64/v8
tags: ${{ steps.meta.outputs.tags }}-arm64
labels: ${{ steps.meta.outputs.labels }}
# - name: Build and push Docker image - arm64
# uses: docker/build-push-action@v4
# with:
# context: forms-flow-bpm
# file: forms-flow-bpm/Dockerfile-ARM64
# push: true
# platforms: linux/arm64/v8
# tags: ${{ steps.meta.outputs.tags }}-arm64
# labels: ${{ steps.meta.outputs.labels }}
- name: Scan Docker image 🐳
uses: snyk/actions/docker@master
continue-on-error: true
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/forms-flow-documents-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ jobs:

strategy:
matrix:
python-version: [3.12.6]
python-version: [3.12.7]

steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
Expand Down Expand Up @@ -79,7 +79,7 @@ jobs:
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.12.6]
python-version: [3.12.7]

services:
postgres:
Expand All @@ -96,7 +96,7 @@ jobs:
steps:
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install Docker Compose
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
get_role_ids_from_user_groups,
translate,
validate_sort_order_and_order_by,
add_sort_filter,
)
from .caching import Cache
from .sentry import init_sentry
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,4 @@ class ProcessSortingParameters: # pylint: disable=too-few-public-methods
Name = "name"
Created = "created"
Modified= "modified"
ProcessKey = "processKey"
17 changes: 17 additions & 0 deletions forms-flow-api-utils/src/formsflow_api_utils/utils/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
CREATE_SUBMISSIONS,
VIEW_SUBMISSIONS,
)
from sqlalchemy.sql.expression import text

def cors_preflight(methods: str = "GET"):
"""Render an option method on the class."""
Expand Down Expand Up @@ -70,6 +71,7 @@ def validate_sort_order_and_order_by(order_by: str, sort_order: str) -> bool:
ProcessSortingParameters.Name,
ProcessSortingParameters.Created,
ProcessSortingParameters.Modified,
ProcessSortingParameters.ProcessKey,
]:
order_by = None
else:
Expand Down Expand Up @@ -135,3 +137,18 @@ def get_form_and_submission_id_from_form_url(form_url: str) -> Tuple:
form_id = form_url[form_url.find("/form/") + 6 : form_url.find("/submission/")]
submission_id = form_url[form_url.find("/submission/") + 12 : len(form_url)]
return (form_id, submission_id)


def add_sort_filter(query, sort_by, sort_order, model_name):
"""Adding sortBy and sortOrder."""
order = []
if sort_by and sort_order:
for sort_by_att, sort_order_attr in zip(sort_by, sort_order):
name, value = validate_sort_order_and_order_by(
sort_order=sort_order_attr, order_by=sort_by_att
)
if name and value:
order.append(text(f"{model_name}.{name} {value}"))

query = query.order_by(*order)
return query
34 changes: 34 additions & 0 deletions forms-flow-api/migrations/versions/8feb43e1e408_subflow_table.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
"""subflow table
Revision ID: 8feb43e1e408
Revises: 069086882f6c
Create Date: 2024-10-08 13:22:27.369462
"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = '8feb43e1e408'
down_revision = '069086882f6c'
branch_labels = None
depends_on = None


def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('process', sa.Column('status_changed', sa.Boolean(), nullable=True))
op.drop_index('ix_process_process_type', table_name='process')
op.drop_constraint('process_form_process_mapper_id_fkey', 'process', type_='foreignkey')
op.drop_column('process', 'form_process_mapper_id')
# ### end Alembic commands ###


def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.add_column('process', sa.Column('form_process_mapper_id', sa.INTEGER(), autoincrement=False, nullable=True))
op.create_foreign_key('process_form_process_mapper_id_fkey', 'process', 'form_process_mapper', ['form_process_mapper_id'], ['id'])
op.create_index('ix_process_process_type', 'process', ['process_type'], unique=False)
op.drop_column('process', 'status_changed')
# ### end Alembic commands ###
2 changes: 1 addition & 1 deletion forms-flow-api/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ exceptiongroup==1.2.2
flask-jwt-oidc==0.7.0
flask-marshmallow==1.2.1
flask-restx==1.3.0
formsflow_api_utils @ git+https://github.com/AOT-Technologies/forms-flow-ai.git@develop#subdirectory=forms-flow-api-utils
formsflow_api_utils @ git+https://github.com/AOT-Technologies/forms-flow-ai.git@develop#subdirectory=forms-flow-api-utils
gunicorn==23.0.0
h11==0.14.0
h2==4.1.0
Expand Down
8 changes: 8 additions & 0 deletions forms-flow-api/src/formsflow_api/constants/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,10 @@ class BusinessErrorCode(ErrorCodeMixin, Enum):
HTTPStatus.BAD_REQUEST,
)
PROCESS_DEF_NOT_FOUND = "Process definition does not exist", HTTPStatus.BAD_REQUEST
PROCESS_NOT_LATEST_VERSION = (
"Passed process id is not latest version",
HTTPStatus.BAD_REQUEST,
)
DECISION_DEF_NOT_FOUND = (
"Decision definition does not exist",
HTTPStatus.BAD_REQUEST,
Expand Down Expand Up @@ -59,6 +63,10 @@ class BusinessErrorCode(ErrorCodeMixin, Enum):
FILTER_NOT_FOUND = "The specified filter does not exist", HTTPStatus.BAD_REQUEST
PROCESS_START_ERROR = "Cannot start process instance", HTTPStatus.BAD_REQUEST
USER_NOT_FOUND = "User not found", HTTPStatus.BAD_REQUEST
INVALID_PROCESS_DATA = (
"Invalid process data passed; both data and process type are required",
HTTPStatus.BAD_REQUEST,
)
PROCESS_ID_NOT_FOUND = (
"The specified process ID does not exist",
HTTPStatus.BAD_REQUEST,
Expand Down
32 changes: 13 additions & 19 deletions forms-flow-api/src/formsflow_api/models/form_process_mapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,12 @@
DEFAULT_PROCESS_KEY,
DEFAULT_PROCESS_NAME,
FILTER_MAPS,
validate_sort_order_and_order_by,
add_sort_filter,
)
from formsflow_api_utils.utils.enums import FormProcessMapperStatus
from formsflow_api_utils.utils.user_context import UserContext, user_context
from sqlalchemy import UniqueConstraint, and_, desc, func, or_
from sqlalchemy.dialects.postgresql import JSON
from sqlalchemy.sql.expression import text

from .audit_mixin import AuditDateTimeMixin, AuditUserMixin
from .base_model import BaseModel
Expand Down Expand Up @@ -184,21 +183,6 @@ def get_latest_form_mapper_ids(cls):
.all()
)

@classmethod
def add_sort_filter(cls, query, sort_by, sort_order):
"""Adding sortBy and sortOrder."""
order = []
if sort_by and sort_order:
for sort_by_att, sort_order_attr in zip(sort_by, sort_order):
name, value = validate_sort_order_and_order_by(
sort_order=sort_order_attr, order_by=sort_by_att
)
if name and value:
order.append(text(f"form_process_mapper.{name} {value}"))

query = query.order_by(*order)
return query

@classmethod
def add_search_filter(cls, query, search):
"""Adding search filter in query."""
Expand Down Expand Up @@ -241,7 +225,12 @@ def find_all_forms(

query = cls.add_search_filter(query=query, search=search)

query = cls.add_sort_filter(query=query, sort_by=sort_by, sort_order=sort_order)
query = add_sort_filter(
query=query,
sort_by=sort_by,
sort_order=sort_order,
model_name="form_process_mapper",
)

# form type is list of type to filter the form
if form_type:
Expand Down Expand Up @@ -293,7 +282,12 @@ def find_all_active_by_formid(
)
query = cls.add_search_filter(query=query, search=search)
query = cls.access_filter(query=query)
query = cls.add_sort_filter(sort_by=sort_by, sort_order=sort_order, query=query)
query = add_sort_filter(
sort_by=sort_by,
sort_order=sort_order,
query=query,
model_name="form_process_mapper",
)

total_count = query.count()
query = query.with_entities(
Expand Down
Loading

0 comments on commit bd7081d

Please sign in to comment.