def post(self, request, *args, **kwargs): event_id = self.kwargs['event_id'] if event_id: event = get_event_by_id(event_id) form = EventForm(self.request.POST, instance=event) if form.is_valid(): start_date_event = form.cleaned_data['start_date'] end_date_event = form.cleaned_data['end_date'] event_edit = check_edit_event(event_id, start_date_event, end_date_event) if not event_edit['result']: return render( request, 'event/edit_error.html', { 'count': event_edit['invalid_count'], 'jobs': event_edit['invalid_jobs'] }) if start_date_event < datetime.date.today(): data = request.POST.copy() data['end_date'] = end_date_event messages.add_message( request, messages.INFO, 'Start date should be today\'s date or later.') form = EventForm(data) return render(request, 'event/edit.html', { 'form': form, }) else: event_to_edit = form.save(commit=False) try: country_name = self.request.POST.get('country') country = Country.objects.get(name=country_name) except ObjectDoesNotExist: country = None event_to_edit.country = country try: state_name = self.request.POST.get('state') state = Region.objects.get(name=state_name) except ObjectDoesNotExist: state = None event_to_edit.state = state try: city_name = self.request.POST.get('city') city = City.objects.get(name=city_name) except ObjectDoesNotExist: city = None event_to_edit.city = city event_to_edit.save() return HttpResponseRedirect(reverse('event:list')) else: data = request.POST.copy() try: data['end_date'] = form.cleaned_data['end_date'] except KeyError: data['end_date'] = '' form = EventForm(data) return render(request, 'event/edit.html', { 'form': form, })
def post(self, request, *args, **kwargs): event_id = self.kwargs['event_id'] if event_id: event = get_event_by_id(event_id) form = EventForm(self.request.POST, instance=event) if form.is_valid(): start_date_event = form.cleaned_data['start_date'] end_date_event = form.cleaned_data['end_date'] event_edit = check_edit_event(event_id, start_date_event, end_date_event) if not event_edit['result']: return render( request, 'event/edit_error.html', { 'count': event_edit['invalid_count'], 'jobs': event_edit['invalid_jobs'] }) if start_date_event < datetime.date.today(): data = request.POST.copy() data['end_date'] = end_date_event messages.add_message( request, messages.INFO, 'Start date should be today\'s date or later.') form = EventForm(data) return render(request, 'event/edit.html', { 'form': form, }) else: form.save() return HttpResponseRedirect(reverse('event:list')) else: data = request.POST.copy() try: data['end_date'] = form.cleaned_data['end_date'] except KeyError: data['end_date'] = '' form = EventForm(data) return render(request, 'event/edit.html', { 'form': form, })
def test_check_edit_event(self): """ Uses events e4 and e5 """ # test typical cases start_date1 = datetime.date(2012, 10, 8) start_date2 = datetime.date(2012, 10, 7) start_date3 = datetime.date(2012, 10, 15) start_date4 = datetime.date(2013, 10, 8) stop_date1 = datetime.date(2012, 10, 23) stop_date2 = datetime.date(2012, 10, 22) stop_date3 = datetime.date(2012, 10, 26) stop_date4 = datetime.date(2013, 10, 23) # edit with valid date out1 = check_edit_event(self.e4.id, start_date1, stop_date1) # edit with one job outside date range out2 = check_edit_event(self.e4.id, start_date2, stop_date2) out3 = check_edit_event(self.e4.id, start_date3, stop_date3) # edit with both jobs outside out4 = check_edit_event(self.e4.id, start_date4, stop_date4) # check for event with no jobs out5 = check_edit_event(self.e5.id, start_date1, stop_date1) # check for non existing event out6 = check_edit_event(1000, start_date1, stop_date1) self.assertTrue(out1['result']) self.assertFalse(out2['result']) self.assertFalse(out3['result']) self.assertFalse(out4['result']) self.assertTrue(out5['result']) self.assertFalse(out6['result']) self.assertEqual(out1['invalid_count'], 0) self.assertEqual(out2['invalid_count'], 1) self.assertEqual(out4['invalid_count'], 2) self.assertIn(j4.name, out2['invalid_jobs']) self.assertIn(j4.name, out4['invalid_jobs']) self.assertIn(j3.name, out4['invalid_jobs'])