Esempio n. 1
0
    def setUp(self):
        self.toy_release_date = timezone.make_aware(
            datetime.now(), timezone.get_current_timezone())
        self.toy1 = Toy(name='Snoopy talking action figure',
                        description='Snoopy speaks five languages',
                        release_date=self.toy_release_date,
                        toy_category='Action figures',
                        was_included_in_home=True)
        self.toy1.save()

        self.toy2_release_date = timezone.make_aware(
            datetime.now(), timezone.get_current_timezone())
        self.toy2 = Toy(name='Hawaiian Barbie',
                        description='Barbie loves Hawaii',
                        release_date=self.toy2_release_date,
                        toy_category='Doll',
                        was_included_in_home=True)
        self.toy2.save()

        self.serializer_for_toy1 = ToySerializer(self.toy1)
        self.serializer_for_toy2 = ToySerializer(self.toy2)

        self.json_string_for_new_toy = '{"name":"Clash Royale play set",' \
                                        '"description":"6 figures from Clash Royale", ' \
                                        '"release_date":"2017-10-09T12:10:00.776594Z",' \
                                        '"toy_category":"Playset","was_included_in_home":false}'

        # set client API
        self.client = APIClient()

        # initiation data for post
        self.data_post = [
            {
                "name": "Skater ska",
                "description": "Hero skater",
                "release_date": self.toy1.release_date.isoformat(),
                "toy_category": "Action figures",
                "was_included_in_home": False
            },
            {
                "name": "PvZ 2 puzzle",
                "description": "Plants vs Zombies 2 puzzle",
                "toy_category": "Puzzle",
                "was_included_in_home": False,
                "release_date": self.toy1.release_date.isoformat()
            },
        ]

        self.data_toy1_candidate = {
            "description": "Plants vs Zombies 3 puzzle",
            "name": "PvZ 3 puzzle",
            "pk": 1,
            "release_date": self.toy1.release_date.isoformat(),
            "toy_category": "Puzzles & Games",
            "was_included_in_home": False
        }
Esempio n. 2
0
def image(request,oid,name):
    toy = Toy.objects(pk=oid).first()
    for image in toy.images:
        if str(image.image.name) == name:
            return HttpResponse(image.image.read(),
                        content_type=image.image.content_type,
                        )
Esempio n. 3
0
def gcode(request,oid,name):
    toy = Toy.objects(pk=oid).first()
    for gcode_file in toy.gcode:
        print gcode_file.data
        if str(gcode_file.data.name) == name:
            return HttpResponse(gcode_file.data.read(),
                        content_type=gcode_file.data.content_type,
                        )
Esempio n. 4
0
def detail(request,oid):
    toy = Toy.objects(pk=oid).first()
    images = []
    thumbnail = []
    gcodes = []
    thumbnail = get_thumbnail(toy)
    for image in toy.images:
        image_url = "api/image/"+str(toy.id)+"/"+str(image.image.name)
        images.append(image_url)
    for gcode in toy.gcode:
        gcode_url = "api/gcode/"+str(toy.id)+"/"+str(gcode.data.name)
        gcodes.append(gcode_url)
    toyDic = json.loads(toy.to_json())
#    toyDic = {"name":toy.name,"image":images,"thumbnail":thumbnail,  "gcode":gcodes}
    toyDic['images'] = images
#    toyDic['images'] = json.dumps(images)
    toyDic['thumbnail'] = thumbnail
    toyDic['gcode'] = gcodes
    toyDic['catalog'] = str(toy.catalog.id)
    del toyDic['_id']
    toyJson = json.dumps(toyDic)
    return HttpResponse(toyJson)
