Skip to content

Commit

Permalink
Merge pull request #329 from ExCiteS/mstevens-symbols
Browse files Browse the repository at this point in the history
v0.8.5
  • Loading branch information
mstevens83 committed Dec 21, 2015
2 parents c1cd169 + fdc51f3 commit 262438f
Show file tree
Hide file tree
Showing 12 changed files with 111 additions and 24 deletions.
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('categories', '0013_auto_20150130_1440'),
]

operations = [
migrations.AddField(
model_name='lookupvalue',
name='symbol',
field=models.ImageField(max_length=500, null=True, upload_to=b'symbols'),
),
migrations.AlterField(
model_name='category',
name='symbol',
field=models.ImageField(max_length=500, null=True, upload_to=b'symbols'),
),
]
3 changes: 2 additions & 1 deletion geokey/categories/models.py
Expand Up @@ -40,7 +40,7 @@ class Category(models.Model):
max_length=20
)
colour = models.TextField(default='#0033ff')
symbol = models.ImageField(upload_to='symbols', null=True)
symbol = models.ImageField(upload_to='symbols', null=True, max_length=500)

objects = CategoryManager()

Expand Down Expand Up @@ -837,6 +837,7 @@ class LookupValue(models.Model):
Stores a single lookup value.
"""
name = models.CharField(max_length=100)
symbol = models.ImageField(upload_to='symbols', null=True, max_length=500)
field = models.ForeignKey(LookupField, related_name='lookupvalues')
status = models.CharField(
choices=STATUS,
Expand Down
2 changes: 2 additions & 0 deletions geokey/categories/tests/model_factories.py
Expand Up @@ -2,6 +2,7 @@

from geokey.projects.tests.model_factories import ProjectFactory
from geokey.users.tests.model_factories import UserFactory
from geokey.core.tests.helpers.image_helpers import get_image

from ..models import (
Category, TextField, NumericField, DateTimeField, DateField, TimeField,
Expand Down Expand Up @@ -110,6 +111,7 @@ class Meta:
model = LookupValue

name = factory.Sequence(lambda n: "lookupfield %s" % n)
symbol = get_image(file_name='test_lookup_value_symbol.png')
field = factory.SubFactory(LookupFieldFactory)
status = 'active'

Expand Down
7 changes: 7 additions & 0 deletions geokey/categories/tests/test_manager.py
Expand Up @@ -443,6 +443,13 @@ def test_admin_access_active_field_with_non_member(self):


class LookupManagerTest(TestCase):
def tearDown(self):
for lookup_value in LookupValue.objects.all():
try:
lookup_value.symbol.delete()
except BaseException:
pass

def test(self):
LookupValueFactory.create_batch(5, **{'status': 'active'})
LookupValueFactory.create_batch(5, **{'status': 'deleted'})
Expand Down
10 changes: 9 additions & 1 deletion geokey/categories/tests/test_model.py
@@ -1,11 +1,12 @@
import json

from django.test import TestCase

from nose.tools import raises

from geokey.core.exceptions import InputError

from ..models import Field, Category
from ..models import Field, Category, LookupValue

from .model_factories import (
TextFieldFactory, NumericFieldFactory, DateTimeFieldFactory,
Expand Down Expand Up @@ -451,6 +452,13 @@ def test_get_filter(self):


class SingleLookupFieldTest(TestCase):
def tearDown(self):
for lookup_value in LookupValue.objects.all():
try:
lookup_value.symbol.delete()
except BaseException:
pass

def test_create_lookupfield(self):
category = CategoryFactory()
field = Field.create(
Expand Down
48 changes: 45 additions & 3 deletions geokey/categories/tests/test_views.py
@@ -1,5 +1,6 @@
# -*- coding: utf-8 -*-

import os
import json

from django.test import TestCase, RequestFactory
Expand All @@ -10,7 +11,7 @@
from rest_framework import status

from geokey.projects.tests.model_factories import UserFactory, ProjectFactory
from geokey.contributions.tests.media.model_factories import get_image
from geokey.core.tests.helpers.image_helpers import get_image

from .model_factories import (
CategoryFactory, TextFieldFactory, NumericFieldFactory,
Expand Down Expand Up @@ -212,10 +213,30 @@ def setUp(self):
self.category = CategoryFactory.create(
**{
'project': self.project,
'symbol': get_image()
'symbol': get_image(file_name='test_category_symbol.png')
}
)

def delete_symbol(self, category):
# No idea why this has to be so hard, but this is the only way I got it
# to work. Doing category.symbol.delete() does *not* work consistently.
symbol = category.symbol
try:
symbol.file.close()
except BaseException:
pass
try:
symbol.storage.delete(symbol.path)
except BaseException:
pass

def tearDown(self):
self.delete_symbol(self.category)
try:
self.delete_symbol(Category.objects.get(pk=self.category.id))
except Category.DoesNotExist:
pass

def get(self, user):
view = CategoryDisplay.as_view()
url = reverse('admin:category_display', kwargs={
Expand All @@ -232,7 +253,7 @@ def get(self, user):
def post(self, user, clear_symbol='false'):
self.data = {
'colour': '#222222',
'symbol': get_image() if clear_symbol == 'false' else None,
'symbol': get_image(file_name='test_category_symbol.png') if clear_symbol == 'false' else None,
'clear-symbol': clear_symbol
}
view = CategoryDisplay.as_view()
Expand Down Expand Up @@ -1308,6 +1329,13 @@ def test_update_numericfield_description_with_admin(self):


class AddLookupValueTest(TestCase):
def tearDown(self):
for lookup_value in LookupValue.objects.all():
try:
lookup_value.symbol.delete()
except BaseException, e:
pass

def setUp(self):
self.factory = APIRequestFactory()
self.admin = UserFactory.create()
Expand Down Expand Up @@ -1408,6 +1436,13 @@ def setUp(self):
'status': 'active'
})

def tearDown(self):
for lookup_value in LookupValue.objects.all():
try:
lookup_value.symbol.delete()
except BaseException, e:
pass

def test_update_lookupvalue_with_admin(self):
lookup_field = LookupFieldFactory(**{
'category': self.active_type
Expand Down Expand Up @@ -1875,6 +1910,13 @@ def setUp(self):
'category': self.category
})

def tearDown(self):
for lookup_value in LookupValue.objects.all():
try:
lookup_value.symbol.delete()
except BaseException, e:
pass

def _get(self, user):
url = reverse(
'api:category',
Expand Down
17 changes: 1 addition & 16 deletions geokey/contributions/tests/media/model_factories.py
@@ -1,24 +1,9 @@
import factory
from PIL import Image
from StringIO import StringIO

from django.core.files.base import ContentFile

from geokey.users.tests.model_factories import UserFactory
from geokey.contributions.tests.model_factories import ObservationFactory
from geokey.contributions.models import ImageFile, VideoFile


def get_image(file_name='test.png', width=200, height=200):
image_file = StringIO()
image = Image.new('RGBA', size=(width, height), color=(255, 0, 255))
image.save(image_file, 'png')
image_file.seek(0)

the_file = ContentFile(image_file.read(), file_name)
the_file.content_type = 'image/png'

return the_file
from geokey.core.tests.helpers.image_helpers import get_image


class ImageFileFactory(factory.django.DjangoModelFactory):
Expand Down
3 changes: 2 additions & 1 deletion geokey/contributions/tests/media/test_manager.py
Expand Up @@ -11,11 +11,12 @@
from nose.tools import raises

from geokey.core.exceptions import FileTypeError
from geokey.core.tests.helpers.image_helpers import get_image
from geokey.contributions.models import MediaFile

from geokey.contributions.tests.model_factories import ObservationFactory
from geokey.users.tests.model_factories import UserFactory
from .model_factories import ImageFileFactory, get_image
from .model_factories import ImageFileFactory


class ModelManagerTest(TestCase):
Expand Down
3 changes: 2 additions & 1 deletion geokey/contributions/tests/media/test_views.py
Expand Up @@ -17,6 +17,7 @@
from rest_framework.renderers import JSONRenderer

from geokey.core.exceptions import MalformedRequestData
from geokey.core.tests.helpers.image_helpers import get_image
from geokey.projects.tests.model_factories import UserFactory, ProjectFactory
from geokey.contributions.models import MediaFile
from geokey.users.models import User
Expand All @@ -27,7 +28,7 @@
)

from ..model_factories import ObservationFactory
from .model_factories import ImageFileFactory, get_image
from .model_factories import ImageFileFactory


class MediaFileAbstractListAPIViewTest(TestCase):
Expand Down
Empty file.
16 changes: 16 additions & 0 deletions geokey/core/tests/helpers/image_helpers.py
@@ -0,0 +1,16 @@
from PIL import Image
from StringIO import StringIO

from django.core.files.base import ContentFile


def get_image(file_name='test.png', width=200, height=200):
image_file = StringIO()
image = Image.new('RGBA', size=(width, height), color=(255, 0, 255))
image.save(image_file, 'png')
image_file.seek(0)

the_file = ContentFile(image_file.read(), file_name)
the_file.content_type = 'image/png'

return the_file
2 changes: 1 addition & 1 deletion geokey/version.py
@@ -1,4 +1,4 @@
VERSION = (0, 8, 4, 'final', 0)
VERSION = (0, 8, 5, 'final', 0)


def get_version():
Expand Down

0 comments on commit 262438f

Please sign in to comment.