示例#1
0
 def on_post(self, request, response):
     try:
         validator = Validator(send=as_boolean,
                               bump=as_boolean,
                               periodic=as_boolean,
                               _optional=('send', 'bump', 'periodic'))
         values = validator(request)
     except ValueError as error:
         bad_request(response, str(error))
         return
     if values.get('send', False) and values.get('periodic', False):
         # Send and periodic and mutually exclusive options.
         bad_request(response,
                     'send and periodic options are mutually exclusive')
         return
     if len(values) == 0:
         # There's nothing to do, but that's okay.
         okay(response)
         return
     if values.get('bump', False):
         bump_digest_number_and_volume(self._mlist)
     if values.get('send', False):
         maybe_send_digest_now(self._mlist, force=True)
     if values.get('periodic', False) and self._mlist.digest_send_periodic:
         maybe_send_digest_now(self._mlist, force=True)
     accepted(response)
示例#2
0
 def test_bump_quarterly_not_yet(self):
     self._mlist.digest_last_sent_at = self.right_now + timedelta(days=-88)
     self._mlist.digest_volume_frequency = DigestFrequency.quarterly
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 7)
     self.assertEqual(self._mlist.next_digest_number, 5)
     self.assertEqual(self._mlist.digest_last_sent_at, self.right_now)
示例#3
0
 def test_bump_monthly(self):
     self._mlist.digest_last_sent_at = self.right_now + timedelta(days=-32)
     self._mlist.digest_volume_frequency = DigestFrequency.monthly
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 8)
     self.assertEqual(self._mlist.next_digest_number, 1)
     self.assertEqual(self._mlist.digest_last_sent_at, self.right_now)
示例#4
0
 def test_bump_quarterly(self):
     self._mlist.digest_last_sent_at = self.right_now + timedelta(
         days=-93)
     self._mlist.digest_volume_frequency = DigestFrequency.quarterly
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 8)
     self.assertEqual(self._mlist.next_digest_number, 1)
     self.assertEqual(self._mlist.digest_last_sent_at, self.right_now)
示例#5
0
 def test_bump_yearly_not_yet(self):
     self._mlist.digest_last_sent_at = self.right_now + timedelta(
         days=-200)
     self._mlist.digest_volume_frequency = DigestFrequency.yearly
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 7)
     self.assertEqual(self._mlist.next_digest_number, 5)
     self.assertEqual(self._mlist.digest_last_sent_at, self.right_now)
示例#6
0
 def test_bump_monthly_not_yet(self):
     # The normal test date starts on the first day of the month, so let's
     # fast forward it a few days so we can set the digest last sent time
     # to earlier in the same month.
     self._mlist.digest_last_sent_at = self.right_now
     factory.fast_forward(days=26)
     self._mlist.digest_volume_frequency = DigestFrequency.monthly
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 7)
     self.assertEqual(self._mlist.next_digest_number, 5)
     self.assertEqual(self._mlist.digest_last_sent_at, right_now())
示例#7
0
 def test_bump_monthly_not_yet(self):
     # The normal test date starts on the first day of the month, so let's
     # fast forward it a few days so we can set the digest last sent time
     # to earlier in the same month.
     self._mlist.digest_last_sent_at = self.right_now
     factory.fast_forward(days=26)
     self._mlist.digest_volume_frequency = DigestFrequency.monthly
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 7)
     self.assertEqual(self._mlist.next_digest_number, 5)
     self.assertEqual(self._mlist.digest_last_sent_at, right_now())
示例#8
0
def digests(ctx, list_ids, send, bump, dry_run, verbose, periodic):
    # send and periodic options are mutually exclusive, if they both are
    # specified, exit.
    if send and periodic:
        print(_('--send and --periodic flags cannot be used together'),
              file=sys.stderr)
        exit(1)
    list_manager = getUtility(IListManager)
    if list_ids:
        lists = []
        for spec in list_ids:
            # We'll accept list-ids or fqdn list names.
            if '@' in spec:
                mlist = list_manager.get(spec)
            else:
                mlist = list_manager.get_by_list_id(spec)
            if mlist is None:
                print(_('No such list found: $spec'), file=sys.stderr)
            else:
                lists.append(mlist)
    else:
        lists = list(list_manager.mailing_lists)
    if bump:
        for mlist in lists:
            if verbose:
                print(
                    _('\
$mlist.list_id is at volume $mlist.volume, number \
${mlist.next_digest_number}'))
            if not dry_run:
                bump_digest_number_and_volume(mlist)
                if verbose:
                    print(
                        _('\
$mlist.list_id bumped to volume $mlist.volume, number \
${mlist.next_digest_number}'))
    if send:
        for mlist in lists:
            if verbose:
                print(
                    _('\
$mlist.list_id sent volume $mlist.volume, number ${mlist.next_digest_number}'))
            if not dry_run:
                maybe_send_digest_now(mlist, force=True)

    if periodic:
        for mlist in lists:
            if mlist.digest_send_periodic:
                if verbose:
                    print(
                        _('\
$mlist.list_id sent volume $mlist.volume, number ${mlist.next_digest_number}'))
                if not dry_run:
                    maybe_send_digest_now(mlist, force=True)
