Giter VIP home page Giter VIP logo

makerspaceleiden / makerspaceleiden-crm Goto Github PK

View Code? Open in Web Editor NEW
8.0 13.0 9.0 2.66 MB

Simlpe sketch of a CRM for managing members and rfid cards at the Makerspace leiden

License: Apache License 2.0

Python 72.95% HTML 17.62% Shell 1.43% PowerShell 0.24% JavaScript 6.76% CSS 0.99%
crm hackspace makerspace membership membership-management django-application rfid-card trustees access-control collaboration

makerspaceleiden-crm's Introduction

Quick test/install

  • Make sure you have a somewhat recent python version

  • [OPTIONAL] If you want to use poetry instead, install poetry

    • Add environment variable POETRY with the value true. Can be done by running: cp example.env .env
  • sh loaddemo.sh

Then go to

http://localhost:8000/

and login using the accounts created & shown to you during the loaddemo.sh script.

Or use URLs such as

curl -H "X-Bearer: Foo" -F tag=1-2-4 http://127.0.0.1:8000/acl/api/v1/getok4node/foonode

to check the API (this assumes local.py to contain the Foo password; see debug.py) and some machine given a node name.

Committing

Make sure pre-commit is installed when committing. This can be done by installing using poetry (pre-commit is a dev dependency) or manually installing pre-commit with the instructions found here.

Once pre-commit is installed, you can run pre-commit install to install the necessary git hooks. After this you're set to commit!

There are pipelines running pre-commit is as well to check whether pre-commit was run successfully. If any issues arise in the pipeline, first try to run pre-commit locally using pre-commit run --all-files.

Requirements

Trustees

  • Create member, progress status from initial to full (i.e. with 24x7 key)

  • Checkboxes for things such as 'form on file', member-in-good-standing

  • Management of groups (e.g. people that can give instruction)

  • Creation of new machines and groups

  • Overview rfid cards

  • Reports on bins & (big/overdue) storage permits.

API

  • lists or OK/deny on tag's. based on just being a member based on having had instructions based on an actual permit

Self service

  • Initial contact / request membership (no auth)

  • password reset.

  • activate (new) card, retire old.

  • record whom you have given instruction to.

Self service (bonus)

  • report accident

  • report outages activate lockout

  • location members bin visible to all

  • storage permits & durations for things that do not fit in the members bin. request visible to all

  • track ordering of spares.

Non functional requirements

  • Very 'standard' approach - so ops and code evolving does not rely on a few skilled people.
  • Some 10's of machines
  • Low 100's of users

Email 'rules'

  • User changes his/her details -> email trustees
  • Someone adds instructions -> email trustees ? deelnemers ?
  • Any mutations on storage space - email deelnemers Email owner separare if the change is made by someone else but the owner. Email trusteeds if > 30 days or extension on a auto-approve 30 days.
  • Box changes - email trusteeds Email owner separare if the change is made by someone else but the owner.

Current design

  • Normal Django users; Members adds a field to that (form on file). May add more in the future (e.g. emergency contact).

  • Machines Machines or things that you can interact with (like doors). May require instructions May require the waiver to be on file. May require a 'permit' of a specific type.

  • Permits E.g. allowed to open doors. May require a permit to be issued (one deep)

  • Entitlements of a specific permi Assigned to a user (owner) by an issuer. issuer must have the entitlement himself. issuer must ALSO have the permit specified in the permit, i.e. the instruction permit, if so specified (one deep)

issues with the current design

makerspaceleiden-crm's People

Contributors

dependabot[bot] avatar dfijma avatar dirkx avatar freerk42 avatar leonrenkema avatar markvdk avatar stefanomasini avatar stevwonder avatar yorimyorimyorim avatar younday avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

makerspaceleiden-crm's Issues

stop leaking to google

Switch qrcode to qr-code -- as to avoid leaking needless stuff to sauron. (Credits to lucas for finding this).

Show UFO history

Add show history to the storage (and perhaps members boxes) - just like it is done for UFOs.

Label your tags

@HansStroes says:

• Is it possible to ad an extra info field ad the tags page? Some people have multiple tags and I would like to see the extra info.

Show tags to users

Show tags to users - or at the very least show how many they have. And in a perfect world - which one was used last.

double entry / instruction list

