Reusable app to enable any model block/unblock any model.
And install the package with pip install baseapp-backend.
If you want to develop, install using this other guide.
Add baseapp_blocks to your project's INSTALLED_APPS
Add baseapp_blocks.permissions.BlocksPermissionsBackend to the AUTHENTICATION_BACKENDS list in your django settings file.
Now make sure all models you'd like to get blocks also inherits BlockableModel, like:
from baseapp_blocks.models import BlockableModel
class User(models.Model, BlockableModel):Also make sure your GraphQL object types extends BlocksInterface interface:
from baseapp_blocks.graphql.object_types import BlocksInterface
class UserNode(DjangoObjectType):
class Meta:
interfaces = (relay.Node, BlocksInterface)Expose BlocksMutations in your GraphQL/graphene endpoint, like:
from baseapp_blocks.graphql.mutations import BlocksMutations
class Mutation(graphene.ObjectType, BlocksMutations):
pass
schema = graphene.Schema(query=Query, mutation=Mutation)This will expose blockToggle mutation and add fields and connections to all your GraphqlQL Object Types using interface BlocksInterface.
Example:
mutation BlockButtonMutation($input: BlockToggleInput!) {
blockToggle(input: $input) {
block {
node {
id
}
}
target {
id
blockersCount
isBlockedByMe
}
actor {
id
blockingCount
}
}
}Clone the project inside your project's backend dir:
git clone git@github.com:silverlogic/baseapp-backend.git
And manually install the package:
pip install -e baseapp-backend/baseapp-blocks
The -e flag will make it like any change you make in the cloned repo files will effect into the project.