示例#9
0
 def on_post(self, request, response):
     try:
         validator = Validator(send=as_boolean,
                               bump=as_boolean,
                               _optional=('send', 'bump'))
         values = validator(request)
     except ValueError as error:
         bad_request(response, str(error))
         return
     if len(values) == 0:
         # There's nothing to do, but that's okay.
         okay(response)
         return
     if values.get('bump', False):
         bump_digest_number_and_volume(self._mlist)
     if values.get('send', False):
         maybe_send_digest_now(self._mlist, force=True)
     accepted(response)
示例#10
0
文件: lists.py 项目: maxking/mailman
 def on_post(self, request, response):
     try:
         validator = Validator(
             send=as_boolean,
             bump=as_boolean,
             _optional=('send', 'bump'))
         values = validator(request)
     except ValueError as error:
         bad_request(response, str(error))
         return
     if len(values) == 0:
         # There's nothing to do, but that's okay.
         okay(response)
         return
     if values.get('bump', False):
         bump_digest_number_and_volume(self._mlist)
     if values.get('send', False):
         maybe_send_digest_now(self._mlist, force=True)
     accepted(response)
示例#11
0
    def process(self, args):
        """See `ICLISubCommand`."""
        list_manager = getUtility(IListManager)
        if args.lists:
            lists = []
            for spec in args.lists:
                # We'll accept list-ids or fqdn list names.
                if '@' in spec:
                    mlist = list_manager.get(spec)
                else:
                    mlist = list_manager.get_by_list_id(spec)
                if mlist is None:
                    print(_('No such list found: $spec'), file=sys.stderr)
                else:
                    lists.append(mlist)
        else:
            lists = list(list_manager.mailing_lists)
        if args.bump:
            for mlist in lists:
                if args.verbose:
                    print(
                        _('\
$mlist.list_id is at volume $mlist.volume, number \
${mlist.next_digest_number}'))
                if not args.dry_run:
                    bump_digest_number_and_volume(mlist)
                    if args.verbose:
                        print(
                            _('\
$mlist.list_id bumped to volume $mlist.volume, number \
${mlist.next_digest_number}'))
        if args.send:
            for mlist in lists:
                if args.verbose:
                    print(
                        _('\
$mlist.list_id sent volume $mlist.volume, number ${mlist.next_digest_number}'))
                if not args.dry_run:
                    maybe_send_digest_now(mlist, force=True)
示例#12
0
def digests(ctx, list_ids, send, bump, dry_run, verbose):
    list_manager = getUtility(IListManager)
    if list_ids:
        lists = []
        for spec in list_ids:
            # We'll accept list-ids or fqdn list names.
            if '@' in spec:
                mlist = list_manager.get(spec)
            else:
                mlist = list_manager.get_by_list_id(spec)
            if mlist is None:
                print(_('No such list found: $spec'), file=sys.stderr)
            else:
                lists.append(mlist)
    else:
        lists = list(list_manager.mailing_lists)
    if bump:
        for mlist in lists:
            if verbose:
                print(
                    _('\
$mlist.list_id is at volume $mlist.volume, number \
${mlist.next_digest_number}'))
            if not dry_run:
                bump_digest_number_and_volume(mlist)
                if verbose:
                    print(
                        _('\
$mlist.list_id bumped to volume $mlist.volume, number \
${mlist.next_digest_number}'))
    if send:
        for mlist in lists:
            if verbose:
                print(
                    _('\
$mlist.list_id sent volume $mlist.volume, number ${mlist.next_digest_number}'))
            if not dry_run:
                maybe_send_digest_now(mlist, force=True)
示例#13
0
    def process(self, args):
        """See `ICLISubCommand`."""
        list_manager = getUtility(IListManager)
        if args.lists:
            lists = []
            for spec in args.lists:
                # We'll accept list-ids or fqdn list names.
                if '@' in spec:
                    mlist = list_manager.get(spec)
                else:
                    mlist = list_manager.get_by_list_id(spec)
                if mlist is None:
                    print(_('No such list found: $spec'), file=sys.stderr)
                else:
                    lists.append(mlist)
        else:
            lists = list(list_manager.mailing_lists)
        if args.bump:
            for mlist in lists:
                if args.verbose:
                    print(_('\
$mlist.list_id is at volume $mlist.volume, number \
${mlist.next_digest_number}'))
                if not args.dry_run:
                    bump_digest_number_and_volume(mlist)
                    if args.verbose:
                        print(_('\
$mlist.list_id bumped to volume $mlist.volume, number \
${mlist.next_digest_number}'))
        if args.send:
            for mlist in lists:
                if args.verbose:
                    print(_('\
$mlist.list_id sent volume $mlist.volume, number ${mlist.next_digest_number}'))
                if not args.dry_run:
                    maybe_send_digest_now(mlist, force=True)
示例#14
0
 def test_bump_no_previous_digest(self):
     self._mlist.digest_last_sent_at = None
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 7)
     self.assertEqual(self._mlist.next_digest_number, 5)
     self.assertEqual(self._mlist.digest_last_sent_at, self.right_now)
示例#15
0
 def test_bump_no_previous_digest(self):
     self._mlist.digest_last_sent_at = None
     bump_digest_number_and_volume(self._mlist)
     self.assertEqual(self._mlist.volume, 7)
     self.assertEqual(self._mlist.next_digest_number, 5)
     self.assertEqual(self._mlist.digest_last_sent_at, self.right_now)