Esempio n. 5
0
Author: Gaston C. Hillar - Twitter.com/gastonhillar
Publisher: Packt Publishing Ltd. - http://www.packtpub.com
"""
from datetime import datetime
from django.utils import timezone
from django.utils.six import BytesIO
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from toys.models import Toy
from toys.serializers import ToySerializer

toy_release_date = timezone.make_aware(datetime.now(),
                                       timezone.get_current_timezone())
toy1 = Toy(name='Snoopy talking action figure',
           description='Snoopy speaks five languages',
           release_date=toy_release_date,
           toy_category='Action figures',
           was_included_in_home=False)
toy1.save()
toy2 = Toy(name='Hawaiian Barbie',
           description='Barbie loves Hawaii',
           release_date=toy_release_date,
           toy_category='Dolls',
           was_included_in_home=True)
toy2.save()

print(toy1.pk)
print(toy1.name)
print(toy1.created)
print(toy1.was_included_in_home)
print(toy2.pk)
Esempio n. 6
0
# serializers_test.py

from datetime import datetime
from django.utils import timezone
from django.utils.six import BytesIO
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from toys.models import Toy
from toys.serializers import ToySerializer

toy_release_date = timezone.make_aware(datetime.now(),
                                       timezone.get_current_timezone())
toy1 = Toy(name='Snoopy talking action figure',
           description='Snoopy speaks five languages',
           release_date=toy_release_date,
           toy_category='Action figures',
           was_included_in_home=False)
toy1.save()

serializer_for_toy1 = ToySerializer(toy1)
print(serializer_for_toy1.data)
json_renderer = JSONRenderer()
toy1_rendered_into_json = json_renderer.render(serializer_for_toy1.data)
print(toy1_rendered_into_json)

json_string_for_new_toy = '{"name":"Clash Royale play set","description":"6 figures from Clash Royale", "release_date":"2017-10-09T12:10:00.776594Z","toy_category":"Playset","was_included_in_home":false}'
json_bytes_for_new_toy = bytes(json_string_for_new_toy, encoding="UTF-8")
stream_for_new_toy = BytesIO(json_bytes_for_new_toy)
parser = JSONParser()
parsed_new_toy = parser.parse(stream_for_new_toy)
Esempio n. 7
0
def catalog(request,catalogId):
    print "catalogId is "+catalogId
    toys = Toy.objects(catalog=catalogId).all()
    toys_json = get_toy_list(toys)
    return HttpResponse(toys_json)
Esempio n. 8
0
class ToyTest(TestCase):
    def setUp(self):
        self.toy_release_date = timezone.make_aware(
            datetime.now(), timezone.get_current_timezone())
        self.toy1 = Toy(name='Snoopy talking action figure',
                        description='Snoopy speaks five languages',
                        release_date=self.toy_release_date,
                        toy_category='Action figures',
                        was_included_in_home=True)
        self.toy1.save()

        self.toy2_release_date = timezone.make_aware(
            datetime.now(), timezone.get_current_timezone())
        self.toy2 = Toy(name='Hawaiian Barbie',
                        description='Barbie loves Hawaii',
                        release_date=self.toy2_release_date,
                        toy_category='Doll',
                        was_included_in_home=True)
        self.toy2.save()

        self.serializer_for_toy1 = ToySerializer(self.toy1)
        self.serializer_for_toy2 = ToySerializer(self.toy2)

        self.json_string_for_new_toy = '{"name":"Clash Royale play set",' \
                                        '"description":"6 figures from Clash Royale", ' \
                                        '"release_date":"2017-10-09T12:10:00.776594Z",' \
                                        '"toy_category":"Playset","was_included_in_home":false}'

        # set client API
        self.client = APIClient()

        # initiation data for post
        self.data_post = [
            {
                "name": "Skater ska",
                "description": "Hero skater",
                "release_date": self.toy1.release_date.isoformat(),
                "toy_category": "Action figures",
                "was_included_in_home": False
            },
            {
                "name": "PvZ 2 puzzle",
                "description": "Plants vs Zombies 2 puzzle",
                "toy_category": "Puzzle",
                "was_included_in_home": False,
                "release_date": self.toy1.release_date.isoformat()
            },
        ]

        self.data_toy1_candidate = {
            "description": "Plants vs Zombies 3 puzzle",
            "name": "PvZ 3 puzzle",
            "pk": 1,
            "release_date": self.toy1.release_date.isoformat(),
            "toy_category": "Puzzles & Games",
            "was_included_in_home": False
        }

    def test_create_toy(self):
        self.assertEqual(self.toy1.pk, 1)
        self.assertEqual(self.toy1.name, 'Snoopy talking action figure')
        self.assertTrue(self.toy1.was_included_in_home, )
        self.assertEqual(self.toy2.pk, 2)
        self.assertEqual(self.toy2.name, 'Hawaiian Barbie')
        self.assertTrue(self.toy2.was_included_in_home)

    def test_serializer(self):
        self.assertDictEqual(
            {
                'pk': 1,
                'name': 'Snoopy talking action figure',
                'description': 'Snoopy speaks five languages',
                'release_date': self.toy1.release_date.isoformat(),
                'toy_category': 'Action figures',
                'was_included_in_home': True
            }, self.serializer_for_toy1.data, 'ok')

        self.assertDictEqual(
            {
                'pk': 2,
                'name': 'Hawaiian Barbie',
                'description': 'Barbie loves Hawaii',
                'release_date': self.toy2.release_date.isoformat(),
                'toy_category': 'Doll',
                'was_included_in_home': True
            }, self.serializer_for_toy2.data, 'ok')

    def test_json(self):
        json_renderer = JSONRenderer()
        toy1_rendered_into_json = json_renderer.render(
            self.serializer_for_toy1.data)
        toy2_rendered_into_json = json_renderer.render(
            self.serializer_for_toy2.data)

        data_toy1 = {
            "pk": 1,
            "name": "Snoopy talking action figure",
            "description": "Snoopy speaks five languages",
            "release_date": self.toy1.release_date.isoformat(),
            "toy_category": "Action figures",
            "was_included_in_home": True
        }

        data_toy2 = {
            "pk": 2,
            "name": "Hawaiian Barbie",
            "description": "Barbie loves Hawaii",
            "release_date": self.toy2.release_date.isoformat(),
            "toy_category": "Doll",
            "was_included_in_home": True
        }

        self.assertJSONEqual(json.dumps(data_toy1),
                             json.loads(toy1_rendered_into_json))
        self.assertJSONEqual(json.dumps(data_toy2),
                             json.loads(toy2_rendered_into_json))

    def test_json_parse(self):
        json_bytes_for_new_toy = bytes(self.json_string_for_new_toy,
                                       encoding="UTF-8")
        stream_for_new_toy = BytesIO(json_bytes_for_new_toy)
        parser = JSONParser()
        parsed_new_toy = parser.parse(stream_for_new_toy)
        self.assertDictEqual(parsed_new_toy,
                             json.loads(self.json_string_for_new_toy))

    def test_create_from_json(self):
        json_bytes_for_new_toy = bytes(self.json_string_for_new_toy,
                                       encoding="UTF-8")
        stream_for_new_toy = BytesIO(json_bytes_for_new_toy)
        parser = JSONParser()
        parsed_new_toy = parser.parse(stream_for_new_toy)
        new_toy_serializer = ToySerializer(data=parsed_new_toy)
        if new_toy_serializer.is_valid():
            toy3 = new_toy_serializer.save()
            self.assertEqual(toy3.name, 'Clash Royale play set')

    def test_rest_post_get(self):
        for item_data in self.data_post:
            self.client.post(
                reverse_lazy('toys:home'),
                data=json.dumps(item_data),
                content_type='application/json',
            )

        self.assertEqual(
            len(self.client.get(reverse_lazy('toys:home')).json()), 4)

        self.assertEqual(
            self.client.get(reverse_lazy('toys:detail',
                                         kwargs={'pk': 3})).json()['name'],
            "Skater ska")

        self.assertEqual(
            self.client.get(reverse_lazy('toys:detail',
                                         kwargs={'pk': 4})).json()['name'],
            "PvZ 2 puzzle")

        # debug gwt json
        # print(client.get('/toys/').json())

    def test_rest_put(self):
        self.client.get(reverse_lazy('toys:detail', kwargs={'pk': 1})).json()

        self.client.put(reverse_lazy('toys:detail', kwargs={'pk': 1}),
                        data=json.dumps(self.data_toy1_candidate),
                        content_type='application/json')
        self.assertEqual(
            self.client.get(reverse_lazy('toys:detail',
                                         kwargs={'pk': 1})).json()['name'],
            'PvZ 3 puzzle')

    def test_rest_delete(self):
        self.client.delete(reverse_lazy('toys:detail', kwargs={'pk': 2}))
        try:
            self.client.get(reverse_lazy('toys:detail', kwargs={'pk':
                                                                2})).json()
            raise AssertionError
        except TypeError:
            pass

    def test_cbv_post_get(self):
        """
        test post and get
        with class based view
        :return:
        """
        data_get = self.client.get(reverse_lazy('toys:cbv_home')).json()
        self.assertEqual(len(data_get), 2, "GET class based FAILED")

        for item in self.data_post:
            self.client.post(
                reverse_lazy('toys:cbv_home'),
                data=json.dumps(item),
                content_type='application/json',
            )

        data_get = self.client.get(reverse_lazy('toys:cbv_home')).json()
        self.assertEqual(len(data_get), 4, "POST class based FAILED")

    def test_cbv_put_delete(self):
        self.client.put(reverse_lazy('toys:cbv_detail', kwargs={'pk': 1}),
                        data=json.dumps(self.data_toy1_candidate),
                        content_type='application/json')

        self.assertEqual(
            self.client.get(reverse_lazy('toys:cbv_detail',
                                         kwargs={'pk': 1})).json()['name'],
            'PvZ 3 puzzle')

        self.client.delete(reverse_lazy('toys:cbv_detail', kwargs={'pk': 1}))
        self.assertEqual(
            self.client.get(reverse_lazy('toys:cbv_detail',
                                         kwargs={'pk': 1})).status_code, 404)
        self.assertEqual(
            self.client.get(reverse_lazy('toys:cbv_detail',
                                         kwargs={'pk': 1})).json()['detail'],
            'Not found.')

    def test_mixin_post_get(self):
        data_get = self.client.get(reverse_lazy('toys:cbv_mixin_home'))
        self.assertEqual(len(data_get.json()), 4,
                         'Failed get data class based mixin')

        for item in self.data_post:
            self.client.post(
                reverse_lazy('toys:cbv_mixin_home'),
                data=json.dumps(item),
                content_type='application/json',
            )

        data_get = self.client.get(reverse_lazy('toys:cbv_mixin_home'))
        self.assertEqual(len(data_get.json()), 4,
                         'Failed POST data class based mixin')

    def test_mixin_put_delete(self):
        self.client.put(reverse_lazy('toys:cbv_mixin_detail', kwargs={'pk':
                                                                      1}),
                        data=json.dumps(self.data_toy1_candidate),
                        content_type='application/json')

        self.assertEqual(
            self.client.get(
                reverse_lazy('toys:cbv_mixin_detail',
                             kwargs={'pk': 1})).json()['name'], 'PvZ 3 puzzle')

        self.client.delete(
            reverse_lazy('toys:cbv_mixin_detail', kwargs={'pk': 1}))
        self.assertEqual(
            self.client.get(reverse_lazy('toys:detail',
                                         kwargs={'pk': 1})).status_code, 404)
        self.assertEqual(
            self.client.get(
                reverse_lazy('toys:cbv_mixin_detail',
                             kwargs={'pk': 1})).json()['detail'], 'Not found.')

    def test_generic_post_get(self):
        data_get = self.client.get(reverse_lazy('toys:cbv_generic_home'))
        self.assertEqual(len(data_get.json()), 4,
                         'Failed get data GENERIC class based mixin')

        for item in self.data_post:
            self.client.post(
                reverse_lazy('toys:cbv_generic_home'),
                data=json.dumps(item),
                content_type='application/json',
            )

        data_get = self.client.get(reverse_lazy('toys:cbv_generic_home'))
        self.assertEqual(len(data_get.json()), 4,
                         'Failed POST data GENERIC class based mixin')

    def test_generic_put_delete(self):
        self.client.put(reverse_lazy('toys:cbv_generic_detail',
                                     kwargs={'pk': 1}),
                        data=json.dumps(self.data_toy1_candidate),
                        content_type='application/json')

        self.assertEqual(
            self.client.get(
                reverse_lazy('toys:cbv_generic_detail',
                             kwargs={'pk': 1})).json()['name'], 'PvZ 3 puzzle')

        self.client.delete(
            reverse_lazy('toys:cbv_generic_detail', kwargs={'pk': 1}))
        self.assertEqual(
            self.client.get(reverse_lazy('toys:detail',
                                         kwargs={'pk': 1})).status_code, 404,
            'Failed delete data.')
        self.assertEqual(
            self.client.get(
                reverse_lazy('toys:cbv_generic_detail',
                             kwargs={'pk': 1})).json()['detail'], 'Not found.')
Esempio n. 9
0
from datetime import datetime
from django.utils import timezone
from django.utils.six import BytesIO
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from toys.models import Toy
from toys.serializers import ToySerializer

toy_release_date = timezone.make_aware(datetime.now(), timezone.get_current_timezone())

toy3 = Toy(name='Lego Mincraft', description='Construction Toy for Kids', release_date=toy_release_date, toy_category='Education', was_included_in_home=True)
toy4 = Toy(name='RC Drone', description='Portable Pocket Quadcopter', release_date=toy_release_date, toy_category='Gadget', was_included_in_home=False)
Esempio n. 10
0
from datetime import datetime
from django.utils import timezone
from django.utils.six import BytesIO
from rest_framework.renderers import JSONRenderer
from rest_framework.parsers import JSONParser
from toys.models import Toy
from toys.serializers import ToySerializer

toy_release_date = timezone.make_aware(datetime.now(),
                                       timezone.get_current_timezone())

toy1 = Toy(name='Lotus RC',
           description='Remote Control Offroad Car',
           release_date=toy_release_date,
           toy_category='Adult Toys',
           was_included_in_home=True)
toy1.save()

toy2 = Toy(name='Transformer Robotics',
           description='Transaformer Robotics protects the Earth.',
           release_date=toy_release_date,
           toy_category='Dolls',
           was_included_in_home=True)
toy2.save()

print(toy1.pk)
print(toy1.name)
print(toy1.created)
print(toy1.was_included_in_home)
print(toy2.pk)
print(toy2.name)