Fix some LGTM errors
This commit is contained in:
parent
6910916cd8
commit
e3c9105270
@ -52,6 +52,7 @@ disable=all
|
|||||||
|
|
||||||
enable=import-error,
|
enable=import-error,
|
||||||
import-self,
|
import-self,
|
||||||
|
cyclic-import,
|
||||||
reimported,
|
reimported,
|
||||||
misplaced-future,
|
misplaced-future,
|
||||||
relative-import,
|
relative-import,
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
from sqlalchemy.orm.exc import NoResultFound
|
from sqlalchemy.orm.exc import NoResultFound
|
||||||
|
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.models import PermissionSet, Permissions
|
from atst.models.permissions import Permissions
|
||||||
|
from atst.models.permission_set import PermissionSet
|
||||||
from .exceptions import NotFoundError
|
from .exceptions import NotFoundError
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,8 +1,4 @@
|
|||||||
from sqlalchemy.ext.declarative import declarative_base
|
from .base import Base
|
||||||
|
|
||||||
Base = declarative_base()
|
|
||||||
|
|
||||||
|
|
||||||
from .application import Application
|
from .application import Application
|
||||||
from .application_invitation import ApplicationInvitation
|
from .application_invitation import ApplicationInvitation
|
||||||
from .application_role import ApplicationRole, Status as ApplicationRoleStatus
|
from .application_role import ApplicationRole, Status as ApplicationRoleStatus
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from sqlalchemy import and_, Column, ForeignKey, String
|
from sqlalchemy import and_, Column, ForeignKey, String
|
||||||
from sqlalchemy.orm import relationship, synonym
|
from sqlalchemy.orm import relationship, synonym
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models.base import Base
|
||||||
from atst.models.application_role import ApplicationRole
|
from atst.models.application_role import ApplicationRole
|
||||||
from atst.models.environment import Environment
|
from atst.models.environment import Environment
|
||||||
from atst.models import mixins
|
from atst.models import mixins
|
||||||
|
@ -2,11 +2,13 @@ from sqlalchemy import Column, ForeignKey
|
|||||||
from sqlalchemy.dialects.postgresql import UUID
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
from sqlalchemy.orm import relationship, backref
|
from sqlalchemy.orm import relationship, backref
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models.base import Base
|
||||||
from atst.models.mixins import TimestampsMixin, AuditableMixin, InvitesMixin
|
import atst.models.mixins as mixins
|
||||||
|
|
||||||
|
|
||||||
class ApplicationInvitation(Base, TimestampsMixin, AuditableMixin, InvitesMixin):
|
class ApplicationInvitation(
|
||||||
|
Base, mixins.TimestampsMixin, mixins.AuditableMixin, mixins.InvitesMixin
|
||||||
|
):
|
||||||
__tablename__ = "application_invitations"
|
__tablename__ = "application_invitations"
|
||||||
|
|
||||||
application_role_id = Column(
|
application_role_id = Column(
|
||||||
|
@ -5,10 +5,11 @@ from sqlalchemy.orm import relationship
|
|||||||
from sqlalchemy.event import listen
|
from sqlalchemy.event import listen
|
||||||
|
|
||||||
from atst.utils import first_or_none
|
from atst.utils import first_or_none
|
||||||
from atst.models import Base, mixins
|
from atst.models.base import Base
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
import atst.models.types as types
|
||||||
from atst.models.environment_role import EnvironmentRole
|
from atst.models.environment_role import EnvironmentRole
|
||||||
from atst.models.mixins.auditable import record_permission_sets_updates
|
from atst.models.mixins.auditable import record_permission_sets_updates
|
||||||
from .types import Id
|
|
||||||
|
|
||||||
|
|
||||||
class Status(Enum):
|
class Status(Enum):
|
||||||
@ -36,7 +37,7 @@ class ApplicationRole(
|
|||||||
):
|
):
|
||||||
__tablename__ = "application_roles"
|
__tablename__ = "application_roles"
|
||||||
|
|
||||||
id = Id()
|
id = types.Id()
|
||||||
application_id = Column(
|
application_id = Column(
|
||||||
UUID(as_uuid=True), ForeignKey("applications.id"), index=True, nullable=False
|
UUID(as_uuid=True), ForeignKey("applications.id"), index=True, nullable=False
|
||||||
)
|
)
|
||||||
|
@ -2,7 +2,9 @@ from sqlalchemy import Column, String
|
|||||||
from sqlalchemy.dialects.postgresql import UUID
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
from sqlalchemy.orm.exc import NoResultFound
|
from sqlalchemy.orm.exc import NoResultFound
|
||||||
|
|
||||||
from atst.models import Base, types, mixins
|
from atst.models.base import Base
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
import atst.models.types as types
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.domain.exceptions import NotFoundError
|
from atst.domain.exceptions import NotFoundError
|
||||||
|
|
||||||
|
@ -2,7 +2,8 @@ from sqlalchemy import String, Column, ForeignKey, inspect
|
|||||||
from sqlalchemy.dialects.postgresql import UUID, JSONB
|
from sqlalchemy.dialects.postgresql import UUID, JSONB
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from atst.models import Base, types
|
from atst.models.base import Base
|
||||||
|
import atst.models.types as types
|
||||||
from atst.models.mixins.timestamps import TimestampsMixin
|
from atst.models.mixins.timestamps import TimestampsMixin
|
||||||
|
|
||||||
|
|
||||||
|
3
atst/models/base.py
Normal file
3
atst/models/base.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
|
||||||
|
Base = declarative_base()
|
@ -2,7 +2,9 @@ from enum import Enum
|
|||||||
from sqlalchemy import Column, Date, Enum as SQLAEnum, ForeignKey, Numeric, String
|
from sqlalchemy import Column, Date, Enum as SQLAEnum, ForeignKey, Numeric, String
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from atst.models import Base, mixins, types
|
from atst.models.base import Base
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
import atst.models.types as types
|
||||||
|
|
||||||
|
|
||||||
class JEDICLINType(Enum):
|
class JEDICLINType(Enum):
|
||||||
|
@ -3,9 +3,9 @@ from sqlalchemy.orm import relationship
|
|||||||
from sqlalchemy.dialects.postgresql import JSONB
|
from sqlalchemy.dialects.postgresql import JSONB
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models.base import Base
|
||||||
from atst.models.types import Id
|
import atst.models.mixins as mixins
|
||||||
from atst.models import mixins
|
import atst.models.types as types
|
||||||
|
|
||||||
|
|
||||||
class Environment(
|
class Environment(
|
||||||
@ -13,7 +13,7 @@ class Environment(
|
|||||||
):
|
):
|
||||||
__tablename__ = "environments"
|
__tablename__ = "environments"
|
||||||
|
|
||||||
id = Id()
|
id = types.Id()
|
||||||
name = Column(String, nullable=False)
|
name = Column(String, nullable=False)
|
||||||
|
|
||||||
application_id = Column(ForeignKey("applications.id"), nullable=False)
|
application_id = Column(ForeignKey("applications.id"), nullable=False)
|
||||||
|
@ -3,7 +3,9 @@ from sqlalchemy import Index, ForeignKey, Column, String, TIMESTAMP, Enum as SQL
|
|||||||
from sqlalchemy.dialects.postgresql import UUID
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from atst.models import Base, types, mixins
|
from atst.models.base import Base
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
import atst.models.types as types
|
||||||
|
|
||||||
|
|
||||||
class CSPRole(Enum):
|
class CSPRole(Enum):
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
from sqlalchemy import Column, ForeignKey
|
from sqlalchemy import Column, ForeignKey
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models.base import Base
|
||||||
from atst.models import mixins
|
import atst.models.mixins as mixins
|
||||||
|
|
||||||
|
|
||||||
class EnvironmentJobFailure(Base, mixins.JobFailureMixin):
|
class EnvironmentJobFailure(Base, mixins.JobFailureMixin):
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
from sqlalchemy import String, Column
|
from sqlalchemy import String, Column
|
||||||
|
|
||||||
from atst.models import Base, types, mixins
|
from atst.models.base import Base
|
||||||
|
import atst.models.types as types
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
|
||||||
|
|
||||||
class NotificationRecipient(Base, mixins.TimestampsMixin):
|
class NotificationRecipient(Base, mixins.TimestampsMixin):
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
from sqlalchemy import String, Column
|
from sqlalchemy import String, Column
|
||||||
from sqlalchemy.dialects.postgresql import ARRAY
|
from sqlalchemy.dialects.postgresql import ARRAY
|
||||||
|
|
||||||
from atst.models import Base, types, mixins
|
from atst.models.base import Base
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
import atst.models.types as types
|
||||||
|
|
||||||
|
|
||||||
class PermissionSet(Base, mixins.TimestampsMixin):
|
class PermissionSet(Base, mixins.TimestampsMixin):
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
from sqlalchemy import and_, Column, String
|
from sqlalchemy import Column, String
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.types import ARRAY
|
from sqlalchemy.types import ARRAY
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
|
||||||
from atst.models import Base, Application, mixins, types
|
from atst.models.base import Base
|
||||||
|
import atst.models.types as types
|
||||||
|
import atst.models.mixins as mixins
|
||||||
from atst.models.portfolio_role import PortfolioRole, Status as PortfolioRoleStatus
|
from atst.models.portfolio_role import PortfolioRole, Status as PortfolioRoleStatus
|
||||||
from atst.domain.permission_sets import PermissionSets
|
from atst.domain.permission_sets import PermissionSets
|
||||||
from atst.utils import first_or_none
|
from atst.utils import first_or_none
|
||||||
@ -31,7 +33,7 @@ class Portfolio(
|
|||||||
applications = relationship(
|
applications = relationship(
|
||||||
"Application",
|
"Application",
|
||||||
back_populates="portfolio",
|
back_populates="portfolio",
|
||||||
primaryjoin=and_(Application.portfolio_id == id, Application.deleted == False),
|
primaryjoin="and_(Application.portfolio_id == Portfolio.id, Application.deleted == False)",
|
||||||
)
|
)
|
||||||
roles = relationship("PortfolioRole")
|
roles = relationship("PortfolioRole")
|
||||||
|
|
||||||
|
@ -2,11 +2,13 @@ from sqlalchemy import Column, ForeignKey
|
|||||||
from sqlalchemy.dialects.postgresql import UUID
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
from sqlalchemy.orm import relationship, backref
|
from sqlalchemy.orm import relationship, backref
|
||||||
|
|
||||||
from atst.models import Base
|
from atst.models.base import Base
|
||||||
from atst.models.mixins import TimestampsMixin, AuditableMixin, InvitesMixin
|
import atst.models.mixins as mixins
|
||||||
|
|
||||||
|
|
||||||
class PortfolioInvitation(Base, TimestampsMixin, InvitesMixin, AuditableMixin):
|
class PortfolioInvitation(
|
||||||
|
Base, mixins.TimestampsMixin, mixins.InvitesMixin, mixins.AuditableMixin
|
||||||
|
):
|
||||||
__tablename__ = "portfolio_invitations"
|
__tablename__ = "portfolio_invitations"
|
||||||
|
|
||||||
portfolio_role_id = Column(
|
portfolio_role_id = Column(
|
||||||
|
@ -4,8 +4,9 @@ from sqlalchemy.dialects.postgresql import UUID
|
|||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.event import listen
|
from sqlalchemy.event import listen
|
||||||
|
|
||||||
from atst.models import Base, mixins
|
from atst.models.base import Base
|
||||||
from .types import Id
|
import atst.models.types as types
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
|
||||||
from atst.utils import first_or_none
|
from atst.utils import first_or_none
|
||||||
from atst.models.mixins.auditable import record_permission_sets_updates
|
from atst.models.mixins.auditable import record_permission_sets_updates
|
||||||
@ -41,7 +42,7 @@ class PortfolioRole(
|
|||||||
):
|
):
|
||||||
__tablename__ = "portfolio_roles"
|
__tablename__ = "portfolio_roles"
|
||||||
|
|
||||||
id = Id()
|
id = types.Id()
|
||||||
portfolio_id = Column(
|
portfolio_id = Column(
|
||||||
UUID(as_uuid=True), ForeignKey("portfolios.id"), index=True, nullable=False
|
UUID(as_uuid=True), ForeignKey("portfolios.id"), index=True, nullable=False
|
||||||
)
|
)
|
||||||
|
@ -5,7 +5,10 @@ from sqlalchemy import Column, DateTime, ForeignKey, String
|
|||||||
from sqlalchemy.ext.hybrid import hybrid_property
|
from sqlalchemy.ext.hybrid import hybrid_property
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
|
|
||||||
from atst.models import Attachment, Base, mixins, types
|
from atst.models.base import Base
|
||||||
|
import atst.models.types as types
|
||||||
|
import atst.models.mixins as mixins
|
||||||
|
from atst.models.attachment import Attachment
|
||||||
from atst.utils.clock import Clock
|
from atst.utils.clock import Clock
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
from sqlalchemy import and_, String, ForeignKey, Column, Date, Boolean, Table, TIMESTAMP
|
from sqlalchemy import String, ForeignKey, Column, Date, Boolean, Table, TIMESTAMP
|
||||||
from sqlalchemy.orm import relationship
|
from sqlalchemy.orm import relationship
|
||||||
from sqlalchemy.dialects.postgresql import UUID
|
from sqlalchemy.dialects.postgresql import UUID
|
||||||
from sqlalchemy.event import listen
|
from sqlalchemy.event import listen
|
||||||
|
|
||||||
from atst.models import Base, ApplicationRole, types, mixins
|
from atst.models.base import Base
|
||||||
|
import atst.models.types as types
|
||||||
|
import atst.models.mixins as mixins
|
||||||
from atst.models.portfolio_invitation import PortfolioInvitation
|
from atst.models.portfolio_invitation import PortfolioInvitation
|
||||||
from atst.models.application_invitation import ApplicationInvitation
|
from atst.models.application_invitation import ApplicationInvitation
|
||||||
from atst.models.mixins.auditable import (
|
from atst.models.mixins.auditable import (
|
||||||
@ -35,9 +37,7 @@ class User(
|
|||||||
application_roles = relationship(
|
application_roles = relationship(
|
||||||
"ApplicationRole",
|
"ApplicationRole",
|
||||||
backref="user",
|
backref="user",
|
||||||
primaryjoin=and_(
|
primaryjoin="and_(ApplicationRole.user_id == User.id, ApplicationRole.deleted == False)",
|
||||||
ApplicationRole.user_id == id, ApplicationRole.deleted == False
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
portfolio_invitations = relationship(
|
portfolio_invitations = relationship(
|
||||||
|
@ -1,18 +1,14 @@
|
|||||||
from flask import Blueprint, current_app as app, g, redirect, url_for
|
from flask import current_app as app, g, redirect, url_for
|
||||||
|
|
||||||
applications_bp = Blueprint("applications", __name__)
|
|
||||||
|
|
||||||
from . import index
|
from . import index
|
||||||
from . import new
|
from . import new
|
||||||
from . import settings
|
from . import settings
|
||||||
from . import invitations
|
from . import invitations
|
||||||
|
from .blueprint import applications_bp
|
||||||
from atst.domain.environment_roles import EnvironmentRoles
|
from atst.domain.environment_roles import EnvironmentRoles
|
||||||
from atst.domain.exceptions import UnauthorizedError
|
from atst.domain.exceptions import UnauthorizedError
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
from atst.models.permissions import Permissions
|
from atst.models.permissions import Permissions
|
||||||
from atst.utils.context_processors import portfolio as portfolio_context_processor
|
|
||||||
|
|
||||||
applications_bp.context_processor(portfolio_context_processor)
|
|
||||||
|
|
||||||
|
|
||||||
def wrap_environment_role_lookup(user, environment_id=None, **kwargs):
|
def wrap_environment_role_lookup(user, environment_id=None, **kwargs):
|
||||||
|
6
atst/routes/applications/blueprint.py
Normal file
6
atst/routes/applications/blueprint.py
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
from flask import Blueprint
|
||||||
|
|
||||||
|
from atst.utils.context_processors import portfolio as portfolio_context_processor
|
||||||
|
|
||||||
|
applications_bp = Blueprint("applications", __name__)
|
||||||
|
applications_bp.context_processor(portfolio_context_processor)
|
@ -1,6 +1,6 @@
|
|||||||
from flask import render_template
|
from flask import render_template
|
||||||
|
|
||||||
from . import applications_bp
|
from .blueprint import applications_bp
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
from atst.models.permissions import Permissions
|
from atst.models.permissions import Permissions
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from flask import redirect, url_for, g
|
from flask import redirect, url_for, g
|
||||||
|
|
||||||
from . import applications_bp
|
from .blueprint import applications_bp
|
||||||
from atst.domain.invitations import ApplicationInvitations
|
from atst.domain.invitations import ApplicationInvitations
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from flask import redirect, render_template, request as http_request, url_for, g
|
from flask import redirect, render_template, request as http_request, url_for, g
|
||||||
|
|
||||||
from . import applications_bp
|
from .blueprint import applications_bp
|
||||||
from atst.domain.applications import Applications
|
from atst.domain.applications import Applications
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
from atst.forms.application import NameAndDescriptionForm, EnvironmentsForm
|
from atst.forms.application import NameAndDescriptionForm, EnvironmentsForm
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from flask import redirect, render_template, request as http_request, url_for, g
|
from flask import redirect, render_template, request as http_request, url_for, g
|
||||||
|
|
||||||
from . import applications_bp
|
from .blueprint import applications_bp
|
||||||
from atst.domain.exceptions import AlreadyExistsError
|
from atst.domain.exceptions import AlreadyExistsError
|
||||||
from atst.domain.environments import Environments
|
from atst.domain.environments import Environments
|
||||||
from atst.domain.applications import Applications
|
from atst.domain.applications import Applications
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
from flask import Blueprint, request as http_request, g, render_template
|
from flask import request as http_request, g, render_template
|
||||||
from operator import attrgetter
|
from operator import attrgetter
|
||||||
|
|
||||||
portfolios_bp = Blueprint("portfolios", __name__)
|
|
||||||
|
|
||||||
from . import index
|
from . import index
|
||||||
from . import invitations
|
from . import invitations
|
||||||
from . import admin
|
from . import admin
|
||||||
from atst.utils.context_processors import portfolio as portfolio_context_processor
|
from .blueprint import portfolios_bp
|
||||||
|
|
||||||
|
|
||||||
portfolios_bp.context_processor(portfolio_context_processor)
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from flask import render_template, request as http_request, g, redirect, url_for
|
from flask import render_template, request as http_request, g, redirect, url_for
|
||||||
|
|
||||||
from . import portfolios_bp
|
from .blueprint import portfolios_bp
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
from atst.domain.portfolio_roles import PortfolioRoles
|
from atst.domain.portfolio_roles import PortfolioRoles
|
||||||
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
from atst.models.portfolio_role import Status as PortfolioRoleStatus
|
||||||
|
5
atst/routes/portfolios/blueprint.py
Normal file
5
atst/routes/portfolios/blueprint.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
from flask import Blueprint
|
||||||
|
from atst.utils.context_processors import portfolio as portfolio_context_processor
|
||||||
|
|
||||||
|
portfolios_bp = Blueprint("portfolios", __name__)
|
||||||
|
portfolios_bp.context_processor(portfolio_context_processor)
|
@ -2,7 +2,7 @@ from datetime import date, timedelta
|
|||||||
|
|
||||||
from flask import redirect, render_template, url_for, request as http_request, g
|
from flask import redirect, render_template, url_for, request as http_request, g
|
||||||
|
|
||||||
from . import portfolios_bp
|
from .blueprint import portfolios_bp
|
||||||
from atst.forms.portfolio import PortfolioCreationForm
|
from atst.forms.portfolio import PortfolioCreationForm
|
||||||
from atst.domain.reports import Reports
|
from atst.domain.reports import Reports
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from flask import g, redirect, url_for, render_template, request as http_request
|
from flask import g, redirect, url_for, render_template, request as http_request
|
||||||
|
|
||||||
from . import portfolios_bp
|
from .blueprint import portfolios_bp
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
from atst.domain.exceptions import AlreadyExistsError
|
from atst.domain.exceptions import AlreadyExistsError
|
||||||
from atst.domain.invitations import PortfolioInvitations
|
from atst.domain.invitations import PortfolioInvitations
|
||||||
|
@ -1,10 +1,4 @@
|
|||||||
from flask import Blueprint
|
|
||||||
|
|
||||||
task_orders_bp = Blueprint("task_orders", __name__)
|
|
||||||
|
|
||||||
from . import index
|
from . import index
|
||||||
from . import new
|
from . import new
|
||||||
from . import downloads
|
from . import downloads
|
||||||
from atst.utils.context_processors import portfolio as portfolio_context_processor
|
from .blueprint import task_orders_bp
|
||||||
|
|
||||||
task_orders_bp.context_processor(portfolio_context_processor)
|
|
||||||
|
5
atst/routes/task_orders/blueprint.py
Normal file
5
atst/routes/task_orders/blueprint.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
from flask import Blueprint
|
||||||
|
from atst.utils.context_processors import portfolio as portfolio_context_processor
|
||||||
|
|
||||||
|
task_orders_bp = Blueprint("task_orders", __name__)
|
||||||
|
task_orders_bp.context_processor(portfolio_context_processor)
|
@ -1,6 +1,6 @@
|
|||||||
from flask import Response, current_app as app
|
from flask import Response, current_app as app
|
||||||
|
|
||||||
from . import task_orders_bp
|
from .blueprint import task_orders_bp
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
from atst.domain.exceptions import NotFoundError
|
from atst.domain.exceptions import NotFoundError
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
from flask import g, render_template, url_for, redirect
|
from flask import g, render_template, url_for, redirect
|
||||||
|
|
||||||
from . import task_orders_bp
|
from .blueprint import task_orders_bp
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
from atst.domain.portfolios import Portfolios
|
from atst.domain.portfolios import Portfolios
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
|
@ -8,7 +8,7 @@ from flask import (
|
|||||||
jsonify,
|
jsonify,
|
||||||
)
|
)
|
||||||
|
|
||||||
from . import task_orders_bp
|
from .blueprint import task_orders_bp
|
||||||
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
from atst.domain.authz.decorator import user_can_access_decorator as user_can
|
||||||
from atst.domain.exceptions import NoAccessError
|
from atst.domain.exceptions import NoAccessError
|
||||||
from atst.domain.task_orders import TaskOrders
|
from atst.domain.task_orders import TaskOrders
|
||||||
|
@ -2,7 +2,7 @@ from sqlalchemy import select
|
|||||||
|
|
||||||
from atst.jobs import send_notification_mail
|
from atst.jobs import send_notification_mail
|
||||||
from atst.database import db
|
from atst.database import db
|
||||||
from atst.models import NotificationRecipient
|
from atst.models.notification_recipient import NotificationRecipient
|
||||||
|
|
||||||
|
|
||||||
class NotificationSender(object):
|
class NotificationSender(object):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user