Giter Club home page Giter Club logo

medlemssys's Introduction

Medlemssys

Medlemsregister for norske organisasjonar.

Bygd på datamodellen til Norsk Målungdom sitt gamle Access-register. Ein del pragmatiske løysingar som fylgje av det. Ein del hardkoda NMU-ismer, men det forsvinn viss nokon (lag saker/issues). All bruk eg kjenner til har klart seg med det som er. Vert sakte modernisert.

  • Skrive i Python (Django)
  • I aktiv bruk sidan 2014
  • Kan lesa OCR-filer
  • Admin-grensesnitt med ein del hendig filtrering

Installasjon

Ein kjapp guide for å koma i gang med utvikling.

cd medlemssys

# Lag virtuelt Python-miljø virtualenv env . env/bin/activate pip install -r requirements/local.txt

# Medlemsregisteret køyrer på postgresql som standard. # Du må oppretta ein database. createdb medlemssys

# Set opp testdatabasa python manage.py migrate python manage.py loaddata start_data.json

# Lag deg ein brukar python manage.py createsuperuser

python manage.py runserver

No kan du gå til http://127.0.0.1:8000/admin/, logga inn og testa ut installasjonen.

Innhenting av postnummer

Hent ned Erik Bolstad sin CSV (TSV, menmen)-fil og les han inn:

wget http://www.erikbolstad.no/postnummer-koordinatar/txt/postnummer.csv python manage.py postnr_bolstad_import postnummer.csv

Viss du må oppdatera (kvart år), berre slett "PostNummer"-tabellen og køyr linene over på ny.

Importering av medlemsregisterdata

Filformatet ventar NMU-format i CSV. Ditt register er truleg annleis, men det er heldigvis lett å skriva adaptarar. Eventuelt å berre endra litt på namn i CSV-filene. T.d. har eg henta over eit register frå Mamut ein gong.

Format for lag, einaste som er nødvendig er "LLAG" (namn) og "lid" (id):

DIST,FLAG,LLAG,lid,ANDSVAR,LOKALSATS

Format for medlemar:

REGISTERKODE,LAGSNR,MEDLNR,FORNAMN,MELLOMNAMN,ETTERNAMN, TILSKRIFT1,TILSKRIFT2,POST,VERVA,VERV,LP,GJER,MERKNAD, KJØNN,INN,INNMEDL,UTB,UT_DATO,MI,MEDLEMINF,TLF_H,TLF_A, E_POST,H_TILSKR1,H_TILSKR2,H_POST,H_TLF,Ring_B,Post_B, MM_B,MNM_B,BRUKHEIME,FARRETOR,RETUR,REGBET,HEIMEADR, REGISTRERT,TILSKRIFT_ENDRA,FØDEÅR,Epost_B

For å importera med standardverdiar:

# Usage: manage.py medlem_import [options] [ lokallag.csv [ medlem.csv [ betaling.csv ] ] ] ./manage.py medlem_import

Du kan setja standardfilene i settings/local.py. Instellingane heiter:

MEDLEM_CSV GIRO_CSV LAG_CSV

API

Det er eit API på /api/. POST /api/token for å få ein API token å bruka.

Køyr testane

Det er alt for få testar, men eit par. Skriv gjerne fleire, og køyr dei ved kodeendring.

./manage test medlem giro statistikk

medlemssys's People

Contributors

freheims avatar odinho avatar torstehu avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

medlemssys's Issues

Hindra at utmelde kjem med på utskrivne lister, girosendingar, etc, etc

Moglege løysingar:

  • setja som dífålt at utmelde medlemer er luka bort
  • leggja inn sperre mot utmelde medlemer i t.d. "enkel medlemsliste"
  • på andre vis køyra det klassiske windowsspørsmålet ER DU HEILT SIKKER når nokon har gjer eit utval som inkluderer nokon som er utmelde

Eller noko anna.

Update giro status when a new save makes it paid

Whenever innbetalt_belop changes so that it matches (or exceeds?) belop, set status to finished.

Or do it client-side with javascript. To detangle status a bit from innbetalt_belop.

The problem at least is that the manual setting to status finished is a hassle.

Språk for prosjektet / Language for the project

Eg har vore ganske schizofren på språkval, fordi eg aldri tok eit heilt klart. Eg tykkjer det bør vera norsk nynorsk og ikkje engelsk iom. at det berre rettar seg mot norske brukarar / organisasjonar.

Likevel, det er rart å skriva norsk i kode, so eg starta so vidt å kalla ting ved engelske namn for ei stund sidan. Det vert for schizofrent, so eg er attende på sida om å berre ha alt på norsk.

Men eg er altso frykteleg usikker.

Giro list with email and phone no etc ++

Karl Peder:

eg treng ei liste eg kan få ut som inneheld
Namn, adresse, telefon, fødeår, epost, KID
Eg finn berre lister som har KID, men ikkje telefon, og adresse men ikkje KID osf.

Revisorlist needs comment from the giro

Eskil sa:

Når me skal ta ut revisorliste i år treng me ein kolonne der kommentaren til
betalinga er med i ei eiga kolonne sånn at me veit om dei er betalt med eller
utan KID. Men det er ikkje superhast. Me skal ikkje til revisor med det aller
første.

