BaseApp Reports
Project description
BaseApp Reports
Reusable app to enable User's reports any model, customizable for project's needs.
How to install:
Add dependencies to your requirements/base.txt
file:
baseapp-core @ git+https://github.com/silverlogic/baseapp-backend.git@v0.1#subdirectory=baseapp-core
baseapp-reports @ git+https://github.com/silverlogic/baseapp-backend.git@v0.1#subdirectory=baseapp-reports
And run provision or manually pip install -r requirements/base.ext
If you want to develop, install using this other guide.
How to use
Add baseapp_reports
to your project's INSTALLED_APPS
Now make sure all models you'd like to get reports also inherits ReactableModel
, like:
from baseapp_reports.models import ReactableModel
class Comment(models.Model, ReactableModel):
body = models.Textfield()
Also make sure your GraphQL object types extends ReportsInterface
interface:
from baseapp_reports.graphql.object_types import ReportsInterface
class UserNode(DjangoObjectType):
class Meta:
interfaces = (relay.Node, ReportsInterface)
Expose ReportsMutations
and ReportsQuery
in your GraphQL/graphene endpoint, like:
from baseapp_reports.graphql.mutations import ReportsMutations
from baseapp_reports.graphql.queries import ReportsQuery
class Query(graphene.ObjectType, ReportsQuery):
pass
class Mutation(graphene.ObjectType, ReportsMutations):
pass
schema = graphene.Schema(query=Query, mutation=Mutation)
This will expose reportCreate
mutation and add fields and connections to all your GraphqlQL Object Types using interface ReportsInterface
.
Example:
{
...
}
How to to customize the Report model
Your models.py
will look something like this:
from django.db import models
from django.utils.translation import gettext_lazy as _
from baseapp_reports.models import AbstractBaseReport
class Report(AbstractBaseReport):
custom_field = models.CharField(null=True)
class ReportTypes(models.IntegerChoices):
LIKE = 1, _("like")
DISLIKE = -1, _("dislike")
@property
def description(self):
return self.label
Now make your to add your new app to your INSTALLED_APPS
and run makemigrations
and migrate
like any normal django app.
Now in your settings/base.py
make sure to tell baseapp-reports what is your custom model for Report:
BASEAPP_REPORTS_REPORT_MODEL = 'reports.Report'
Writing test cases in your project
There is a AbstractReportFactory
which helps you write other factories:
import factory
from baseapp_reports.tests.factories import AbstractReportFactory
class CommentFactory(factory.django.DjangoModelFactory):
class Meta:
model = "comments.Comment"
class CommentReportFactory(AbstractReportFactory):
target = factory.SubFactory(CommentFactory)
class Meta:
model = "baseapp_reports.Report"
# OR if you have a custom model, point to it:
model = "reports.Report"
In the above example we have a easy way to make reports to any comment into the database for testing proporses using CommentReportFactory
.
How to develop
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-reports
The -e
flag will make it like any change you make in the cloned repo files will effect into the project.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file baseapp-reports-0.0.3.tar.gz
.
File metadata
- Download URL: baseapp-reports-0.0.3.tar.gz
- Upload date:
- Size: 11.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1c1acaa863e4fe2ab9da1b5a75ba6b462fdfc75742dbef330bceb530cc0cc00f |
|
MD5 | 7303e1a5ee6ef11fb40323eb89d2285a |
|
BLAKE2b-256 | 56e4445410e0f5b41c900ca390951db6ddaf1d524d6eaf8a26a3d3d4f478ce44 |