├── octoprint_queue ├── templates │ ├── README.txt │ ├── queue_settings.jinja2 │ └── queue_tab.jinja2 ├── static │ ├── less │ │ └── queue.less │ ├── css │ │ └── queue.css │ └── js │ │ └── queue.js └── __init__.py ├── MANIFEST.in ├── babel.cfg ├── requirements.txt ├── .editorconfig ├── .gitignore ├── extras └── queue.md ├── README.md ├── setup.py └── LICENSE /octoprint_queue/templates/README.txt: -------------------------------------------------------------------------------- 1 | Put your plugin's Jinja2 templates here. -------------------------------------------------------------------------------- /octoprint_queue/static/less/queue.less: -------------------------------------------------------------------------------- 1 | // TODO: Put your plugin's LESS here, have it generated to ../css. 2 | -------------------------------------------------------------------------------- /octoprint_queue/static/css/queue.css: -------------------------------------------------------------------------------- 1 | #tab_plugin_queue .additionalInfo { 2 | font-size: 85%; 3 | color: #999; 4 | } 5 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include README.md 2 | recursive-include octoprint_queue/templates * 3 | recursive-include octoprint_queue/translations * 4 | recursive-include octoprint_queue/static * 5 | -------------------------------------------------------------------------------- /babel.cfg: -------------------------------------------------------------------------------- 1 | [python: */**.py] 2 | [jinja2: */**.jinja2] 3 | extensions=jinja2.ext.autoescape, jinja2.ext.with_ 4 | 5 | [javascript: */**.js] 6 | extract_messages = gettext, ngettext 7 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | ### 2 | # This file is only here to make sure that something like 3 | # 4 | # pip install -e . 5 | # 6 | # works as expected. Requirements can be found in setup.py. 7 | ### 8 | 9 | . 10 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # This file is for unifying the coding style for different editors and IDEs 2 | # editorconfig.org 3 | 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | charset = utf-8 9 | insert_final_newline = true 10 | trim_trailing_whitespace = true 11 | 12 | [**.py] 13 | indent_style = tab 14 | 15 | [**.js] 16 | indent_style = space 17 | indent_size = 4 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | 5 | # C extensions 6 | *.so 7 | 8 | # Distribution / packaging 9 | .Python 10 | env/ 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | lib/ 17 | lib64/ 18 | parts/ 19 | sdist/ 20 | var/ 21 | *.egg-info/ 22 | .installed.cfg 23 | *.egg 24 | 25 | # PyInstaller 26 | # Usually these files are written by a python script from a template 27 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 28 | *.manifest 29 | *.spec 30 | 31 | # Installer logs 32 | pip-log.txt 33 | pip-delete-this-directory.txt 34 | 35 | # Unit test / coverage reports 36 | htmlcov/ 37 | .tox/ 38 | .coverage 39 | .cache 40 | nosetests.xml 41 | coverage.xml 42 | 43 | # Translations 44 | *.mo 45 | *.pot 46 | 47 | # Django stuff: 48 | *.log 49 | 50 | # Sphinx documentation 51 | docs/_build/ 52 | 53 | # PyBuilder 54 | target/ 55 | .idea 56 | OctoPrint-PrintHistory.iml 57 | -------------------------------------------------------------------------------- /octoprint_queue/templates/queue_settings.jinja2: -------------------------------------------------------------------------------- 1 |
34 | -------------------------------------------------------------------------------- /extras/queue.md: -------------------------------------------------------------------------------- 1 | --- 2 | layout: plugin 3 | 4 | id: queue 5 | title: OctoPrint-Queue 6 | description: A simple queue setup designed for use by staff at a public library. 7 | authors: 8 | - Chris Hennes, Pioneer Library System 9 | license: AGPLv3 10 | 11 | date: 2022-06-06 12 | 13 | homepage: https://github.com/chennes/OctoPrint-Queue 14 | source: https://github.com/chennes/OctoPrint-Queue 15 | archive: https://github.com/chennes/OctoPrint-Queue/archive/master.zip 16 | 17 | tags: 18 | - ui 19 | - queue 20 | 21 | screenshots: 22 | - url: /assets/img/plugins/queue/interface.png 23 | alt: Screenshot of the main user interface of the plugin. 24 | caption: The queue with a few items in it. 25 | - url: /assets/img/plugins/queue/add.png 26 | alt: Screenshot of the Add to Queue screen. 27 | caption: The Add to Queue screen appears when you upload a file, or when you click the "Add" button. 28 | - url: /assets/img/plugins/queue/settings.png 29 | alt: The settings screen. 30 | caption: The settings screen showing the default priorities. 31 | 32 | featuredimage: /assets/img/plugins/queue/queue.png 33 | 34 | compatibility: 35 | octoprint: 36 | - 1.3.0 37 | python: ">=3.0,<4" 38 | 39 | --- 40 | 41 | ## A simple print queue 42 | 43 | Designed for use at a public library, this plugin allows staff to efficiently manage customer print 44 | jobs. Its simple interface and setup are easy to learn, and your organization can either implement its own 45 | prioritization scheme or use the one provided with the plugin. It is primarily intended as a staff communication 46 | mechanism, allowing staff to see which job they should start up next, as well as look up completed jobs 47 | to provide information to customers. 48 | 49 | # Purely local 50 | 51 | This plugin does not use any outside services and has no requirements beyond having an OctoPrint installation. 52 | It does not enforce any restrictions on the input fields, giving staff complete flexibility in how the tool 53 | gets used. 54 | 55 | Copyright 2019 [Pioneer Library System](http://pioneerlibrarysystem.org). Some rights reserved, see the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html) for details. 56 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OctoPrint-Queue 2 | 3 | This plugin provides a simple print queue with support for priority categories. When you upload a file the system presents a dialog for entering the file into your print queue, or you can manually click the "Add to queue" button. The queue sorts by those categories first, and then within each category by submission date. So, for example, if you have categories "Urgent", "Customer", and "Staff", your urgent prints will be at the top of the queue, followed by customer, then staff. The oldest urgent job is at the top, and the newest staff job is at the bottom. When a print has been completed, an "archive" button removes it from the queue (but retains it in the database for record-keeping). 4 | 5 | The queue was designed for use by staff at a public library, so it also supports keeping track of customer contact information, job cost, a staff contact person for the job, and a general-purpose notes field. 6 | 7 | ## Setup 8 | 9 | Install via the bundled [Plugin Manager](https://github.com/foosel/OctoPrint/wiki/Plugin:-Plugin-Manager) 10 | or manually using this URL: 11 | 12 | https://github.com/chennes/OctoPrint-Queue/archive/master.zip 13 | 14 | ## Configuration 15 | 16 | The plugin ships with the following priority categories preconfigured: 17 | - Urgent 18 | - Customer 19 | - Student 20 | - Internal 21 | - Other 22 | 23 | This is configurable via the OctoPrint preferences dialog: you can have as many or as few categories as you want, and they can be in whatever order you want. For example, you might just have "Urgent" and "Normal." Note that changing the available categories while there are jobs in the queue may result in some confusion, since the job's category or priority may have changed. 24 | 25 | ## License 26 | 27 | Copyright © 2019 [Pioneer Library System](http://pioneerlibrarysystem.org). 28 | 29 | This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 30 | 31 | This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [GNU Affero General Public License](https://www.gnu.org/licenses/agpl-3.0.en.html) for more details. 32 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # coding=utf-8 2 | 3 | ######################################################################################################################## 4 | # The plugin's identifier, has to be unique 5 | plugin_identifier = "queue" 6 | 7 | # The plugin's python package, should be "octoprint_| Date | 42 |Customer | 43 |File | 44 |Print type | 45 |46 | |
|---|---|---|---|---|
| 51 | |
52 |
54 |
57 | Contact:
55 | Staff member:
56 | |
58 |
59 |
61 |
63 | Note:
62 | |
64 |
65 |
67 |
69 | Cost: (prepaid)
68 | |
70 | 71 | 76 | | 77 |