So the csv export of revisor list (giro) needs giro comment.

Implement concept of communication

Currently we do not track our communications with the members. It would be nice to log the email messages we send, just as we send them (all merged together and with the real data).

Communication is not only email, but also printed letters, handled by pdf.

Lisens [MIT, GPL 3.0 eller AGPL?]

Kva lisens vil passa best?

Eg har mest lyst til å bruka AGPL, som seier at alle som har skikkeleg tilgang til programvara og er brukarar av ho, skal få tilgang til kjeldekoden (med endringar) dersom dei vil.

Det vernar om fridomen til enkeltindivida. Einaste ulempa er dersom det fører til noko ekstra administrasjon. Eit REST API vil elles hjelpa til med å gjera registeret enkelt utvidbart for folk som ikkje vil frigje koden sin til medlemar.

Digital utfylling og signering av lokallagsskjema

Funksjonen: Digital utfylling av ...

... årsmeldingsskjema (namn, kommune-/fylkestilhøyrsle og kontaktinfo til laget; namn og adresse til betalande tillitsvalde pr. 31.12; datoen desse vart valde og kva periode dei er valde for; diverse felt for rekneskap og aktivitet elles)

... årsmøteskjema (namn, årsmøtedato, kontaktinfo til laget; namn, adresse og tlf til tillitsvalde; andre vedtak)

... skipingsmøteskjema (som årsmøteskjema, berre med ekstra felt for kommune-/fylkestilhøyrsle)

... Frifondssøknadsskjema (namn på lag, søknadstekst, budsjett)

... Frifondrapportskjema (namn på lag, rapporttekst, rekneskap)

(rekkjefylgja er prioritert ...)

Krav frå styresmaktene:

  • «en betryggende metode for å autentisere avsender og innholdet av rapporten» ( = lokallagsleiarar må kunna skaffa seg passord automatisk (dvs. utan manuell innblanding frå SST), og SST kan ikkje ha tilgang på lokallagsleiaren sin brukar. Trur eg)

AI AI – Sortera giroar etter medlemen sin innmeldingsdato

Litt hastverk: me har ein del problem ved utskrift av giroar til nye medlemer (velkomstpakkar), fordi me ikkje har nokon enkel måte å sortera ut dei som skal få utskrift av giroen sin på. Kan me sortera giroane etter innmeldingsdato for medlemen giroen er knytt til?

Utskrift av adresselappar

Ynskt funksjon: Skriv ut adresselappar for avkryssa medlemer (rullegardinmenyval à la "enkel medlemsliste")

Format: 3x7 lappar pr A4-ark
Marg venstre og høgre: 7mm på kvar side
Marg oppe og nede: 15mm på kvar side
Mellomrom mellom dei tre kolonnane: ca 2,67mm
Mellomrom mellom radene: 0
Format på kvar lapp: ca 63,55 x 38,14

Add AGPL 3.0 license information

After asking the question in #2, all of the ones who answered (grand total of two) is in favour of AGPL.

So let's do it. Open for patches.

Slett ubetalte giroar ved utmelding

Når nokon vert utmeld, står giroen framleis ubetalt, og kjem opp i girosøket. Truleg ei uheldig kjelde til feilsending av giro til folk som har meldt seg ut. Hadde vore supert om ubetalte giroar vart sletta når nokon vert utmeldt.

Implement the concept of membership

The current way we define membership is very restrictive, and not very good. Every member is expected to have a membership in some way, and they are expected to be the same. The user of the system is expected to filter the members and create custom giros for each of them. Basically membership management is manual.

It would be nice to a) connect the membership to the user in a more clear way b) allow for automating (letting the member figure out herself what type she'll probably be).

There's some issues though, how to mark that a membership exists (is "open" I guess) and how to mark it is valid? It has a start and end-date. That's how we mark it as open. But if it's paid it will be not only be open but also valid. The giros are connected to the membership, and thus you can look at the giro for say 2014 and see that it is paid, hence the membership for 2014 will be valid.

However, there's a slight disconnect between membership and giro. Because a giro can also be paid for two years (common for barne og ungdoms-organisasjonar). 100kr paid in 2013 should also count as valid for 2014.

It could be possible to mark giros with not only gjeldande_aar but maybe rather valid_from and valid_to date markers? An issue is that code will be more complex, but it would allow to have non-yearly memberships. Or in the vein of simplicity, maybe rename gjeldande_aar to valid_from_year and have an integer valid_years which will be 1 in most cases, but in the 100kr (50kr + 50kr two-year membership) it will be 2.

Also, memberships is highly different between organisations, so it needs to be replaceable. It should probably be the first actual use of behaviours.

How should the project be organized to best suit third-party use?

Other assignments I've worked on could just have the settings files as part of the project. Only taking out the secret keys etc. -- However, this is meant to be generally useful for third-parties, and I don't think we all should have our configs in this project.

Also, it's eaiser when it's just one django app, and you don't expect to give any project at all. But this is in-between those. It's no single pluggable app, it's meant to be used as a project, but django does not always make that super easy.

It's worth looking into what other projects do here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.