Skip to content

Commit

Permalink
Adding a form that adds a content_object
Browse files Browse the repository at this point in the history
  • Loading branch information
Felipe Álvarez committed Aug 22, 2017
1 parent c4a29e1 commit f608eaf
Show file tree
Hide file tree
Showing 4 changed files with 46 additions and 4 deletions.
19 changes: 19 additions & 0 deletions agenda/forms.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
from django.forms import ModelForm
from agenda.models import Activity


class ActivityForm(ModelForm):

def __init__(self, *args, **kwargs):
self.content_object = kwargs.pop('content_object', None)
super(ActivityForm, self).__init__(*args, **kwargs)

def save(self, commit=True):
activity = super(ActivityForm, self).save(commit=commit)
if commit:
activity.content_object = self.content_object
activity.save()
return activity
class Meta:
model = Activity
fields = ['date', 'url', 'description', 'location']
4 changes: 2 additions & 2 deletions agenda/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.10.7 on 2017-08-22 14:00
# Generated by Django 1.10.7 on 2017-08-22 15:29
from __future__ import unicode_literals

from django.db import migrations, models
Expand All @@ -19,7 +19,7 @@ class Migration(migrations.Migration):
name='Activity',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('date', models.DateField()),
('date', models.DateTimeField()),
('url', models.URLField()),
('location', models.CharField(max_length=1024)),
('description', models.TextField(blank=True)),
Expand Down
2 changes: 1 addition & 1 deletion agenda/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@


class Activity(models.Model):
date = models.DateField()
date = models.DateTimeField()
url = models.URLField()
location = models.CharField(max_length=1024)
description = models.TextField(blank=True)
Expand Down
25 changes: 24 additions & 1 deletion agenda/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
import datetime
from django.utils import timezone
from elections.models import Candidate

from agenda.forms import ActivityForm
from django.contrib.auth.models import User

tomorrow = timezone.now() + datetime.timedelta(days=1)

Expand All @@ -23,3 +24,25 @@ def test_instantiate_activity_model(self):
self.assertIsNone(activity.content_type)
self.assertIsNone(activity.object_id)
self.assertIsNone(activity.content_object)


class ActivityFormTestCase(TestCase):
def setUp(self):
pass

def test_create_one(self):
data = {
'date': tomorrow,
'url': 'https://perrito.cl/actividad_secreta',
'description': 'This is a description',
'location': 'secret location'
}
user = User.objects.create_user(username="perrito")
form = ActivityForm(data=data, content_object=user)
self.assertTrue(form.is_valid())
instance = form.save()
self.assertEquals(instance.date, tomorrow)
self.assertEquals(instance.url, data['url'])
self.assertEquals(instance.description, data['description'])
self.assertEquals(instance.location, data['location'])
self.assertEquals(instance.content_object, user)

0 comments on commit f608eaf

Please sign in to comment.