Beispiel #1
0
 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')
Beispiel #2
0
 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')
Beispiel #4
0
 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')
Beispiel #6
0
 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')
Beispiel #8
0
 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_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')
Beispiel #10
0
 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')
Beispiel #11
0
 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')
Beispiel #13
0
 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')
Beispiel #14
0
 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')
Beispiel #15
0
 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')
Beispiel #16
0
 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_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')
Beispiel #18
0
 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')
Beispiel #19
0
 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 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')
Beispiel #21
0
 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')