def add_collaborator_element(request):
    if (request.user.profile.zone is None):
        return HttpResponse("Vous n'êtes pas connecté en tant que gestionnaire de zone", status=403)
    first_name = request.POST.get('firstname', None)
    last_name = request.POST.get('lastname', None)
    username = request.POST.get('id', None)
    password = User.objects.make_random_password()
    email = request.POST.get('email', None)
    type = request.POST.get('type', None)
    phone = request.POST.get('phone', None)
    if (User.objects.filter(username=username).first() is not None):
        return HttpResponse('Cet utilisateur existe déjà ! Vérifier que son identifiant est bien unique', status=400)
    user = User.objects.create_user(username=username, email=email, password=password, first_name=first_name, last_name=last_name)
    user.profile.phone_number = phone
    if (type == 'fountain-manager'):
        outlet_ids = request.POST.get('outlets', None).split(',')
        if (len(outlet_ids) < 1):
            user.delete()
            return HttpResponse("Vous n'avez pas choisi de fontaine a attribuer !", status=400)
        outlets = (Element.objects.filter(id__in=outlet_ids) if (len(outlet_ids) > 1) else Element.objects.filter(id=outlet_ids[0]))
        if (len(outlets) < 1):
            user.delete()
            return HttpResponse("Impossible d'attribuer cette fontaine au gestionnaire", status=400)
        for outlet in outlets:
            if (not has_access(outlet, request)):
                user.delete()
                return HttpResponse("Vous n'avez pas les droits sur cet élément de réseau", status=403)
            outlet.manager_names = outlet.get_managers()
            outlet.save()
            user.profile.outlets.append(outlet.id)
        my_group = Group.objects.get(name='Gestionnaire de fontaine')
        my_group.user_set.add(user)
        tab = [user.username, user.last_name, user.first_name, user.profile.get_phone_number(), user.email, 'Gestionnaire de fontaine', user.profile.get_zone(), user.profile.outlets]
    elif (type == 'zone-manager'):
        zone_id = request.POST.get('zone', None)
        zone = Zone.objects.filter(id=zone_id).first()
        if (zone is None):
            user.delete()
            return HttpResponse("Impossible d'attribuer cette zone au gestionnaire", status=400)
        if (zone.name not in request.user.profile.zone.subzones):
            user.delete()
            return HttpResponse("Vous n'avez pas les droits sur cette zone", status=403)
        user.profile.zone = zone
        my_group = Group.objects.get(name='Gestionnaire de zone')
        my_group.user_set.add(user)
        tab = [user.username, user.last_name, user.first_name, user.profile.get_phone_number(), user.email, 'Gestionnaire de zone', user.profile.zone.name, user.profile.outlets]
    else:
        user.delete()
        return HttpResponse("Impossible d'ajouter l'utilisateur", status=400)
    send_mail('Bienvenue sur haitiwater !', ((((('Bienvenue sur haitiwater. Voici votre mot de passe autogénéré : ' + password) + '\n') + 'Veuillez vous connecter pour le modifier.\n') + 'Pour rappel, votre identifiant est : ') + username), '', [email], fail_silently=False)
    log_element(user.profile, request)
    json_object = {'data': tab, 'type': 'add', 'table': 'manager'}
    return HttpResponse(json.dumps(json_object), status=200)
def add_collaborator_element(request):
    if (request.user.profile.zone is None):
        return HttpResponse("Vous n'êtes pas connecté en tant que gestionnaire de zone", status=403)
    first_name = request.POST.get('firstname', None)
    last_name = request.POST.get('lastname', None)
    username = request.POST.get('id', None)
    password = User.objects.make_random_password()
    email = request.POST.get('email', None)
    type = request.POST.get('type', None)
    phone = request.POST.get('phone', None)
    if (User.objects.filter(username=username).first() is not None):
        return HttpResponse('Cet utilisateur existe déjà ! Vérifier que son identifiant est bien unique', status=400)
    user = User.objects.create_user(username=username, email=email, password=password, first_name=first_name, last_name=last_name)
    user.profile.phone_number = phone
    if (type == 'fountain-manager'):
        outlet_ids = request.POST.get('outlets', None).split(',')
        if (len(outlet_ids) < 1):
            user.delete()
            return HttpResponse("Vous n'avez pas choisi de fontaine a attribuer !", status=400)
        outlets = (Element.objects.filter(id__in=outlet_ids) if (len(outlet_ids) > 1) else Element.objects.filter(id=outlet_ids[0]))
        if (len(outlets) < 1):
            user.delete()
            return HttpResponse("Impossible d'attribuer cette fontaine au gestionnaire", status=400)
        for outlet in outlets:
            if (not has_access(outlet, request)):
                user.delete()
                return HttpResponse("Vous n'avez pas les droits sur cet élément de réseau", status=403)
            outlet.manager_names = outlet.get_managers()
            outlet.save()
            user.profile.outlets.append(outlet.id)
        my_group = Group.objects.get(name='Gestionnaire de fontaine')
        my_group.user_set.add(user)
        tab = [user.username, user.last_name, user.first_name, user.profile.get_phone_number(), user.email, 'Gestionnaire de fontaine', user.profile.get_zone(), user.profile.outlets]
    elif (type == 'zone-manager'):
        zone_id = request.POST.get('zone', None)
        zone = Zone.objects.filter(id=zone_id).first()
        if (zone is None):
            user.delete()
            return HttpResponse("Impossible d'attribuer cette zone au gestionnaire", status=400)
        if (zone.name not in request.user.profile.zone.subzones):
            user.delete()
            return HttpResponse("Vous n'avez pas les droits sur cette zone", status=403)
        user.profile.zone = zone
        my_group = Group.objects.get(name='Gestionnaire de zone')
        my_group.user_set.add(user)
        tab = [user.username, user.last_name, user.first_name, user.profile.get_phone_number(), user.email, 'Gestionnaire de zone', user.profile.zone.name, user.profile.outlets]
    else:
        user.delete()
        return HttpResponse("Impossible d'ajouter l'utilisateur", status=400)
    send_mail('Bienvenue sur haitiwater !', ((((('Bienvenue sur haitiwater. Voici votre mot de passe autogénéré : ' + password) + '\n') + 'Veuillez vous connecter pour le modifier.\n') + 'Pour rappel, votre identifiant est : ') + username), , [email], fail_silently=False)
    log_element(user.profile, request)
    json_object = {'data': tab, 'type': 'add', 'table': 'manager'}
    return HttpResponse(json.dumps(json_object), status=200)