Exemplo n.º 1
0
from djqmixin import Manager, QMixin
from django.db.models import Q

# Mixins to manage a AND'ed filter on tag_list
class MarkQMixin(QMixin):
    def exact_in(self, tags):
        queryset = self.all()
        for tag in tags:
            queryset = queryset.filter(tag__name__exact=tag)
        return queryset

MarkManager = Manager.include(MarkQMixin)
Exemplo n.º 2
0
class Person(models.Model):

    group = models.ForeignKey(Group, related_name='people')
    age = models.PositiveIntegerField()

    objects = Manager.include(AgeMixin)()
Exemplo n.º 3
0
class CredentialsMixin(QMixin):
    def authenticate(self, uuid, clear_password, place=u'', purpose=u''):
        try:
            ticket = self.get(uuid=uuid, place=place, purpose=purpose)
        except self.model.DoesNotExist:
            raise exceptions.CredentialsError(
                'No ticket with UUID "{uuid}" for place "{place}" and purpose '
                '"{purpose}"'.format(uuid=uuid, place=place, purpose=purpose))
        # Check password.
        if not ticket.authenticate(clear_password):
            raise exceptions.CredentialsError(
                'Wrong password for UUID {uuid}'.format(uuid=ticket.uuid))
        # Check usage.
        if ticket.used:
            raise exceptions.TicketUsedError(
                'Ticket with UUID {uuid} was used at {date}'.format(
                    uuid=ticket.uuid,
                    date=ticket.usage_datetime))
        # Check expiry.
        if ticket.expired:
            raise exceptions.TicketExpiredError(
                'Ticket with UUID {uuid} expired at {date}'.format(
                    uuid=ticket.uuid,
                    date=ticket.expiry_datetime))
        # Alright, return ticket.
        return ticket


#: Manager for :py:class:`django_ticketoffice.models.Ticket`.
TicketManager = Manager.include(CredentialsMixin)
Exemplo n.º 4
0
from djqmixin import Manager, QMixin


class BalanceMixin(QMixin):
    def unbalanced(self):
        return self.exclude(total_balance=0)

    def balanced(self):
        return self.filter(total_balance=0)


TransactionManager = Manager.include(BalanceMixin)()