示例#1
0
 def test_now_date_set_on_save(self):
     """ 'now' messages automatically get date assignment """
     data = {"when": "now", "body": self.random_string(140), "groups": [self.group.pk]}
     form = BroadcastForm(data)
     self.assertTrue(form.is_valid())
     broadcast = form.save()
     self.assertTrue(broadcast.date is not None)
示例#2
0
文件: tests.py 项目: dimagi/aremind
 def test_now_date_set_on_save(self):
     """ 'now' messages automatically get date assignment """
     data =  {
         'when': 'now',
         'body': self.random_string(140),
         'groups': [self.group.pk],
     }
     form = BroadcastForm(data)
     self.assertTrue(form.is_valid())
     broadcast = form.save()
     self.assertTrue(broadcast.date is not None)
示例#3
0
 def test_future_start_date_required(self):
     """ Start date is required for future broadcasts """
     data = {
         "when": "later",
         "body": self.random_string(140),
         "schedule_frequency": "one-time",
         "groups": [self.group.pk],
     }
     form = BroadcastForm(data)
     self.assertFalse(form.is_valid())
     self.assertEqual(len(form.non_field_errors()), 1)
     msg = "Start date is required for future broadcasts"
     self.assertTrue(msg in form.non_field_errors().as_text())
示例#4
0
文件: tests.py 项目: dimagi/aremind
 def test_future_start_date_required(self):
     """ Start date is required for future broadcasts """
     data =  {
         'when': 'later',
         'body': self.random_string(140),
         'schedule_frequency': 'one-time',
         'groups': [self.group.pk],
     }
     form = BroadcastForm(data)
     self.assertFalse(form.is_valid())
     self.assertEqual(len(form.non_field_errors()), 1)
     msg = 'Start date is required for future broadcasts'
     self.assertTrue(msg in form.non_field_errors().as_text())
示例#5
0
 def test_field_clearing(self):
     """ Non related frequency fields should be cleared on form clean """
     weekday = self.get_weekday_for_date(datetime.datetime.now())
     before = self.create_broadcast(when="future", data={"groups": [self.group.pk], "weekdays": [weekday]})
     data = {
         "when": "later",
         "date": before.date,
         "body": before.body,
         "schedule_frequency": "monthly",
         "groups": [self.group.pk],
         "weekdays": [weekday.pk],
     }
     form = BroadcastForm(data, instance=before)
     after = form.save()
     self.assertEqual(after.weekdays.count(), 0)
示例#6
0
 def test_end_date_before_start_date(self):
     """ Form should prevent end date being before start date """
     now = datetime.datetime.now()
     yesterday = now - relativedelta(days=1)
     data = {
         "when": "later",
         "body": self.random_string(140),
         "date": now,
         "schedule_end_date": yesterday,
         "schedule_frequency": "daily",
         "groups": [self.group.pk],
     }
     form = BroadcastForm(data)
     self.assertFalse(form.is_valid())
     self.assertEqual(len(form.non_field_errors()), 1)
     msg = "End date must be later than start date"
     self.assertTrue(msg in form.non_field_errors().as_text())
示例#7
0
文件: tests.py 项目: dimagi/aremind
 def test_field_clearing(self):
     """ Non related frequency fields should be cleared on form clean """
     weekday = self.get_weekday_for_date(datetime.datetime.now())
     before = self.create_broadcast(when='future',
                                    data={'groups': [self.group.pk],
                                          'weekdays': [weekday]})
     data =  {
         'when': 'later',
         'date': before.date,
         'body': before.body,
         'schedule_frequency': 'monthly',
         'groups': [self.group.pk],
         'weekdays': [weekday.pk],
     }
     form = BroadcastForm(data, instance=before)
     after = form.save()
     self.assertEqual(after.weekdays.count(), 0)
示例#8
0
文件: tests.py 项目: dimagi/aremind
 def test_end_date_before_start_date(self):
     """ Form should prevent end date being before start date """
     now = datetime.datetime.now()
     yesterday = now - relativedelta(days=1)
     data =  {
         'when': 'later',
         'body': self.random_string(140),
         'date': now,
         'schedule_end_date': yesterday,
         'schedule_frequency': 'daily',
         'groups': [self.group.pk],
     }
     form = BroadcastForm(data)
     self.assertFalse(form.is_valid())
     self.assertEqual(len(form.non_field_errors()), 1)
     msg = 'End date must be later than start date'
     self.assertTrue(msg in form.non_field_errors().as_text())
示例#9
0
 def test_update(self):
     """ Test broadcast edit functionality """
     before = self.create_broadcast(when="future", data={"groups": [self.group.pk]})
     data = {
         "when": "later",
         "date": before.date,
         "body": self.random_string(30),
         "schedule_frequency": before.schedule_frequency,
         "groups": [self.group.pk],
     }
     form = BroadcastForm(data, instance=before)
     self.assertTrue(form.is_valid(), form._errors.as_text())
     before = Broadcast.objects.get(pk=before.pk)
     after = form.save()
     # same broadcast
     self.assertEqual(before.pk, after.pk)
     # new message
     self.assertNotEqual(before.body, after.body)
示例#10
0
文件: tests.py 项目: dimagi/aremind
 def test_update(self):
     """ Test broadcast edit functionality """
     before = self.create_broadcast(when='future',
                                    data={'groups': [self.group.pk]})
     data =  {
         'when': 'later',
         'date': before.date,
         'body': self.random_string(30),
         'schedule_frequency': before.schedule_frequency,
         'groups': [self.group.pk],
     }
     form = BroadcastForm(data, instance=before)
     self.assertTrue(form.is_valid(), form._errors.as_text())
     before = Broadcast.objects.get(pk=before.pk)
     after = form.save()
     # same broadcast
     self.assertEqual(before.pk, after.pk)
     # new message
     self.assertNotEqual(before.body, after.body)
示例#11
0
def send_message(request, broadcast_id=None):
    if broadcast_id:
        broadcast = get_object_or_404(Broadcast, pk=broadcast_id)
    else:
        broadcast = None
    if request.method == 'POST':
        form = BroadcastForm(request.POST, instance=broadcast)
        if form.is_valid():
            broadcast = form.save()
            if broadcast_id:
                info = 'Broadcast successfully saved'
            else:
                info = 'Message queued for delivery'
            messages.info(request, info)
            return HttpResponseRedirect(reverse('broadcast-schedule'))
    else:
        form = BroadcastForm(instance=broadcast)
    broadcasts = Broadcast.objects.exclude(schedule_frequency__isnull=True)
    context = {
        'form': form,
        'broadcasts': broadcasts.order_by('date'),
    }
    return render_to_response('broadcast/send_message.html', context,
                              RequestContext(request))