Separati identitatea utilizatorului individual de conturi si abonamente. Organizatiile Django adauga grupuri gestionate de utilizatori, multi-utilizatori in proiectul dvs. Django. Utilizati organizatiile Django, indiferent daca site-ul dvs. are nevoie de organizatii care functioneaza precum grupuri sociale sau obiecte de cont cu mai multi utilizatori pentru a oferi functionalitate de cont si abonament dincolo de utilizatorul individual.

  • Functioneaza cu modelul dvs. de utilizator existent, indiferent daca django.contrib.auth sau un model personalizat. Nu sunt necesare functii suplimentare de utilizator sau autentificare.
  • Utilizatorii pot apartine si detine mai multe organizatii (cont, grup)
  • Functionalitatea de invitatie si inregistrare functioneaza imediat pentru multe situatii si poate fi extinsa dupa cum este necesar pentru a se potrivi cerintelor specifice.
  • Incepeti cu modelele de baza sau utilizati-le pe ale dvs. pentru o personalizare mai mare.

Documentatia se afla pe Cititi documentele

Dezvoltare si contributie

Ramura master reprezinta dezvoltarea versiunii 2. Pentru actualizari legate de versiunile 1.x ale organizatiilor django, cererile de extragere ar trebui facute impotriva ramurii [`version-1.x`] (copac / versiune-1.x).

Dezvoltarea este continua. Elementele de rezolvat au fost mutate pe wiki pentru moment.

Functionalitatea de baza nu ar trebui sa aiba nevoie de multa extindere. Prioritatile de dezvoltare curente pentru mine si contribuabili ar trebui sa includa:

  • Imbunatatirea testelor si acoperirea testelor (in mod ideal, mutandu-le inapoi din modulul principal si executabile utilizand fisierul setup.py)
  • Imbunatatirea conceptului de backend-uri si backend-uri, astfel incat sa poata fi folosite backend-uri de invitatie si inregistrare suplimentare
  • Documentatie
  • Asigurarea traducerii tuturor textelor aplicatiei

Va rugam sa utilizati urmaritorul problemelor proiectului pentru a raporta erori, actualizari de documente sau alte cereri / sugestii.

Tinte si testare

Baza de coduri este vizata si testata impotriva:

  • Django 2.2.x impotriva Python 3.5, 3.6, 3.7, 3.8
  • Django 3.0.x impotriva Python 3.6, 3.7, 3.8
  • Django 3.1.x impotriva Python 3.6, 3.7, 3.8

Pentru a rula testele impotriva tuturor mediilor tinta, instalati tox si apoi executati comanda:

tox

Testare rapida

Testarea fiecarei modificari pe toate mediile dureaza ceva timp, poate doriti sa testati mai repede si sa evitati incetinirea dezvoltarii folosind pytest in raport cu mediul dvs. actual:

pip install -r requirements-test.txt py.test

Furnizati optiunea -x pentru modul failfast :

py.test -x

Trimiterea

Aceste linii directoare de trimitere vor face mai probabil ca trimiterile dvs. sa fie revizuite si sa fie incluse in proiect:

Contributiile la cod se asteapta sa treaca in toate mediile tinta, iar cererile de extragere ar trebui sa fie facute de la sucursale cu versiuni trecatoare pe Travis CI.

Obiectivele proiectului

organizatiile django ar trebui sa fie backend agnostice:

  1. Autenticare agnostica
  2. Inregistrare agnostica
  3. Invitatie agnostica
  4. Mesaje de utilizator agnostice

Etc.

Se instaleaza

Mai intai adaugati aplicatia la calea Python. Cel mai simplu mod este sa utilizati pip:

pip instala django-organizatii

Verificati fila Istoric lansari de pe pagina pachetului PyPI pentru versiuni pre-lansare. Acestea pot fi descarcate specificand versiunea.

Puteti instala, de asemenea, descarcand sursa si executand:

$ python setup.py instalare

In mod implicit, va trebui sa instalati extensii django sau biblioteci comparabile daca intentionati sa adaugati organizatii Django ca aplicatie instalata in proiectul dvs. Django. Vedeti mai jos despre configurare.

Configurarea

