def create_tracker(request): new_track_form = TrackerForm(request.POST) if request.method == 'POST' and new_track_form.is_valid(): tracker = Track() tracker.name = request.POST['name'] tracker.unit = request.POST['unit'] tracker.description = request.POST['description'] try: with transaction.atomic(): tracker.save() except IntegrityError: return render( request, 'tracker/trackers.html', { 'trackers_list': Track.objects.all(), 'form': TrackerForm(), 'form_error': "Tracking with name '%s' already exists" % (request.POST['name']), }) return HttpResponseRedirect(reverse('tracker:trackers')) else: fields = { 'trackers_list': Track.objects.all(), 'form': new_track_form, } if new_track_form.errors.get('name'): fields['name_error'] = new_track_form.errors.get('name')[0] if new_track_form.errors.get('unit'): fields['unit_error'] = new_track_form.errors.get('unit')[0] if new_track_form.errors.get('description'): fields['description_error'] = new_track_form.errors.get( 'description')[0] return render(request, 'tracker/trackers.html', fields)
def tracker_list(request): trackers = Tracker.objects.filter(createur=request.user.profil) form = TrackerForm(request.POST or None) if form.is_valid(): if trackers.filter(nom=form.cleaned_data['nom']).exists(): form.add_error('nom', 'Vous avez déjà créé un tracker du même nom.') else: tracker = form.save(commit=False) tracker.createur = request.user.profil tracker.save() return redirect('tracker:liste-tracker') return render(request, 'tracker/tracker_list.html', { 'trackers': trackers, 'form': form })
def get_context_data(self, **kwargs): context = super(TrackersView, self).get_context_data() context['form'] = TrackerForm() return context