Giter VIP home page Giter VIP logo

toolhub's Introduction

Toolhub

CodeFactor Code style: black Build Status

A service for tool awareness and organization.

Setting up the project

Developing on unix based systems is only supported at this moment.

Run the setup script and follow the instructions.

  1. Clone this repository
  2. Copy .dockerenv-dist to .dockerenv and populate uncommented variables with real values, do not commit this file.
  3. If available, download a copy of the a recent database dump and copy to ./docker/init/db/
  4. Run ./scripts/setup and follow the instructions in any dialogs
  5. Run ./scripts/start

You can now find the server running at http://localhost:8000.

Press ctlr+c to stop the docker containers.

See ./scripts/README.md for details on other work-flow scripts.

Exposing Ports

By default database ports are exposed on the host machine dynamically. You can easily see what ports each is forwarded to using docker-compose ps and see the details in the "Ports" column.

If you would like to choose the ports a service uses, you can set the <service>_PORT environment variables in your shell's environment in a .env file.

toolhub's People

Contributors

dependabot-preview[bot] avatar dependabot-support avatar dependabot[bot] avatar destos avatar faeranne avatar jsatt avatar ppalms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

toolhub's Issues

Add a way for users to list their skills and resources

Is your feature request related to a problem? Please describe.
Users would like to cater lists of resources and outline their skillsets so as to be of use to others.

Describe the solution you'd like
Someplace on a user's profile page a user should be able to edit a content area to display whatever they want. This should allow them to freeform lists and links to whatever resources they want.

Implementation would probably consist of a new profile page model that contains a markdownx field and a relation to a user. The profile page detail view would lookup the profile via the user's username or some other unique id related to the user.

Describe alternatives you've considered
User model field additions or new model.

Additional context

Ensure failed logins return 401

Describe the bug
Failed login attempts currently return a 200 code instead of a 401.

To Reproduce
Steps to reproduce the behavior:

  1. Go to login page
  2. Enter invalid credentials
  3. Click login

Expected behavior
Invalid login attempts should return a 401 to indicate that the login failed and should be re-attempted.
This helps with log management.

Add user detail page

Should show basic user info along with a means to see all the user's tools and their current checkout or scheduling status.

Show all tools this user is currently checking out.

This ticket needs more refinement, if this is still here when starting, talk to me.

Add ability to upload images to a tool

Users should be able to upload images to a tool and organize them in the description area or create a gallery of images.

The markdown X feature currently supports dragging images into the description area. Make sure this is integrated into the other gallery solution somehow.

Add ability for users to add tools to a community user

Is your feature request related to a problem? Please describe.
Users sometimes would like to donate a tool or make a tool a "space tool" meaning the space owns it. In the current system, tools are only owned by users. It would be nice to have community tools where everyone authed can update their content.

Describe the solution you'd like
First version would just be tools that a user can assign to another use, that default user is the space. In further versions of the feature expand it to allow certain user groups to edit the tool.

Add referrer to QR code generated on label.

Adding a referrer to the link generated for the QR code will allow us to change the interface if a user comes in from a QR code scan. It will also allow us to track if QR codes placed on tools are being used.

One potential changed UI when visiting via the QR code, would be to make it easier to borrow or a return the tool. Maybe by placing a button closer to the top of the page.

Webhook options for all the bots!

I'm looking to add a makerspace bot on slack, and being able to hook into the events (tool checked-out, tool returned), would allow for the bot to alert the owners on slack.

Add Tool decommission and reinstate functionality

Use the new TransitionMessageMixin or TransitionActionMixin mixins with views to transition tools to decommissioned and also reinstate states.

Decommissioned is used for tools that are no longer available but may still need to show up in the interface. They can be brought back "reinstated" for borrowing.

Create base template and navigation scaffolding

Jinja work is being done in work for the initial UserTool creation view. Once that is merged, or on top of that work, extend the added base.jinja to include a header and the start of navigation. It can be refined later to be flexible.

Add tool creation views and templates

Needs to automatically associate logged in user with the associated tool.
Should allow a tool to be tagged with available tags.
Bonus: allow them to add images when creating a tool.

Enable printing to networked printers

Is your feature request related to a problem? Please describe.
Currently, users are made to use their browser to print a label. It would be useful if a user could just click the label print button on a tool page and have it print out on a local network printer.

Describe the solution you'd like
Create models to store information about printers and also utilities for discovering and printing to local printers.

Add user tool detail page

Should show all details about a user tool
refine with all details needing display

  • Current checkout status with current borrower
  • Previous checkout history ( limited count, not all )

Notify owner of tool when someone is requesting to borrow

This notification can also be sent if the requesting user is allowed to immediately borrow the tool. The message may be different.

This should be developed in a generic way to it can be used elsewhere.

This notification should occur when a user does not have clearance to use a tool and requests access. If the user has clearance, no notification should be sent.