Appears to be wrong. May be an artifcat of the import -or- new entitelmet of same type & owner (but with different issuer) not overwriting the old.

Garbage container function

The space will need to put out the small garbage container on a specific schedule.

To support this we are considering:

  1. A small interface in the CRM lets you volunteer for take-out; bring-in (or both) on the next few dates.

  2. 72hours before the date - the system checks if there are volunteer(s) already registered.

  3. If so - it lets deelnemers@ know. If not it hails deelnemers@ for volunteers.

  4. If there are no volunteers 24 hours before - the system emails/signals/telegrams the last 10 people who have been at the space to beg them to volunteer. (Or should we do this to deelnemers@ to maximse social pressure on those that have filled the bin?)

  5. Around 17:00 and 21:00 on the day before - it reminds (just) the volunteer(s) that the bin is to be put out the next morning; or that evening as late as possible.

  6. A similar 'put it back in' reminder is sent the next day.

Questions that spring to mind:

A) one volunteer for take out and one volunteer for bring-in enough ?
B) Do we need a morning warning too ?
C) Do we let the volunteer mark 'done' ? So the messages are less ?
D) Is step 4 needed ?

Unknown recent tags list

@HansStroes says:

• Is it possible to add a pulldown menu in the ‘add tag’-page with presented unknown tags (last 24 Hours) with the time of presentation, so I can ask people to present there tag and add it.

no negative payment

Fulco wrote:

Het is dus belangrijk dat je normaliter alleen positieve bedragen mag invullen.
Anders kun je tegoed van een ander 'stelen' door ze een negatief bedrag kado te doen.

pdf waiver form - mime type

Perhaps set content type to rfc3778 defined application/pdf -- and change the filename to something like waiver-msl-XXX.pdf - where XX is user_id or similar.

Along the lines of below perhaps (me != django/python weenie):

        reply = HttpResponse(pdffile.readXXXX(), content_type="application/pdf")
        reply['Content-Disposition'] = 'inline; filename=waiver-msl-{}.pdf'.format(user.id)

out of band login is redireted through 'staff' permissions

@Lukelectro wrote:

Nope. Returns " Please enter the correct email address and password for a staff account. Note that both fields may be case-sensitive. ". Fair enough, ik ben geen staff.

Ik denk dat 'ie oningelogde mensen niet naar de admin pagina moet sturen, maar naar de gewone login pagina. De meeste van ons zijn immers geen staff...

Op 21-01-19 om 23:39 schreef @dirkx :
What should happen (and it seems to do it for me) is:

Dat werkt niet voor jouw ?

Dw.

'Ban' interface for the trusteeds

People can get a N day ban on certain equipment from the trustees.

Right now this does not work well with the entitlement system - as the system assumes that the person changing the activation/etc flag is the trainer. Not a trustee.

GDPR mode for staff/admins

Currently admins can see a lot - without much in terms of audit; or much that protects them from seeing things they should not see - or would rather not know about.

But it is useful to be able to debug things. So a solution would be to create 'SUDO' like function in the top bar - a 'become admin for a bit' sort of GDPR upgrade.

So the rule for having ‘super user’ or ‘admin view’ is then:

Check:
if super user
yes
and only make Trustee's real super users.*

if staff
	if pressed on the ‘upgrade me to admin’ in the top bar in the last 15 mins or if I used that power yes
		return yes

return normal user.

Top bar:

extra ‘become admin’ button

	When pressed - button with ‘why’ - with a few pre-canned settings such as ‘debugging’.

So that that staff can normally intertact as normal users. And keep a nice GDPR audit log for when we need to violate it in the course of our good work for the space.

And it has the nice side effect that people hacking the code can see exactly what non-devs are seeing.

*: probably will need to make them also ‘normal’ power users - once the dutch govt. issues their clarification on the interpretation of the rules later this year.

makerspace-crm does not work with Django 4.x (hence install error)

When installing makerspaceleiden-crm on a machine with Python 3.10 ( probably 3.8 and higher also ) loaddemo.sh loads Django 4.x.
Makerspaceleiden-crm does not work on Django 4.x
Latest working release seems to be 3.2.16.
Solution: define the right Django version in requirements.txt:
change line #1 to:
Django==3.2.16

MSL owner

We need something like a virtual / MSL owner/user/member to which we can assign things.

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.