コード例 #1
1
    def test_create_event_from_dict_with_all_fields(self):
        with open(local(__file__).dirname + "/../../static/img/team/alja.jpg") as fp:
            io = StringIO.StringIO()
            io.write(fp.read())
            uploaded_picture = InMemoryUploadedFile(io, None, "alja.jpg", "jpeg", io.len, None)
            uploaded_picture.seek(0)

        event_data = {
            "end_date": datetime.datetime.now(),
            "start_date": datetime.datetime.now(),
            "organizer": "some organizer",
            "creator": User.objects.filter(pk=1)[0],
            "title": "event title",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            "geoposition": Geoposition(46.05528, 14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
            "picture": uploaded_picture,
        }

        test_event = create_or_update_event(**event_data)
        self.assertEqual(2, test_event.pk)
        self.assertEqual("Ljubljana", test_event.location)
        self.assertEqual("46.05528", str(test_event.geoposition.latitude))
        self.assertIn("tag1", test_event.tags.names())
        self.assertIn("tag2", test_event.tags.names())

        assert "event_picture/alja" in test_event.picture.path
コード例 #2
0
ファイル: events.py プロジェクト: kyyberi/coding-events
def edit_event(request, event_id):
    event = get_event_by_id(event_id)
    user = request.user
    initial = get_initial_data(event)
    initial["user_email"] = request.user.email

    event_data = {}

    if request.method == "POST":
        event_form = AddEventForm(data=request.POST, files=request.FILES)
    else:
        event_form = AddEventForm(initial=initial)

    existing_picture = event.picture

    if event_form.is_valid():
        # picture_check works with jasny bootstrap magix
        picture_check = request.POST.get("picture")
        picture = request.FILES.get("picture", None)
        event_data = event_form.cleaned_data
        event_data["creator"] = request.user

        # checking if user entered a different email than in her profile
        if user.email != event_data["user_email"]:
            update_user_email(user.id, event_data["user_email"])
        event_data.pop("user_email")

        try:
            if picture:
                if picture.size > (256 * 1024):
                    raise ImageSizeTooLargeException("Image size too large.")
                event_data["picture"] = process_image(picture)
            elif picture_check == "nochange":
                event_data["picture"] = existing_picture
            else:
                del event_data["picture"]

            create_or_update_event(event_id, **event_data)

            return HttpResponseRedirect(reverse("web.view_event", kwargs={"event_id": event.id, "slug": event.slug}))

        except ImageSizeTooLargeException:
            messages.error(
                request,
                "The image is just a bit too big for us (must be up to 256 kb). "
                "Please reduce your image size and try agin.",
            )
        except UploadImageError as e:
            messages.error(request, e.message)

    return render_to_response(
        "pages/add_event.html",
        {
            "form": event_form,
            "address": event_data.get("location", None),
            "editing": True,
            "picture_url": event.picture,
        },
        context_instance=RequestContext(request),
    )
コード例 #3
0
def edit_event(request, event_id):
    event = get_event_by_id(event_id)
    user = request.user
    initial = get_initial_data(event)
    initial['user_email'] = request.user.email

    event_data = {}

    if request.method == 'POST':
        event_form = AddEventForm(data=request.POST, files=request.FILES)
    else:
        event_form = AddEventForm(initial=initial)

    existing_picture = event.picture

    if event_form.is_valid():
        # picture_check works with jasny bootstrap magix
        picture_check = request.POST.get('picture')
        picture = request.FILES.get('picture', None)
        event_data = event_form.cleaned_data
        event_data['creator'] = request.user

        # checking if user entered a different email than in her profile
        if user.email != event_data['user_email']:
            update_user_email(user.id, event_data['user_email'])
        event_data.pop('user_email')

        try:
            if picture:
                if picture.size > (256 * 1024):
                    raise ImageSizeTooLargeException('Image size too large.')
                event_data['picture'] = process_image(picture)
            elif picture_check == "nochange":
                event_data['picture'] = existing_picture
            else:
                del event_data['picture']

            create_or_update_event(event_id, **event_data)

            return HttpResponseRedirect(
                reverse(
                    'web.view_event',
                    kwargs={
                        'event_id': event.id,
                        'slug': event.slug}))

        except ImageSizeTooLargeException:
            messages.error(
                request, 'The image is just a bit too big for us (must be up to 256 kb). '
                'Please reduce your image size and try agin.')
        except UploadImageError as e:
            messages.error(request, e.message)

    return render_to_response(
        'pages/add_event.html', {
            'form': event_form,
            'address': event_data.get('location', None),
            'editing': True,
            'picture_url': event.picture,
        }, context_instance=RequestContext(request))
コード例 #4
0
    def test_edit_event_with_all_fields(self):
        # First create a new event
        with open(local(__file__).dirname +
                  '/../../static/img/team/alja.jpg') as fp:
            io = StringIO.StringIO()
            io.write(fp.read())
            uploaded_picture = InMemoryUploadedFile(io, None, "alja.jpg",
                                                    "jpeg", io.len, None)
            uploaded_picture.seek(0)

        event_data = {
            "end_date": datetime.datetime.now(),
            "start_date": datetime.datetime.now(),
            "organizer": "some organizer",
            "creator": User.objects.filter(pk=1)[0],
            "title": "event title",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            "geoposition": Geoposition(46.05528, 14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
            "picture": uploaded_picture
        }

        test_event = create_or_update_event(**event_data)

        # Then edit it
        with open(
                local(__file__).dirname +
                '/../../static/img/team/ercchy.jpg') as fp:
            io = StringIO.StringIO()
            io.write(fp.read())
            uploaded_picture = InMemoryUploadedFile(io, None, "ercchy.jpg",
                                                    "jpeg", io.len, None)
            uploaded_picture.seek(0)

        event_data = {
            "end_date": datetime.datetime.now(),
            "start_date": datetime.datetime.now(),
            "organizer": "another organiser",
            "creator": User.objects.filter(pk=1)[0],
            "title": "event title - edited",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            # "geoposition": Geoposition(46.05528,14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag3", "tag4"],
            "picture": uploaded_picture
        }
        test_event = create_or_update_event(event_id=test_event.id,
                                            **event_data)
        assert "tag1" not in test_event.tags.names()

        assert 'event_picture/alja' not in test_event.picture
        assert 'event_picture/ercchy' in test_event.picture.path
コード例 #5
0
ファイル: events.py プロジェクト: miaerbus/coding-events
def edit_event(request, event_id):
    event = get_event_by_id(event_id)
    user = request.user
    initial = get_initial_data(event)
    initial['user_email'] = request.user.email

    event_data = {}

    if request.method == 'POST':
        event_form = AddEventForm(data=request.POST, files=request.FILES)
    else:
        event_form = AddEventForm(initial=initial)

    if event_form.is_valid():
        picture = request.FILES.get('picture', None)
        event_data = event_form.cleaned_data

        event_data['creator'] = request.user

        # checking if user entered a different email than in her profile
        if user.email != event_data['user_email']:
            update_user_email(user.id, event_data['user_email'])
        event_data.pop('user_email')

        try:
            if picture:
                if picture.size > (256 * 1024):
                    raise ImageSizeTooLargeException('Image size too large.')

                event_data['picture'] = process_image(picture)
            else:
                del event_data['picture']

            create_or_update_event(event_id, **event_data)

            return HttpResponseRedirect(
                reverse('web.view_event',
                        kwargs={
                            'event_id': event.id,
                            'slug': event.slug
                        }))

        except ImageSizeTooLargeException:
            messages.error(
                request,
                'The image is just a bit too big for us (must be up to 256 kb). '
                'Please reduce your image size and try agin.')
        except UploadImageError as e:
            messages.error(request, e.message)

    return render_to_response('pages/add_event.html', {
        'form': event_form,
        'address': event_data.get('location', None),
        'editing': True,
        'picture_url': event.picture,
    },
                              context_instance=RequestContext(request))
コード例 #6
0
    def test_scoreboard_api(self, client, admin_user):
        event_data = {
            "start_date": datetime.datetime.now() -
            datetime.timedelta(
                days=1,
                hours=3),
            "end_date": datetime.datetime.now() +
            datetime.timedelta(
                days=3,
                hours=3),
            "organizer": "some organizer",
            "creator": admin_user,
            "title": "Event in SI",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            "geoposition": Geoposition(
                46.05528,
                14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": [
                "tag1",
                "tag2"],
        }

        event = create_or_update_event(**event_data)
        event.status = 'APPROVED'
        event.save()

        event_data = {
            "start_date": datetime.datetime.now() - datetime.timedelta(days=1, hours=3),
            "end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            "organizer": "other organizer",
            "creator": admin_user,
            "title": "Event in IS",
            "pub_date": datetime.datetime.now(),
            "country": "IS",
            "geoposition": Geoposition(64.13244, -21.85690),
            "location": "Reykjavík",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
        }

        event = create_or_update_event(**event_data)
        event.status = 'APPROVED'
        event.save()

        response_json = client.get('/api/scoreboard/?format=json')
        response_data = json.loads(response_json.content)

        assert isinstance(response_data, list)
        assert len(response_data) > 1
        assert response_data[0]["country_name"] == "Iceland"
        assert response_data[1]["country_name"] == "Slovenia"
コード例 #7
0
    def test_edit_event_with_all_fields(self):
        # First create a new event
        with open(local(__file__).dirname + '/../../static/img/team/alja.jpg') as fp:
            io = StringIO.StringIO()
            io.write(fp.read())
            uploaded_picture = InMemoryUploadedFile(
                io, None, "alja.jpg", "jpeg", io.len, None)
            uploaded_picture.seek(0)

        event_data = {
            "end_date": datetime.datetime.now(),
            "start_date": datetime.datetime.now(),
            "organizer": "some organizer",
            "creator": User.objects.filter(pk=1)[0],
            "title": "event title",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            "geoposition": Geoposition(46.05528, 14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
            "picture": uploaded_picture
        }

        test_event = create_or_update_event(**event_data)

        # Then edit it
        with open(local(__file__).dirname + '/../../static/img/team/ercchy.jpg') as fp:
            io = StringIO.StringIO()
            io.write(fp.read())
            uploaded_picture = InMemoryUploadedFile(
                io, None, "ercchy.jpg", "jpeg", io.len, None)
            uploaded_picture.seek(0)

        event_data = {
            "end_date": datetime.datetime.now(),
            "start_date": datetime.datetime.now(),
            "organizer": "another organiser",
            "creator": User.objects.filter(pk=1)[0],
            "title": "event title - edited",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            # "geoposition": Geoposition(46.05528,14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag3", "tag4"],
            "picture": uploaded_picture
        }
        test_event = create_or_update_event(
            event_id=test_event.id, **event_data)
        assert "tag1" not in test_event.tags.names()

        assert 'event_picture/alja' not in test_event.picture
        assert 'event_picture/ercchy' in test_event.picture.path
コード例 #8
0
    def test_scoreboard_api(self, client, admin_user):
        event_data = {
            "start_date": datetime.datetime.now() -
            datetime.timedelta(
                days=1,
                hours=3),
            "end_date": datetime.datetime.now() +
            datetime.timedelta(
                days=3,
                hours=3),
            "organizer": "some organizer",
            "creator": admin_user,
            "title": "Event in SI",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            "geoposition": Geoposition(
                46.05528,
                14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": [
                "tag1",
                "tag2"],
        }

        event = create_or_update_event(**event_data)
        event.status = 'APPROVED'
        event.save()

        event_data = {
            "start_date": datetime.datetime.now() - datetime.timedelta(days=1, hours=3),
            "end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            "organizer": "other organizer",
            "creator": admin_user,
            "title": "Event in IS",
            "pub_date": datetime.datetime.now(),
            "country": "IS",
            "geoposition": Geoposition(64.13244, -21.85690),
            "location": "Reykjavík",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
        }

        event = create_or_update_event(**event_data)
        event.status = 'APPROVED'
        event.save()

        response_json = client.get('/api/scoreboard/?format=json')
        response_data = json.loads(response_json.content)

        assert isinstance(response_data, list)
        assert len(response_data) > 1
        assert response_data[0]["country_name"] == "Iceland"
        assert response_data[1]["country_name"] == "Slovenia"
コード例 #9
0
ファイル: test_site.py プロジェクト: misshu93/coding-events
def test_view_just_id(admin_user, db, client):
    event_data = {
        'audience': [3],
        'theme': [1, 2],
        'contact_person': u'*****@*****.**',
        'country': u'SI',
        'description': u'Lorem ipsum dolor sit amet',
        'event_url': u'',
        'location': u'Ljubljana, Slovenia',
        'organizer': u'CodeCatz test',
        "creator": admin_user,
        'start_date': datetime.datetime.now(),
        'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        'tags': [u'css', u'html', u'web'],
        'title': u'Redirect Test',
    }

    test_event = create_or_update_event(event_id=None, **event_data)

    # Test without a slash in the end
    response = client.get('/view/1')
    assert response.status_code == 301

    # Test with a slash in the end
    response = client.get('/view/1/')
    assert response.status_code == 302
コード例 #10
0
	def test_event_list_all(self, client, admin_user):
		event_data = {
			"start_date": datetime.datetime.now() - datetime.timedelta(days=1, hours=3),
			"end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
			"organizer": "some organizer",
			"creator": admin_user,
			"title": "Unique REST API Event",
			"pub_date": datetime.datetime.now(),
			"country": "SI",
			"geoposition": Geoposition(46.05528,14.51444),
			"location": "Ljubljana",
			"audience": [1],
			"theme": [1],
			"tags": ["tag1", "tag2"],
		}

		event = create_or_update_event(**event_data)
		event.status = 'APPROVED'
		event.save()

		response_json = client.get('/api/event/list/?format=json')
		response_data = json.loads(response_json.content)

		assert isinstance(response_data, list)
		assert event_data['title'] in response_json.content
コード例 #11
0
ファイル: events.py プロジェクト: FloorD/coding-events
def add_event(request):
	event_form = AddEventForm()

	if request.method == 'POST':
		event_form = AddEventForm(data=request.POST, files=request.FILES)

	if event_form.is_valid():
		picture = request.FILES.get('picture', None)
		event_data = {}
		try:
			if picture:
				if picture.size > (256 * 1024):
					raise ImageSizeTooLargeException('Image size too large.')

				event_data['picture'] = process_image(picture)

			event_data.update(event_form.cleaned_data)
			event_data['creator'] = request.user
			event = create_or_update_event(**event_data)

			t = loader.get_template('alerts/thank_you.html')
			c = Context({'event': event, })
			messages.info(request, t.render(c))

			return HttpResponseRedirect(reverse('web.view_event', args=[event.pk, event.slug]))

		except ImageSizeTooLargeException:
			messages.error(request, 'The image is just a bit too big for us. '
			                        'Please reduce your image size and try agin.')
		except UploadImageError as e:
			messages.error(request, e.message)

	return render_to_response("pages/add_event.html", {
		'form': event_form,
	}, context_instance=RequestContext(request))
コード例 #12
0
    def test_event_list_all(self, client, admin_user):
        event_data = {
            "start_date":
            datetime.datetime.now() - datetime.timedelta(days=1, hours=3),
            "end_date":
            datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            "organizer":
            "some organizer",
            "creator":
            admin_user,
            "title":
            "Unique REST API Event",
            "pub_date":
            datetime.datetime.now(),
            "country":
            "SI",
            "geoposition":
            Geoposition(46.05528, 14.51444),
            "location":
            "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
        }

        event = create_or_update_event(**event_data)
        event.status = 'APPROVED'
        event.save()

        response_json = client.get('/api/event/list/?format=json')
        response_data = json.loads(response_json.content)

        assert isinstance(response_data, list)
        assert event_data['title'] in response_json.content
コード例 #13
0
    def test_create_event_from_dict_with_all_fields(self):
        with open(local(__file__).dirname +
                  '/../../static/img/team/alja.jpg') as fp:
            io = StringIO.StringIO()
            io.write(fp.read())
            uploaded_picture = InMemoryUploadedFile(io, None, "alja.jpg",
                                                    "jpeg", io.len, None)
            uploaded_picture.seek(0)

        event_data = {
            "end_date": datetime.datetime.now(),
            "start_date": datetime.datetime.now(),
            "organizer": "some organizer",
            "creator": User.objects.filter(pk=1)[0],
            "title": "event title",
            "pub_date": datetime.datetime.now(),
            "country": "SI",
            "geoposition": Geoposition(46.05528, 14.51444),
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "tags": ["tag1", "tag2"],
            "picture": uploaded_picture
        }

        test_event = create_or_update_event(**event_data)
        self.assertEqual(2, test_event.pk)
        self.assertEqual("Ljubljana", test_event.location)
        self.assertEqual("46.05528", str(test_event.geoposition.latitude))
        self.assertIn("tag1", test_event.tags.names())
        self.assertIn("tag2", test_event.tags.names())

        assert 'event_picture/alja' in test_event.picture.path
コード例 #14
0
def test_create_event_in_each_listed_country(admin_user, db):
	all_countries = list_countries()

	for country in all_countries[2:]:
		country_code = country[1]
		country_name = country[0]

		event_data = {
			'audience': [3],
			'theme': [1,2],
			'contact_person': u'*****@*****.**',
			'country': country_code,
			'description': u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
			'event_url': u'',
			'location': country_name,
			'organizer': u'RailsGirls ' + country_name,
			"creator": admin_user,
			'start_date': datetime.datetime.now(),
			'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
			'tags': [u'css', u'html', u'web'],
			'title': u'RailsGirls ' + country_name,
		}

		test_event = create_or_update_event(event_id=None, **event_data)

		assert country_code == test_event.country.code

		test_event.delete()
コード例 #15
0
def test_create_event_in_each_listed_country(admin_user, db):
    all_countries = list_countries()

    for country in all_countries[2:]:
        country_code = country[1]
        country_name = country[0]

        event_data = {
            "audience": [3],
            "theme": [1, 2],
            "contact_person": u"*****@*****.**",
            "country": country_code,
            "description": u"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
            "event_url": u"",
            "location": country_name,
            "organizer": u"RailsGirls " + country_name,
            "creator": admin_user,
            "start_date": datetime.datetime.now(),
            "end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            "tags": [u"css", u"html", u"web"],
            "title": u"RailsGirls " + country_name,
        }

        test_event = create_or_update_event(event_id=None, **event_data)

        assert country_code == test_event.country.code

        test_event.delete()
コード例 #16
0
    def create_event(
            self,
            title="Event title",
            start_date=datetime.datetime.now() +
            datetime.timedelta(
                days=0,
                hours=3),
            end_date=datetime.datetime.now() +
            datetime.timedelta(
                days=1,
                hours=3),
        country_code="SI",
            status="PENDING"):

        event_data = {
            "end_date": start_date,
            "start_date": end_date,
            "organizer": "Test organizer",
            "creator": self.get_user(),
            "title": title,
            "pub_date": datetime.datetime.now(),
            "country": country_code,
            "geoposition": "46.05528,14.51444",
            "location": "Ljubljana",
            "audience": [1],
            "theme": [1],
            "status": status,
        }
        return create_or_update_event(**event_data)
コード例 #17
0
 def test_create_event_from_dictionary_with_missing_required_fields(self):
     with self.assertRaises(IntegrityError):
         event_data = {
             "end_date": datetime.datetime.now(),
             "start_date": datetime.datetime.now(),
             "organizer": "some organizer"
         }
         test_event = create_or_update_event(**event_data)
コード例 #18
0
	def test_create_event_from_dictionary_with_missing_required_fields(self):
		with self.assertRaises(IntegrityError):
			event_data = {
				"end_date": datetime.datetime.now(),
				"start_date": datetime.datetime.now(),
				"organizer": "some organizer"
			}
			test_event = create_or_update_event(**event_data)
コード例 #19
0
ファイル: events.py プロジェクト: FloorD/coding-events
def edit_event(request, event_id):
	event = get_event_by_id(event_id)
	initial = get_initial_data(event)

	event_data = {}

	if request.method == 'POST':
		event_form = AddEventForm(data=request.POST, files=request.FILES)
	else:
		event_form = AddEventForm(initial=initial)

	if event_form.is_valid():
		picture = request.FILES.get('picture', None)
		event_data = event_form.cleaned_data

		event_data['creator'] = request.user

		try:
			if picture:
				if picture.size > (256 * 1024):
					raise ImageSizeTooLargeException('Image size too large.')

				event_data['picture'] = process_image(picture)
			else:
				del event_data['picture']

			create_or_update_event(event_id, **event_data)

			return HttpResponseRedirect(reverse('web.view_event',
			                                    kwargs={'event_id': event.id, 'slug': event.slug}))

		except ImageSizeTooLargeException:
			messages.error(request, 'The image is just a bit too big for us (must be up to 256 kb). '
			                        'Please reduce your image size and try agin.')
		except UploadImageError as e:
			messages.error(request, e.message)
		
	return render_to_response(
		'pages/add_event.html', {
			'form': event_form,
			'address': event_data.get('location', None),
			'editing': True,
			'picture_url': event.picture,
		}, context_instance=RequestContext(request))
コード例 #20
0
 def test_create_event_from_dictionary_with_all_required_fields(self):
     event_data = {
         "end_date": datetime.datetime.now(),
         "start_date": datetime.datetime.now(),
         "organizer": "some organizer",
         "creator": User.objects.filter(pk=1)[0],
         "title": "event title",
         "pub_date": datetime.datetime.now(),
     }
     test_event = create_or_update_event(**event_data)
     self.assertEqual(2, test_event.pk)
     self.assertEqual("event title", test_event.title)
コード例 #21
0
	def test_create_event_from_dictionary_with_all_required_fields(self):
		event_data = {
				"end_date": datetime.datetime.now(),
				"start_date": datetime.datetime.now(),
				"organizer": "some organizer",
				"creator": User.objects.filter(pk=1)[0],
				"title": "event title",
				"pub_date": datetime.datetime.now(),
		}
		test_event = create_or_update_event(**event_data)
		self.assertEqual(2, test_event.pk)
		self.assertEqual("event title", test_event.title)
コード例 #22
0
def add_event(request):
    if request.method == 'POST':
        event_form = AddEventForm(data=request.POST, files=request.FILES)

        if event_form.is_valid():
            picture = request.FILES.get('picture', None)
            event_data = {}
            try:
                if picture:
                    if picture.size > (256 * 1024):
                        raise ImageSizeTooLargeException(
                            'Image size too large.')

                    event_data['picture'] = process_image(picture)

                event_data.update(event_form.cleaned_data)
                event_data['creator'] = request.user

                # checking if user entered a different email than in her
                # profile
                if request.user.email != event_data['user_email']:
                    update_user_email(request.user.id,
                                      event_data['user_email'])
                event_data.pop('user_email')

                event = create_or_update_event(**event_data)

                t = loader.get_template('alerts/thank_you.html')
                c = Context({
                    'event': event,
                })
                messages.info(request, t.render(c))

                return HttpResponseRedirect(
                    reverse('web.view_event', args=[event.pk, event.slug]))

            except ImageSizeTooLargeException:
                messages.error(
                    request, 'The image is just a bit too big for us. '
                    'Please reduce your image size and try agin.')
            except UploadImageError as e:
                messages.error(request, e.message)
    else:
        event_form = AddEventForm(
            initial={
                'user_email': request.user.email,
                'contact_person': request.user.email,
            })

    return render_to_response("pages/add_event.html", {
        'form': event_form,
    },
                              context_instance=RequestContext(request))
コード例 #23
0
def test_scoreboard_links_and_results(admin_user, db, client):

    test_country_name = "Slovenia"
    test_country_code = "SI"

    search_url = reverse("web.search_events") + "?country_code=%s&past=yes" % test_country_code

    event_data = {
        "audience": [3],
        "theme": [1, 2],
        "country": test_country_code,
        "description": u"Lorem ipsum dolor sit amet.",
        "location": test_country_name,
        "organizer": u"testko",
        "creator": admin_user,
        "start_date": datetime.datetime.now(),
        "end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        "title": u"Test Approved Event",
        "status": "APPROVED",
    }

    test_approved_event = create_or_update_event(event_id=None, **event_data)

    for country in count_approved_events_for_country():
        if country["country_code"] == test_country_code:
            event_count = country["events"]

    response = client.get(reverse("web.scoreboard"))

    # We're expecting to see this bit of HTML code with the right
    # search URL and the right count for events
    expected_result = """
	<span class="country-name">%s</span><p> is participating with </p>
	<a href="%s">
	<span class="event-number">%s event
	""" % (
        test_country_name,
        search_url,
        event_count,
    )

    expected_result = expected_result.replace("\t", "").replace("\n", "")
    scoreboard_content = response.content.replace("\t", "").replace("\n", "")

    # The search URL shown on scoreboard also has to match search results
    search_response = client.get(search_url)
    expected_search_result = '<div class="search-counter">%s event' % event_count

    assert expected_result in scoreboard_content
    assert expected_search_result in search_response.content

    test_approved_event.delete()
コード例 #24
0
ファイル: events.py プロジェクト: pijab/coding-events
def add_event(request):
	event_form = AddEvent()
	if request.method =="POST":
		event_form = AddEvent(data=request.POST, files=request.FILES)
		if event_form.is_valid():
			event_data = {}
			event_data.update(event_form.cleaned_data)
			event = create_or_update_event(**event_data)
			return render_to_response(
					'pages/thankyou.html',
					{'title': event.title, 'event_id': event.id},
					context_instance=RequestContext(request))
	context = {"form": event_form}
	return render_to_response("pages/add_event.html", context, context_instance=RequestContext(request))
コード例 #25
0
def test_scoreboard_links_and_results(admin_user, db, client):

    test_country_name = "Slovenia"
    test_country_code = "SI"

    search_url = (reverse('web.search_events') +
                  "?country_code=%s&amp;past=yes" % test_country_code)

    event_data = {
        'audience': [3],
        'theme': [1, 2],
        'country': test_country_code,
        'description': u'Lorem ipsum dolor sit amet.',
        'location': test_country_name,
        'organizer': u'testko',
        "creator": admin_user,
        'start_date': datetime.datetime.now(),
        'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        'title': u'Test Approved Event',
        'status': "APPROVED",
    }

    test_approved_event = create_or_update_event(event_id=None, **event_data)

    for country in count_approved_events_for_country():
        if country['country_code'] == test_country_code:
            event_count = country['events']

    response = client.get(reverse('web.scoreboard'))

    # We're expecting to see this bit of HTML code with the right
    # search URL and the right count for events
    expected_result = '''
	<span class="country-name">%s</span><p> is participating with </p>
	<a href="%s">
	<span class="event-number">%s event
	''' % (test_country_name, search_url, event_count)

    expected_result = expected_result.replace('\t', '').replace('\n', '')
    scoreboard_content = response.content.replace('\t', '').replace('\n', '')

    # The search URL shown on scoreboard also has to match search results
    search_response = client.get(search_url)
    expected_search_result = '<div class="search-counter">%s event' % event_count

    assert expected_result in scoreboard_content
    assert expected_search_result in search_response.content

    test_approved_event.delete()
コード例 #26
0
def test_scoreboard_links_and_results(admin_user, db, client):

	test_country_name = "Slovenia"
	test_country_code = "SI"

	search_url = (reverse('web.search_events') + 
				"?country_code=%s&amp;past=yes" % test_country_code)

	event_data = {
			'audience': [3],
			'theme': [1,2],
			'country': test_country_code,
			'description': u'Lorem ipsum dolor sit amet.',
			'location': test_country_name,
			'organizer': u'testko',
			"creator": admin_user,
			'start_date': datetime.datetime.now(),
			'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
			'title': u'Test Approved Event',
			'status':"APPROVED",
	}

	test_approved_event = create_or_update_event(event_id=None, **event_data)

	for country in count_approved_events_for_country():
		if country['country_code'] == test_country_code:
			event_count = country['events']

	response = client.get(reverse('web.scoreboard'))

	# We're expecting to see this bit of HTML code with the right
	# search URL and the right count for events
	expected_result = '''
	<span class="country-name">%s</span><p> is participating with </p>
	<a href="%s">
	<span class="event-number">%s event
	''' % (test_country_name, search_url, event_count)

	expected_result = expected_result.replace('\t', '').replace('\n', '')
	scoreboard_content = response.content.replace('\t', '').replace('\n', '')

	# The search URL shown on scoreboard also has to match search results
	search_response = client.get(search_url)
	expected_search_result = '<div class="search-counter">%s event' % event_count

	assert expected_result in scoreboard_content
	assert expected_search_result in search_response.content

	test_approved_event.delete()
コード例 #27
0
	def create_event(self, title="Event title", start_date=datetime.datetime.now() + datetime.timedelta(days=0, hours=3),
	                 end_date=datetime.datetime.now() + datetime.timedelta(days=1, hours=3),
	                 country_code="SI", status="PENDING",creator=User.objects.filter(pk=1)[0]):
		event_data = {
			"end_date": start_date,
			"start_date": end_date,
			"organizer": "Test organizer",
			"creator": User.objects.filter(pk=1)[0],
			"title": title,
			"pub_date": datetime.datetime.now(),
			"country": country_code,
			"geoposition": Geoposition(46.05528, 14.51444),
			"location": "Ljubljana",
			"audience": [1],
			"theme": [1],
		    "status": status,
		}
		return create_or_update_event(**event_data)
コード例 #28
0
def test_create_event_in_martinique_for_france(admin_user, db):
	event_data = {
		'audience': [3],
		'theme': [1,2],
		'contact_person': u'*****@*****.**',
		'country': u'FR',
		'description': u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
		'event_url': u'',
		'location': u'1011 Chemin rural No 8 Bis de Clemencin, Le Lamentin, Martinique',
		'organizer': u'RailsGirls Martinique',
		"creator": admin_user,
		'start_date': datetime.datetime.now(),
		'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
		'tags': [u'css', u'html', u'web'],
		'title': u'RailsGirls Martinique',
	}

	test_event = create_or_update_event(event_id=None, **event_data)

	assert "FR" == test_event.country.code
コード例 #29
0
	def test_create_event_from_dict_with_all_fields(self):
		event_data = {
			"end_date": datetime.datetime.now(),
			"start_date": datetime.datetime.now(),
			"organizer": "some organizer",
			"creator": User.objects.filter(pk=1)[0],
			"title": "event title",
			"pub_date": datetime.datetime.now(),
			"country": "SI",
			"geoposition": Geoposition(46.05528,14.51444),
			"location": "Ljubljana",
			"audience": [1],
			"theme": [1],
			"tags": ["tag1", "tag2"]
		}
		test_event = create_or_update_event(**event_data)
		self.assertEqual(2, test_event.pk)
		self.assertEqual("Ljubljana", test_event.location)
		self.assertEqual("46.05528", str(test_event.geoposition.latitude))
		self.assertIn("tag1", test_event.tags.names())
		self.assertIn("tag2", test_event.tags.names())
コード例 #30
0
ファイル: events.py プロジェクト: kyyberi/coding-events
def add_event(request):
    if request.method == "POST":
        event_form = AddEventForm(data=request.POST, files=request.FILES)

        if event_form.is_valid():
            picture = request.FILES.get("picture", None)
            event_data = {}
            try:
                if picture:
                    if picture.size > (256 * 1024):
                        raise ImageSizeTooLargeException("Image size too large.")

                    event_data["picture"] = process_image(picture)

                event_data.update(event_form.cleaned_data)
                event_data["creator"] = request.user

                # checking if user entered a different email than in her profile
                if request.user.email != event_data["user_email"]:
                    update_user_email(request.user.id, event_data["user_email"])
                event_data.pop("user_email")

                event = create_or_update_event(**event_data)

                t = loader.get_template("alerts/thank_you.html")
                c = Context({"event": event})
                messages.info(request, t.render(c))

                return HttpResponseRedirect(reverse("web.view_event", args=[event.pk, event.slug]))

            except ImageSizeTooLargeException:
                messages.error(
                    request, "The image is just a bit too big for us. " "Please reduce your image size and try agin."
                )
            except UploadImageError as e:
                messages.error(request, e.message)
    else:
        event_form = AddEventForm(initial={"user_email": request.user.email})

    return render_to_response("pages/add_event.html", {"form": event_form}, context_instance=RequestContext(request))
コード例 #31
0
 def test_create_or_update_event(self):
     test_event = create_or_update_event(event_id=1)
     self.assertEqual(1, test_event.id)
コード例 #32
0
def test_scoreboard_counter(admin_user, db):

	initial_counter = count_approved_events_for_country()

	# extra check to make sure the number of results matches 
	# the number of listed countries minus two custom entries
	all_countries = list_countries()
	assert len(initial_counter) == len(all_countries[2:])

	counted_events_before = 0

	for country in initial_counter:
		if country['country_code'] == 'SI':
			counted_events_before = country['events']

	# Adding one approved and one pending event in same country
	# the count for events for the country should increase by 1
	event_data = {
		'audience': [3],
		'theme': [1,2],
		'country': u'SI',
		'description': u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
		'location': u'Ljubljana, Slovenia',
		'organizer': u'testko',
		"creator": admin_user,
		'start_date': datetime.datetime.now(),
		'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
		'title': u'Test Approved Event',
		'status':"APPROVED",
	}

	test_approved_event = create_or_update_event(event_id=None, **event_data)

	event_data = {
		'audience': [3],
		'theme': [1,2],
		'country': u'SI',
		'description': u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
		'location': u'Ljubljana, Slovenia',
		'organizer': u'testko',
		"creator": admin_user,
		'start_date': datetime.datetime.now(),
		'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
		'title': u'Test Pending Event',
		'status':"PENDING",
	}

	test_pending_event = create_or_update_event(event_id=None, **event_data)

	# and one event from another country, which shouldn't increase the counter
	event_data = {
		'audience': [3],
		'theme': [1,2],
		'country': u'IT',
		'description': u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
		'location': u'Rome, Italy',
		'organizer': u'testko',
		"creator": admin_user,
		'start_date': datetime.datetime.now(),
		'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
		'title': u'Test Approved Event in other country',
		'status':"APPROVED",
	}

	test_other_country_event = create_or_update_event(event_id=None, **event_data)

	new_counter = count_approved_events_for_country()

	counted_events_after = 0
	country_score_after = 0

	for country in new_counter:
			if country['country_code'] == 'SI':
				counted_events_after = country['events']
				country_score_after = country['score']

	# An extra check with a direct DB query
	counted_events_query = Event.objects.filter(status='APPROVED').filter(country='SI').count()
	
	assert counted_events_after == counted_events_before + 1
	assert counted_events_after == counted_events_query

	assert country_score_after > 0 
	
	test_approved_event.delete()
	test_pending_event.delete()
	test_other_country_event.delete()
コード例 #33
0
	def test_create_event_with_title_only(self):
		with self.assertRaises(IntegrityError):
			test_event = create_or_update_event(title="event title")
コード例 #34
0
def test_list_active_countries(admin_user, db):
    """
    Verifies that only the countries with event which date is gte
    2014 are returned from the list_active_countries() function
    """

    events = [
        {
            # this country should be returned
            # because event is APPROVED and after 2014
            'location': u'Ljubljana, Slovenia',
            'country': 'SI',
            'organizer': u'testko',
            "creator": admin_user,
            'start_date': datetime.datetime.now(),
            'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            'title': u'Test Approved Event',
            'status': "APPROVED",
        },
        {
            # this country should be returned
            # for the same reasons
            'location': u'Paris, France',
            'country': 'FR',
            'organizer': u'testko',
            "creator": admin_user,
            'start_date': datetime.datetime.now(),
            'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            'title': u'Test Pending Event',
            'status': "APPROVED",
        },
        {
            # the same country should be returned only once
            'location': u'Ljubljana, Slovenia',
            'country': 'SI',
            'organizer': u'testko',
            "creator": admin_user,
            'start_date': datetime.datetime.now(),
            'end_date': datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            'title': u'Test Pending Event',
            'status': "APPROVED",
        },
        {
            # this country shouldn't be returned
            # because event start_date is < 2014
            'location': u'Rome, Italy',
            'country': 'IT',
            'organizer': u'testko',
            "creator": admin_user,
            'start_date': datetime.datetime(2013, 1, 1, 12, 00),
            'end_date': datetime.datetime(2013, 1, 1, 12, 00) + datetime.timedelta(days=3, hours=3),
            'title': u'Test Approved Event in other country',
            'status': "APPROVED",
        }
    ]

    # insert the listed events
    for event_data in events:
        create_or_update_event(event_id=None, **event_data)

    # retrieve the active countries from db
    active_countries = list_active_countries()

    # there should be only two active countries
    assert len(active_countries) == 2

    # and should be those two
    assert ('Slovenia', 'SI') in active_countries
    assert ('France', 'FR') in active_countries

    # if listing works, results are tuples ('country_name', 'country_code')
    # country_code should be a string with 2 characters
    for country in active_countries:
        assert len(country[1]) == 2
コード例 #35
0
 def test_create_event_with_organizer_only(self):
     with self.assertRaises(IntegrityError):
         event_data = {"organizer": "asdasd"}
         test_event = create_or_update_event(**event_data)
コード例 #36
0
def test_scoreboard_counter(admin_user, db):

    initial_counter = count_approved_events_for_country()

    # extra check to make sure the number of results matches
    # the number of listed countries minus two custom entries
    all_countries = list_countries()
    assert len(initial_counter) == len(all_countries[2:])

    counted_events_before = 0

    for country in initial_counter:
        if country["country_code"] == "SI":
            counted_events_before = country["events"]

            # Adding one approved and one pending event in same country
            # the count for events for the country should increase by 1
    event_data = {
        "audience": [3],
        "theme": [1, 2],
        "country": u"SI",
        "description": u"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
        "location": u"Ljubljana, Slovenia",
        "organizer": u"testko",
        "creator": admin_user,
        "start_date": datetime.datetime.now(),
        "end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        "title": u"Test Approved Event",
        "status": "APPROVED",
    }

    test_approved_event = create_or_update_event(event_id=None, **event_data)

    event_data = {
        "audience": [3],
        "theme": [1, 2],
        "country": u"SI",
        "description": u"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.",
        "location": u"Ljubljana, Slovenia",
        "organizer": u"testko",
        "creator": admin_user,
        "start_date": datetime.datetime.now(),
        "end_date": datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        "title": u"Test Pending Event",
        "status": "PENDING",
    }

    test_pending_event = create_or_update_event(event_id=None, **event_data)

    new_counter = count_approved_events_for_country()

    counted_events_after = 0
    country_score_after = 0

    for country in new_counter:
        if country["country_code"] == "SI":
            counted_events_after = country["events"]
            country_score_after = country["score"]

            # An extra check with a direct DB query
    counted_events_query = Event.objects.filter(status="APPROVED").filter(country="SI").count()

    assert counted_events_after == counted_events_before + 1
    assert counted_events_after == counted_events_query

    assert country_score_after > 0

    test_approved_event.delete()
    test_pending_event.delete()
コード例 #37
0
	def test_create_event_with_start_end_dates_only(self):
		with self.assertRaises(IntegrityError):
			test_event = create_or_update_event(start_date=datetime.datetime.now(), end_date=datetime.datetime.now())
コード例 #38
0
	def test_create_event_with_organizer_only(self):
		with self.assertRaises(IntegrityError):
			event_data = {"organizer":"asdasd"}
			test_event = create_or_update_event(**event_data)
コード例 #39
0
 def test_create_event_without_args(self):
     with self.assertRaises(IntegrityError):
         test_event = create_or_update_event()
コード例 #40
0
 def test_create_event_with_title_only(self):
     with self.assertRaises(IntegrityError):
         test_event = create_or_update_event(title="event title")
コード例 #41
0
def test_scoreboard_counter(admin_user, db):

    initial_counter = count_approved_events_for_country()

    # extra check to make sure the number of results matches
    # the number of active countries
    assert len(initial_counter) == 0

    counted_events_before = 0

    for country in initial_counter:
        if country['country_code'] == 'SI':
            counted_events_before = country['events']

    # Adding one approved and one pending event in same country
    # the count for events for the country should increase by 1
    event_data = {
        'audience': [3],
        'theme': [1, 2],
        'country': u'SI',
        'description':
        u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
        'location': u'Ljubljana, Slovenia',
        'organizer': u'testko',
        "creator": admin_user,
        'start_date': datetime.datetime.now(),
        'end_date':
        datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        'title': u'Test Approved Event',
        'status': "APPROVED",
    }

    test_approved_event = create_or_update_event(event_id=None, **event_data)

    event_data = {
        'audience': [3],
        'theme': [1, 2],
        'country': u'SI',
        'description':
        u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
        'location': u'Ljubljana, Slovenia',
        'organizer': u'testko',
        "creator": admin_user,
        'start_date': datetime.datetime.now(),
        'end_date':
        datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        'title': u'Test Pending Event',
        'status': "PENDING",
    }

    test_pending_event = create_or_update_event(event_id=None, **event_data)

    # and one event from another country, which shouldn't increase the counter
    event_data = {
        'audience': [3],
        'theme': [1, 2],
        'country': u'IT',
        'description':
        u'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\r\ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,\r\nquis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo\r\nconsequat. Duis aute irure dolor in reprehenderit in voluptate velit esse\r\ncillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non\r\nproident, sunt in culpa qui officia deserunt mollit anim id est laborum.',
        'location': u'Rome, Italy',
        'organizer': u'testko',
        "creator": admin_user,
        'start_date': datetime.datetime.now(),
        'end_date':
        datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
        'title': u'Test Approved Event in other country',
        'status': "APPROVED",
    }

    test_other_country_event = create_or_update_event(event_id=None,
                                                      **event_data)

    new_counter = count_approved_events_for_country()

    counted_events_after = 0
    country_score_after = 0

    for country in new_counter:
        if country['country_code'] == 'SI':
            counted_events_after = country['events']
            country_score_after = country['score']

    # An extra check with a direct DB query
    counted_events_query = Event.objects.filter(status='APPROVED').filter(
        country='SI').count()

    assert counted_events_after == counted_events_before + 1
    assert counted_events_after == counted_events_query

    assert country_score_after > 0

    test_approved_event.delete()
    test_pending_event.delete()
    test_other_country_event.delete()
コード例 #42
0
 def test_create_event_with_start_end_dates_only(self):
     with self.assertRaises(IntegrityError):
         test_event = create_or_update_event(
             start_date=datetime.datetime.now(),
             end_date=datetime.datetime.now())
コード例 #43
0
def test_list_active_countries(admin_user, db):
    """
    Verifies that only the countries with event which date is gte
    2014 are returned from the list_active_countries() function
    """

    events = [
        {
            # this country should be returned
            # because event is APPROVED and after 2014
            'location':
            u'Ljubljana, Slovenia',
            'country':
            'SI',
            'organizer':
            u'testko',
            "creator":
            admin_user,
            'start_date':
            datetime.datetime.now(),
            'end_date':
            datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            'title':
            u'Test Approved Event',
            'status':
            "APPROVED",
        },
        {
            # this country should be returned
            # for the same reasons
            'location':
            u'Paris, France',
            'country':
            'FR',
            'organizer':
            u'testko',
            "creator":
            admin_user,
            'start_date':
            datetime.datetime.now(),
            'end_date':
            datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            'title':
            u'Test Pending Event',
            'status':
            "APPROVED",
        },
        {
            # the same country should be returned only once
            'location':
            u'Ljubljana, Slovenia',
            'country':
            'SI',
            'organizer':
            u'testko',
            "creator":
            admin_user,
            'start_date':
            datetime.datetime.now(),
            'end_date':
            datetime.datetime.now() + datetime.timedelta(days=3, hours=3),
            'title':
            u'Test Pending Event',
            'status':
            "APPROVED",
        },
        {
            # this country shouldn't be returned
            # because event start_date is < 2014
            'location':
            u'Rome, Italy',
            'country':
            'IT',
            'organizer':
            u'testko',
            "creator":
            admin_user,
            'start_date':
            datetime.datetime(2013, 1, 1, 12, 00),
            'end_date':
            datetime.datetime(2013, 1, 1, 12, 00) +
            datetime.timedelta(days=3, hours=3),
            'title':
            u'Test Approved Event in other country',
            'status':
            "APPROVED",
        }
    ]

    # insert the listed events
    for event_data in events:
        create_or_update_event(event_id=None, **event_data)

    # retrieve the active countries from db
    active_countries = list_active_countries()

    # there should be only two active countries
    assert len(active_countries) == 2

    # and should be those two
    assert ('Slovenia', 'SI') in active_countries
    assert ('France', 'FR') in active_countries

    # if listing works, results are tuples ('country_name', 'country_code')
    # country_code should be a string with 2 characters
    for country in active_countries:
        assert len(country[1]) == 2
コード例 #44
0
	def test_create_or_update_event(self):
		test_event = create_or_update_event(event_id=1)
		self.assertEqual(1, test_event.id)
コード例 #45
0
	def test_create_event_without_args(self):
		with self.assertRaises(IntegrityError):
			test_event = create_or_update_event()