Skip to main content

Tenants

Base de données partagée, schémas distincts.

TiBillet est construit autour d'une architecture multi-tenant. Il s'agit d'une fonctionnalité essentielle pour toute application de type "Software-as-a-Service".

C'est une approche semi-isolée : Base de données partagée, schémas distincts. Une base de données pour tous les locataires, mais un schéma par locataire.

Pour plus d'information : https://django-tenants.readthedocs.io/

note

Pour créer de nouveaux tenants, vous pouvez utiliser l'api, mais tout aussi bien rediriger vers le formulaire de création en ligne.

ex : https://agenda.tibillet.ovh/tenant/new/?email=jturbeaux@pm.me&name=jojo En option, vous pouvez ajouter les arguments :

  • name = Nom de la structure
  • email = Email du futur administrateur

N'hésitez pas à venir discuter avec nous sur Discord ou Matrix pour avoir plus d'informations !

Catégories

Nous avons défini plusieurs catégories de tenant qui determinent les comportements et templates.

Lieu

Une salle de spectacle, un café concert, un tiers lieux...

  • Un nom.
  • Un lieu.
  • Une scène.
  • Un ou plusieurs artistes par soir.
categorie = "S"

Festival

  • Un nom.
  • Un ou plusieurs lieux.
  • Une ou plusieurs scènes.
  • Un ou plusieurs artistes par soir.
categorie = "F"

Projet

  • Un nom.
  • Plusieurs lieux et scènes sur plusieurs dates.
categorie = "A"

Producteurs

Ex : Boite de production, agent, compagnie de théatre, tourneur

  • Plusieurs projets.
  • Plusieurs lieux et scènes.
categorie = "P"

Meta : L'agenda fédéré

Plusieurs instances se fédèrent pour créer un agenda évènementiel commun.

  • Plusieurs lieux
  • Plusieurs projets
categorie = "M"

Root

Une seule instance par serveur. Gère les tables communes à tous les tenants :

  • Cartes NFC
  • Utilisateurs
  • Super-users
  • Gestion des domaines principaux et sous domaines multi tenant.
categorie = "R"

Données initiales

Lors de l'installation d'un nouveau serveur Django, une instance ROOT et une META sont déja présente.

S'il ne peut y avoir qu'un seul ROOT, plusieurs instances META sont possibles pour un agenda fédéré autour d'une communauté interne.

La première META initalement créée est utile pour lister toutes les autres instances du serveur Django. Le sous domaine par defauilt est "meta". Il est possible de changer l'adresse avant l'installation : modifiez le fichier .env présent à la racine du docker-compose. Il est aussi possible de changer l'adresse post install dans l'administration ROOT.

Lister les tenants

À lancer sur la première META.

Aucune autorisation n'est nécéssaire pour lister les tenants d'un serveur.

# all tenant :
GET https://meta.<domain>/api/place/

# retrieve one tenant :
GET https://meta.<domain>/api/place/<uuid>

Création de nouveau tenant

note

BETA en cours : En plus de l'autorisation spéficifique de la clé d'Api, l'utilisateur enregistré doit avoir une autorisation spéciale pour la création de tenant. La case "Peux créer des tenants" doit être coché dans l'interface d'administration ROOT : https://www.<domain>/admin/.

POST https://meta.<domain>/api/place/
ItemtypeRequis
organisationtextY
short_descriptiontextY
long_descriptiondecimalY
phoneintY
emailemailY
site_weburlY
postal_codetextY
img_urlurlY
logo_urlurlY
categorietextY
adresstextN
citytextN

example

import requests

url = "http://meta.tibillet.local/api/place/"

payload = {
"organisation": "Le Bisik",
"short_description": " Le lieu des musiques actuelles de Saint-Benoît",
"long_description": "ACTER (Agir pour la Culture et le Tourisme dans l’Est de La Réunion) est née il y cinq ans de la volonté farouche de porter un projet culturel populaire et de créer un lieu de diffusion original de Musiques Actuelles dans l’Est de La Réunion. Avec le Bisik nous avons inventé un tiers-lieu original, un espace de convivialité pluriel qui pourrait préfigurer une Scène De Musiques Actuelles adaptée au territoire souhaitée par notre équipe et d’ores et déjà par nombre de nos partenaires avec qui nous signerons prochainement un conventionnement pluriannuel.",
"phone": "0692929292",
"email": "contact+bisik@tibillet.re",
"site_web": "http://bisik.re",
"postal_code": "97410",
"img_url": "http://bisik.re/wp-content/uploads/2019/01/MayaBisik.jpg",
"logo_url": "http://bisik.re/wp-content/uploads/2017/05/logo-Bisik.png",
"categorie": "S"
}
headers = {
"Content-Type": "application/json",
"Authorization": "Api-Key NvGv0CHV.aQGS09HOQuF14sqfez8132jhEd8UAcBsp"
}

response = requests.request("POST", url, json=payload, headers=headers)

print(response.text)
HTTP json response
{
"uuid": "1cf9889c-3414-4a39-bdde-1a36e1f97b96",
"organisation": "Le Bisik",
"slug": "le-bisik",
"short_description": "Le lieu des musiques actuelles de Saint-Benoît",
"long_description": "ACTER (Agir pour la Culture et le Tourisme dans l’Est de La Réunion) est née il y cinq ans de la volonté farouche de porter un projet culturel populaire et de créer un lieu de diffusion original de Musiques Actuelles dans l’Est de La Réunion. Avec le Bisik nous avons inventé un tiers-lieu original, un espace de convivialité pluriel qui pourrait préfigurer une Scène De Musiques Actuelles adaptée au territoire souhaitée par notre équipe et d’ores et déjà par nombre de nos partenaires avec qui nous signerons prochainement un conventionnement pluriannuel.",
"adress": null,
"postal_code": 97410,
"city": null,
"phone": "0692929292",
"email": "contact@tibillet.re",
"site_web": "http://bisik.re",
"legal_documents": null,
"twitter": null,
"facebook": null,
"instagram": null,
"adhesion_obligatoire": false,
"button_adhesion": false,
"map_img": null,
"carte_restaurant": null,
"img_variations": {
"fhd": "/media/images/MayaBisik_shOX4fO.fhd.jpg",
"hdr": "/media/images/MayaBisik_shOX4fO.hdr.jpg",
"med": "/media/images/MayaBisik_shOX4fO.med.jpg",
"thumbnail": "/media/images/MayaBisik_shOX4fO.thumbnail.jpg"
},
"logo_variations": {
"fhd": "/media/images/MayaBisik_shOX4fO.fhd.jpg",
"hdr": "/media/images/MayaBisik_shOX4fO.hdr.jpg",
"med": "/media/images/MayaBisik_shOX4fO.med.jpg",
"thumbnail": "/media/images/MayaBisik_shOX4fO.thumbnail.jpg"
},
"categorie": "S"
}