Any user can return any borrowed tool

Describe the bug
When browsing tools, if another user has borrowed a tool. You're able to return it even, if it isn't your tool or you aren't the one borrowing it.

Expected behavior
When you've borrowed a tool you're able to return it. If a tool of yours is borrowed you're also able to set it as returned.

Create Taxonomy tree page

For those that wish to find tools via some category or other taxonomy.

Clicking on a taxonomy should bring you to to the tool filter page with that taxonomy filtered.

May incorporate breadcrumbs and taxonomy detail pages that pre-filter to that taxonomy and their children.

Add generic tool search page

Basic search by tool name or taxonomies.

Results should show who owns the tool along with its location.
Clicking on the tool name or image(s) should bring you to that tool's detail page.

A more complex search interface can be built later as needed or if specs change.

Add current list of checked out tools to user profile page

Is your feature request related to a problem? Please describe.
Other users want to see who is checking out what tools. This gives insight when a batch of tools is checked out.

Describe the solution you'd like
The user's profile shows a maximum amount of tools a user is checking out with a link to the complete list of tools they are checking out.

Add tool models and fields

this task needs refinement
A user tool is owned by a user and has an FK to a singular user.

This task shouldn't focus on tool loan history or access permissions ( clearance )

UserTool

  • owner
  • description
  • tool_taxonomies ( m2m )

ToolPhoto

  • tool - TK to tool
  • file

Add allauth for authentication and integrate with slack oauth

Plans are to integrate different tool action notifications with slack notifications instead of email. The first step for this integration is the ability to link a particular toolhub user with a slack account.

Users should only be enabled after it is confirmed they are a member of a specified slack channel. In the case of our slack group, it would be the member channel.

Create Rest Serializers and Views for UserTool model

Most changes should be in the tools app
Views should go in an api_views.py if not yet created.

This endpoint can be used by all authenticated users to view, update and create tools with the relevant visibility options. Mainly for external application integration with tools that are stored within toolhub.

When creating a new UserTool, the requesting user should automatically be used as the owner.
The API should also allow you to supply a user to be used as the owner if they have the correct permissions. This would be a custom permission and possibly tied to staff user status.

It should attempt to save as many of the fields as possible. Might have to move photo upload to a separate endpoint.

Add link from profile page to owned tools filter

Is your feature request related to a problem? Please describe.
Currently, there is no way to link to the user's tools from their profile page.

Describe the solution you'd like
Add a button or link under the user's profile name that links to the tool filter page with their user pre-selected. There are examples of this elsewhere.

Signup Password box is plaintext

Steps to reproduce:

  1. Go to signup page
  2. Begin entering password into password box

What should happen
Password should display as *

What actually happens
Password is rendered in plaintext

Save and check for duplicate emails in lowercase

Describe the bug
Currently, the user is able to sign up for multiple accounts with the same email by changing the case of letters in the email address. Sanitize this by forcing the email into lower case before using it for saving of validation.

This can probably be done by converting it to lowercase in the validation for the email field.

Design and create new app for managing storage locations

Storage locations is an optional information related to tools and materials that will help users mark where things are in the space for easy finding.

Some ideas.
A Space model that stores a configurable grid system. spaces are nestable and supply a means to say a certain tool is contained within it. Each space grid element is potentially another space if it is being used to store a tool. Otherwise, it doesn't exist in the system. If a tool is added and removed, the space should not be automatically removed.

The top-level space would be the makerspace, the grid would represent a chessboard style segregation of the floor. (A1, A2โ€ฆ) sub-spaces could be shelving or other storage methods. When creating a space you're given the option to configure its grid.

Investigate re-using tagulous module to create nested spaces.

Once the space model is defined, allow a Tool to be associated with a space with a field named storage_space or if we choose to name the model Location storage_location.

The Tool could also have another relation to a location, if the borrowing user moves its location while using it. Say if they move it to their space, they are given the option to store which space they've moved it to. This may be useful for tools that are being taken out of storage that others may need to use and would like to know the actual location. ( kinda edge casing here)

Homepage shows recently added tools

On the current home page, the currently borrowed tools and users tools are shown, a third column should be added that shows the most recently added tools. limit to the same limit for borrowed tools.

Signup page Auto-Fill is broken on FF 62.0.3

Steps to reproduce:

  1. Go to signup page.
  2. Begin entering an email that is in FF's auto fill.
  3. Click existing email address in auto fill box.

What should happen:
The email should be populated in the email box.

What happens:
Email is not filled.

Homepage displays all currently checked out tools and quick return button.

Is your feature request related to a problem? Please describe.
No easy way to quickly return tools

Describe the solution you'd like
Homepage, when logged in, shows all the tools you have checked out. Allows you to easily return them.

Describe alternatives you've considered
Return feature on your account page instead of

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.