Skip to main content

A mixin to allow users to create scopes on Django models.

Project description

Django Easy Scoping allows you to register scopes and aggregate functions on your Django models.

Installation

To get the ScopingMixin.py file you can download it or use pip.

Downloading File

Download the ScopingMixin file from github. ScopingMixin.py

Import ScopingMixin and ScopingQuerySet from ScopingMixin.py.

from <path to file>.ScopingMixin import ScopingMixin, ScopingQuerySet

Using pip

$ pip install django-easy-scoping

Import ScopingMixin and ScopingQuerySet from ScopingMixin.py.

from DjangoEasyScoping.ScopingMixin import ScopingMixin, ScopingQuerySet

Implementing

Mix ScopingMixin in with the Django model(s) you'd like to create scopes for.

class Purchase(ScopingMixin, models.Model):

Override the Queryset for that model using ScopingQuerySet.

    objects = ScopingQuerySet.as_manager()

Done!

Implementing with existing Managers/Querysets

If you'd like to continue using your own custom manager/queryset then you can! You only need to take action if you'd like to name the ScopingQuerySet override something other than objects, for instance:

other_name = ScopingQuerySet.as_manager()

Then simply open ScopingMixin.py in your sites-packages and edit the following methods.

class ScopingMixin(object):

    @classmethod
    def get_scope(cls, name)
        if hasattr(cls, '__scopes__') and name in cls.scopes():
            return getattr(cls.objects.all(), name)

    @classmethod
    def get_aggregate(cls, name)
        if hasattr(cls, '__aggregate__') and name in cls.aggregates():
            return getattr(cls.objects.all(), name)

becomes

class ScopingMixin(object):

    @classmethod
    def get_scope(cls, name)
        if hasattr(cls, '__scopes__') and name in cls.scopes():
            return getattr(cls.other_name.all(), name)

    @classmethod
    def get_aggregate(cls, name)
        if hasattr(cls, '__aggregate__') and name in cls.aggregates():
            return getattr(cls.other_name.all(), name)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-easy-scoping-1.13.tar.gz (2.8 kB view hashes)

Uploaded Source

Built Distribution

django_easy_scoping-1.13-py3-none-any.whl (3.2 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page