def test_detail(self): alert = models.Alert() alert.location = geojson_area alert.user = self.user alert.save() response = self.client.get('/alerts/%s.json' % alert.id) self.assertEqual(response.status_code, 401) self.client.login(email='*****@*****.**', password='******') response = self.client.get('/alerts/%s.json' % alert.id) self.assertEqual(response.status_code, 200) UserModel = get_user_model() user = UserModel(email='*****@*****.**') user.set_password('notasecret') user.save() self.client.login(email='*****@*****.**', password='******') response = self.client.get('/alerts/%s.json' % alert.id) self.assertEqual(response.status_code, 403)
def test_create_delete(self): self.client.login(email='*****@*****.**', password='******') alert = models.Alert() alert.location = geojson_area alert.user = self.user alert.save() data = {'delete': 'yes'} response = self.client.post('/alerts/%s/delete' % alert.id, data, follow=True) self.assertNotContains(response, "Delete this alert")
def form_valid(self, form): alert = models.Alert() alert.location = form.cleaned_data['location'] if self.request.user.is_authenticated: #save alert alert.user = self.request.user alert.save() #create a success message messages.add_message(self.request, messages.SUCCESS, success_message) return redirect(reverse('alert-list')) else: self.request.session['new-alert'] = serialize( 'geojson', [alert], fields=('location', )) return redirect(reverse('create-alert-user'))
def form_valid(self, form): #create user UserModel = get_user_model() user = UserModel(email=form.cleaned_data['email']) user.set_password(form.cleaned_data['password']) user.save() #sign new user in login(self.request, user) #get the location out of the session location = json.loads(self.request.session['new-alert']) #save alert alert = models.Alert() alert.location = json.dumps(location['features'][0]['geometry']) alert.user = user alert.save() #create a success message messages.add_message(self.request, messages.SUCCESS, success_message) return redirect(reverse('alert-list'))
def validate(self, attrs): #use the model's validation alert = models.Alert(**attrs) alert.clean() return attrs