def add_estrategia(request):
    data = json.loads(request.body)
    name = data['name'];
    description = data['description']
    thumbnail = data['thumbnail']
    # getlist('images[]')
    images = data['images']
    type = data['type']
    author = data['author']

    if thumbnail == '':
        thumbnail == None

    itemCode = data['id']

    print 'add_estrategia', itemCode

    if itemCode == '' or itemCode == 0:
        item = Item()
        item.type = int(smart_text(type, encoding='utf-8', strings_only=False, errors='strict'))
    else:
        item = Item.objects.get(item_code=itemCode, version=0, author=author)

    item.name = smart_text(name, encoding='utf-8', strings_only=False, errors='strict')
    item.description = smart_text(description, encoding='utf-8', strings_only=False, errors='strict')
    item.thumbnail = thumbnail
    item.status = '1'
    item.author_id = author

    ob = None

    if type == models.TECHNOLOGY:  # TODO: agregar cosas especificas de cada tipo de item
        ob = models.Technology(
            name=name,
            description = ':V'
        )
        ob.save()
        item.technology = ob
    elif type == models.TOOL:
        devPk = data['subclassId'];
        print "toolPk", devPk

        if devPk == '':
            ob = models.Tool()
        else:
            ob = models.Development.objects.get(pk=devPk)

        ob.name = name
        ob.description = ':v'
        ob.technology = models.Technology.objects.get(pk=data['technology'])
        ob.url = data['toolUrl']
        ob.download_url = data['toolDownloadUrl']
        ob.license_type = data['licenseType']
        ob.use_restrictions = data['useRestrictions']
        ob.integration = data['integration']
        ob.functional_description = data['functionalDescription']
        ob.operating_systems = smart_text(",".join(data['operativeSystems']), encoding='utf-8', strings_only=False,
                                          errors='strict')

        ob.save()
        item.tool = ob

    elif type == models.TUTORIAL:
        devPk = data['subclassId'];
        print "tutorialPk", devPk

        if devPk == '':
            ob = models.Tutorial()
        else:
            ob = models.Tutorial.objects.get(pk=devPk)

        ob.name = name
        ob.url = data['tutorialUrl']
        ob.tool_id = data['tool']

        ob.save()
        item.tutorial = ob
    elif type == models.EXAMPLE:

        devPk = data['subclassId'];
        print "examplePk", devPk

        if devPk == '':
            ob = models.Example()
        else:
            ob = models.Example.objects.get(pk=devPk)

        ob.name = name
        ob.url = data['exampleUrl']
        ob.strategy_id = data['strategy']
        ob.tool_id = data['tool']

        ob.save()
        item.example = ob

    elif type == models.STRATEGY:

        devPk = data['subclassId'];
        print "strategyPk", devPk

        if devPk == '':
            ob = models.Strategy()
        else:
            ob = models.Strategy.objects.get(pk=devPk)

        ob.name = name
        ob.save()
        item.strategy = ob

    elif type == models.DEVELOPMENT:
        devPk = data['subclassId'];
        print "devPk", devPk
        if devPk == '':
            ob = models.Development(
                name=name
            )
            ob.save()
        else:
            ob = models.Development.objects.get(pk=devPk)
            ob.dev_technologies.clear()
            ob.save()

        for tech in data['devTechs']:  # the list of devTechs PK's
            print "tech", tech
            ob.dev_technologies.add(tech)

        ob.save()
        item.development = ob

    elif type == models.DISCIPLINE:
        devPk = data['subclassId']
        print "disciplinePk", devPk

        if devPk == '':
            ob = models.Discipline(
                name=name
            )
            ob.save()
        else:
            ob = models.Discipline.objects.get(pk=devPk)
            ob.tools.clear()
            ob.save()

        for _tool in data['tools']:  # the list of devTechs PK's
            print "tool", _tool
            ob.tools.add(_tool)

        ob.save()
        item.discipline = ob

    for tech in data['devTechs']:  # the list of devTechs PK's
        print "tech", tech
        ob.dev_technologies.add(tech)

    item.save()

    if item.item_code == -1:
        print "Version ", data['version']
        if data['version'] == "2":
            print "Created draft of an aproved item"
            item.item_code = data['item_code']
        else:
            item.item_code = item.pk
        item.save()

    item.images.clear()
    for image in images:
        newImg = models.Image.objects.create(image=image)
        item.images.add(newImg)

    item.save()

    print name, description, thumbnail, images
    _ob = serializers.serialize("json", [ob])
    _item = serializers.serialize("json", [item])

    sendToReview = data['sendToReview'];

    if (sendToReview):
        createReviewVersion(item)

    return JsonResponse({'mensaje': 'ok', 'item': _item, 'strategy': _ob})