Asigurati-va ca ati instalat django.contrib.auth si adaugati aplicatia organizatiei la lista dvs. INSTALLED_APPS:

INSTALLED_APPS = (… ‘django.contrib.auth’, ‘organizatii’,)

Apoi asigurati-va ca actualizarea URL a proiectului dvs. este actualizata. Ar trebui sa va conectati la adresa URL principala a aplicatiei conf, precum si la adresele URL de invitatie alese:

din organizatii.backends import invitatie_backend urlpatterns = [… url (r ‘^ conturi /’, include (‘organizatii.urls’)), url (r ‘^ invitatii /’, include (invitatie_backend (). get_urls ()) ),]

Campul auto slug

Modul standard de utilizare a Organizatiilor Django este sa il utilizati ca aplicatie instalata in proiectul dvs. Django. Organizatiile Django vor trebui sa utilizeze un camp auto slug care nu este inclus. In mod implicit, va incerca sa le importe din extensiile django, dar puteti sa le configurati in setari. Implicit:

ORGS_SLUGFIELD = ‘django_extensions.db.fields.AutoSlugField’

Alternativa:

ORGS_SLUGFIELD = ‘autoslug.fields.AutoSlugField’

Versiunile anterioare v-au permis sa specificati o cale ORGS_TIMESTAMPED_MODEL. Acest lucru este acum ignorat si functionalitatea satisfacuta de o solutie comercializata. Va fi dat un avertisment, dar acest lucru nu ar trebui sa aiba niciun efect asupra codului dvs.

  • django-extensii
  • Django AutoSlug
  • django-slugger

Backend de inregistrare si invitatie

Puteti specifica un alt backend de invitatie in setarile proiectului dvs., iar functia invitation_backend va furniza adresele URL definite de acel backend:

INVITATION_BACKEND = ‘myapp.backends.MyInvitationBackend’

Prezentare generala a utilizarii

Pentru majoritatea cazurilor de utilizare, ar trebui sa fie suficient sa includeti vizualizarile aplicatiei direct utilizand fisierul conf. URL implicit. Puteti personaliza functionalitatea acestora sau controalele de acces extinzand vizualizarile de baza.

Exista trei modele:

  • Organizare Obiectul grupului. Aceasta este ceea ce ati asocia functionalitatea propriei aplicatii, de exemplu, abonamente, depozite, proiecte etc.
  • OrganizatorUtilizator Un model personalizat prin intermediul relatiei ManyToMany dintre modelul Organizatie si modelul Utilizator. Acesta stocheaza informatii suplimentare despre utilizatorul specific organizatiei si ofera un link convenabil pentru proprietatea organizatiei.
  • OrganizationOwner Utilizatorul cu drepturi asupra vietii si mortii organizatiei. Aceasta este o relatie unu la unu cu modelul OrganizationUser. Aceasta permite obiectelor utilizatorului sa detina mai multe organizatii si faciliteaza aplicarea dreptului de proprietate din membrii organizatiei.

API-ul organizatiilor subiacente este simplu:

>>> din organizatii.utils import create_organization >>> chris = User.objects.get (nume de utilizator = “chris”) >>> soundgarden = create_organization (chris, “Soundgarden”, org_user_defaults = {‘is_admin’: True})> >> soundgarden.is_member (chris) Adevarat >>> soundgarden.is_admin (chris) Adevarat >>> soundgarden.owner.organization_user <OrganizationUser: Chris Cornell> >>> soundgarden.owner.organization_user.user >>> <Utilizator: chris > >>> audioslave = create_organization (chris, “Audioslave”) >>> tom = User.objects.get (nume de utilizator = “tom”) >>> audioslave.add_user (tom, is_admin = True) <OrganizationUser: Tom Morello>

Modele personalizate

Organizatiile Django pot actiona ca o biblioteca de baza (neinstalata in proiectul dvs.) si utilizate pentru a crea seturi de modele de organizatie unice folosind tabele personalizate. Consultati sectiunea Gatit cu organizatiile Django din documentatie pentru sfaturi despre procedura.

Licenta

Oricine este liber sa utilizeze sau sa modifice acest software in conditiile licentei BSD.

Sponsori

Muster construieste un software de advocacy de precizie pentru a influenta politica prin actiuni de baza.