sqlalchemy-oso
0.7.0
Breaking changes
This release contains breaking changes. Be sure to follow migration steps before upgrading.
Removed unused parameter from sqlalchemy_oso.roles.resource_role_class()
(
#925)
The first positional parameter to sqlalchemy_oso.roles.resource_role_class()
,
declarative_base
, was no longer used and is now removed. To migrate existing
code that uses sqlalchemy_oso.roles.resource_role_class()
, simply remove the
first parameter from the function invocation.
Option to enable baked queries for authorized sessions has been removed ( #879)
In
release 0.6.2, we disabled
baked
queries by default because of the risk of unintentionally bypassing
authorization, but we allowed users who understood the risks to override that
default by passing enable_baked_queries=True
to any of the authorized session
factories.
In this release, we’ve removed that escape hatch out of an abundance of caution.
Passing enable_baked_queries=True
to any of the authorized session factories
will no longer have any effect. If you have a good reason for wanting to enable
baked queries on authorized sessions, please reach out on
Slack. We would
love to hear about it!
New features
Support for SQLAlchemy 1.4 ( #879)
The sqlalchemy-oso
library now supports SQLAlchemy 1.4!
If you’re already using sqlalchemy-oso
with SQLAlchemy 1.3, upgrading to
SQLAlchemy 1.4 requires zero code changes (for sqlalchemy-oso
, that is — you
might have to update some SQLAlchemy code).
There’s a single (non-breaking) API change: sqlalchemy_oso.register_models()
now accepts either a
declarative base class (if you’re using SQLAlchemy 1.3
or 1.4) or a
registry (if you’re using 1.4).
If you run into any issues with SQLAlchemy 1.4, please don’t hesitate to reach out on Slack or open a new GitHub issue.
Happy SQLAlchemy-ing!
Other bugs & improvements
- Relaxed minimum SQLAlchemy 1.3 version to 1.3.17, when the
sqlalchemy.orm.relationship.sync_backref
flag was added. ( #879)
sqlalchemy-oso-preview
0.0.4
Breaking changes
This release contains breaking changes. Be sure to follow migration steps before upgrading.
Resource Model Primary Key Requirements ( #909)
All resource models used with roles must use the same type in the database for their primary id.
For example:
class Organization(Base):
__tablename__ = "organizations"
id = Column(String(), primary_key=True)
class Repository(Base):
__tablename__ = "repositories"
id = Column(String(), primary_key=True)
org_id = Column(String(), ForeignKey("organizations.id"), index=True)
org = relationship("Organization")
Both Organization and Repository have their primary key column as type String()
so this would work.
They could both be some other type such as Integer()
but you could not have one as String()
and the other as Integer()
.
Connect with us on Slack
If you have any questions, or just want to talk something through, jump into Slack. An Oso engineer or one of the thousands of developers in the growing community will be happy to help.