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.

Filename, size & hash SHA256 hash help File type Python version Upload date
django_easy_scoping-1.13-py3-none-any.whl (3.2 kB) Copy SHA256 hash SHA256 Wheel py3
django-easy-scoping-1.13.tar.gz (2.8 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page