def prefetch_newest_undecided_email(path=None, queryset=None): u""" Use to prefetch ``Inforequest.newest_undecided_email``. Redundant if ``prefetch_undecided_emails()`` is already used. """ if queryset is None: queryset = InforequestEmail.objects.get_queryset() quote_name = connection.ops.quote_name queryset = queryset.filter(type=InforequestEmail.TYPES.UNDECIDED) queryset = queryset.select_related(u'email') queryset = queryset.extra(where=[ u'{through}.{through_pk} = (' u'SELECT p.{through_pk} ' u'FROM {through} p ' u'INNER JOIN {message} m ON (m.{message_pk} = p.{through_email}) ' u'WHERE p.{through_inforequest} = {through}.{through_inforequest} ' u'ORDER BY m.{message_processed} DESC, m.{message_pk} DESC, p.{through_pk} DESC ' u'LIMIT 1' u')'.format( through=quote_name(InforequestEmail._meta.db_table), through_pk=quote_name(InforequestEmail._meta.pk.column), through_inforequest=quote_name( InforequestEmail._meta.get_field(u'inforequest').column), through_email=quote_name( InforequestEmail._meta.get_field(u'email').column), message=quote_name(Message._meta.db_table), message_pk=quote_name(Message._meta.pk.column), message_processed=quote_name( Message._meta.get_field(u'processed').column), ) ]) return Prefetch(join_lookup(path, u'inforequestemail_set'), queryset, to_attr=u'_newest_undecided_email')
def prefetch_last_action(path=None, queryset=None): u""" Use to prefetch ``Branch.last_action``. Redundant if ``prefetch_actions()`` is already used. """ if queryset is None: queryset = Action.objects.get_queryset() quote_name = connection.ops.quote_name queryset = queryset.extra(where=[ u'{action}.{pk} = (' u'SELECT p.{pk} ' u'FROM {action} p ' u'WHERE p.{branch} = {action}.{branch} ' u'ORDER BY p.{created} DESC, p.{pk} DESC ' u'LIMIT 1' u')'.format( action=quote_name(Action._meta.db_table), pk=quote_name(Action._meta.pk.column), branch=quote_name(Action._meta.get_field(u'branch').column), created=quote_name(Action._meta.get_field(u'created').column), ) ]) return Prefetch(join_lookup(path, u'action_set'), queryset, to_attr=u'_last_action')
def prefetch_newest_undecided_email(path=None, queryset=None): u""" Use to prefetch ``Inforequest.newest_undecided_email``. Redundant if ``prefetch_undecided_emails()`` is already used. """ if queryset is None: queryset = InforequestEmail.objects.get_queryset() quote_name = connection.ops.quote_name queryset = queryset.filter(type=InforequestEmail.TYPES.UNDECIDED) queryset = queryset.select_related(u'email') queryset = queryset.extra(where=[ u'{through}.{through_pk} = (' u'SELECT p.{through_pk} ' u'FROM {through} p ' u'INNER JOIN {message} m ON (m.{message_pk} = p.{through_email}) ' u'WHERE p.{through_inforequest} = {through}.{through_inforequest} ' u'AND p.{through_type} = %s ' u'ORDER BY m.{message_processed} DESC, m.{message_pk} DESC, p.{through_pk} DESC ' u'LIMIT 1' u')'.format( through = quote_name(InforequestEmail._meta.db_table), through_pk = quote_name(InforequestEmail._meta.pk.column), through_inforequest = quote_name( InforequestEmail._meta.get_field(u'inforequest').column), through_email = quote_name(InforequestEmail._meta.get_field(u'email').column), through_type = quote_name(InforequestEmail._meta.get_field(u'type').column), message = quote_name(Message._meta.db_table), message_pk = quote_name(Message._meta.pk.column), message_processed = quote_name(Message._meta.get_field(u'processed').column), ) ], params=[ InforequestEmail.TYPES.UNDECIDED, ]) return Prefetch(join_lookup(path, u'inforequestemail_set'), queryset, to_attr=u'_newest_undecided_email')
def prefetch_attachments(path=None, queryset=None): u""" Use to prefetch ``Action.attachments``. """ if queryset is None: queryset = Attachment.objects.get_queryset() queryset = queryset.order_by_pk() return Prefetch(join_lookup(path, u"attachment_set"), queryset, to_attr=u"attachments")
def prefetch_attachments(path=None, queryset=None): u""" Use to prefetch ``InforequestDraft.attachments`` """ if queryset is None: queryset = Attachment.objects.get_queryset() queryset = queryset.order_by_pk() return Prefetch(join_lookup(path, u'attachment_set'), queryset, to_attr=u'attachments')
def prefetch_recipients(path=None, queryset=None): u""" Use to prefetch ``Message.recipients``. """ if queryset is None: queryset = Recipient.objects.get_queryset() queryset = queryset.order_by_pk() return Prefetch(join_lookup(path, u'recipient_set'), queryset, to_attr=u'recipients')
def prefetch_branches(path=None, queryset=None): u""" Use to prefetch ``Inforequest.branches`` """ if queryset is None: queryset = Branch.objects.get_queryset() queryset = queryset.order_by_pk() return Prefetch(join_lookup(path, u'branch_set'), queryset, to_attr=u'branches')
def prefetch_obligees(path=None, queryset=None): u""" Use to prefetch ``ActionDraft.obligees``. """ if queryset is None: queryset = Obligee.objects.get_queryset() queryset = queryset.order_by_name() return Prefetch(join_lookup(path, u'obligee_set'), queryset, to_attr=u'obligees')
def prefetch_actions(path=None, queryset=None): u""" Use to prefetch ``Branch.actions``. """ if queryset is None: queryset = Action.objects.get_queryset() queryset = queryset.order_by_effective_date() return Prefetch(join_lookup(path, u'action_set'), queryset, to_attr=u'actions')
def prefetch_main_branch(path=None, queryset=None): u""" Use to prefetch ``Inforequest.main_branch``. Redundant if ``prefetch_branches()`` is already used, """ if queryset is None: queryset = Branch.objects.get_queryset() queryset = queryset.main() return Prefetch(join_lookup(path, u'branch_set'), queryset, to_attr=u'_main_branch')
def prefetch_actions_by_email(path=None, queryset=None): u""" Use to prefetch ``Branch.actions_by_email``. """ if queryset is None: queryset = Action.objects.get_queryset() queryset = queryset.by_email() queryset = queryset.order_by_created() return Prefetch(join_lookup(path, u'action_set'), queryset, to_attr=u'actions_by_email')
def prefetch_actions(path=None, queryset=None): u""" Use to prefetch ``Branch.actions``. """ if queryset is None: queryset = Action.objects.get_queryset() queryset = queryset.order_by_created() return Prefetch(join_lookup(path, u'action_set'), queryset, to_attr=u'actions')
def prefetch_undecided_emails(path=None, queryset=None): u""" Use to prefetch ``Inforequest.undecided_emails``. """ if queryset is None: queryset = InforequestEmail.objects.get_queryset() queryset = queryset.filter(type=InforequestEmail.TYPES.UNDECIDED) queryset = queryset.order_by_email() queryset = queryset.select_related(u'email') return Prefetch(join_lookup(path, u'inforequestemail_set'), queryset, to_attr=u'_undecided_emails')
def prefetch_actions_by_email(path=None, queryset=None): u""" Use to prefetch ``Branch.actions_by_email``. """ if queryset is None: queryset = Action.objects.get_queryset() queryset = queryset.by_email() queryset = queryset.order_by_effective_date() return Prefetch(join_lookup(path, u'action_set'), queryset, to_attr=u'actions_by_email')
def test(self): self.assertEqual(join_lookup(), u'') self.assertEqual(join_lookup(u'foo'), u'foo') self.assertEqual(join_lookup(u'foo', u'bar', u'bar'), u'foo__bar__bar') self.assertEqual(join_lookup(None, u'', None), u'') self.assertEqual(join_lookup(None, u'foo', None), u'foo') self.assertEqual(join_lookup(u'foo', None, u'bar', u'', u'bar'), u'foo__bar__bar')
def prefetch_last_action(path=None, queryset=None): u""" Use to prefetch ``Branch.last_action``. Redundant if ``prefetch_actions()`` is already used. """ if queryset is None: queryset = Action.objects.get_queryset() quote_name = connection.ops.quote_name queryset = queryset.extra(where=[ u'{action}.{pk} = (' u'SELECT p.{pk} ' u'FROM {action} p ' u'WHERE p.{branch} = {action}.{branch} ' u'ORDER BY p.{effective_date} DESC, p.{pk} DESC ' u'LIMIT 1' u')'.format( action = quote_name(Action._meta.db_table), pk = quote_name(Action._meta.pk.column), branch = quote_name(Action._meta.get_field(u'branch').column), effective_date = quote_name(Action._meta.get_field(u'effective_date').column), ) ]) return Prefetch(join_lookup(path, u'action_set'), queryset, to_attr=u'_last_action')