Commit graph

2430 commits

Author SHA1 Message Date
Gina Häußge
aab98a7c9f Disable "Slice" button when printing and local slicer is selected
Solves #1631
2017-02-24 13:21:33 +01:00
Gina Häußge
3a984d41ff Remove color option in printer profile editor
We don't use it anywhere and its presence keeps confusing users. Kept
in the model since we might want to use it at some later time.

Closes #1790
2017-02-24 12:38:37 +01:00
Gina Häußge
28d01e2fa6 Disable external heatup detection until firmware is detected 2017-02-24 12:32:05 +01:00
Gina Häußge
2198add8e6 SWU: Refresh cache on startup & prevent concurrent refresh & fix hash 2017-02-24 11:56:02 +01:00
Gina Häußge
1de307e15d Log version, safe mode & plugins to log on log roll over
We want to make sure that information is ALWAYS in each and every log.
2017-02-24 10:53:16 +01:00
Gina Häußge
aab7b7f797 Timelapse: ignore both z-hop flanks but allow z-hop to next layer
Former implementation tested for z-hop rising flank and anything that
is falling. That however causes issues with z-hop directly followed
by layer change (diff is not z-hop size but negative, image hence not
captured).

Instead of testing for positive flank == z-hop and any negative flank,
we now test for absolute value == z-hop.

Solves #1777
2017-02-23 17:17:38 +01:00
Gina Häußge
162e8c50d3 Fixed CSS and LESS bundling for core vs plugins vs all 2017-02-23 17:05:42 +01:00
Gina Häußge
636d8e0faa Eventhandling: Wait for command to finish before triggering next
Should solve #733
2017-02-23 16:50:04 +01:00
Gina Häußge
62890ef73a Fix a bunch of caching issues
Cache was not invalidated on change of:

  * snapshot URL presence
  * system menu entry presence
  * gcode viewer enabled/disabled
  * changes in access control availability

Refactored cache setup to add enable_timelapse, enable_gcodeviewer
and enable_accesscontrol to ETag calculation, removed system menu
check. Template filtering will now be done based on the values of
these flags at render time, not before.

See also #1776 for a related ticket.
2017-02-23 14:49:47 +01:00
Gina Häußge
79af90dd6a Make sure we don't try to use an empty logging.yaml
Fixes #1560
2017-02-22 18:25:12 +01:00
Gina Häußge
d15262e7cc Fixed wrong replacement for __progress placeholder in events
Data reported from printer backend is already percent, multiplying it
with 100 again produces wrong values.
2017-02-22 17:58:21 +01:00
Gina Häußge
41f0ed0124 Move announcements between system and login 2017-02-22 15:20:07 +01:00
Gina Häußge
ff595a7e31 Move notifications down a bit
See discussion in #1741
2017-02-22 15:19:04 +01:00
Gina Häußge
444312d7d9 Free up some space in the navbar
* Use only icons for settings and system entries
  * Limit length of login entry to 100px
  * Limit length of instance name to 250px
  * Removed "OctoPrint" text if instance name is set

See discussion in #1741
2017-02-22 15:17:39 +01:00
Gina Häußge
c203d79434 Remove empty-folder-filter
Doesn't really add anything and only causes issues for people.

Solves #1671
2017-02-21 17:06:26 +01:00
Eyal Soha
6aae0017c4 add sameDevice to SlicingViewModel
(cherry picked from commit fea0791)
2017-02-21 14:15:02 +01:00
Eyal Soha
ebe93f9a6d add same device to the slicing API
(cherry picked from commit ce38ef6)
2017-02-21 14:14:54 +01:00
Greg Hulands
a16680b453 Issue #1780: Safari Webcam Fix.
(cherry picked from commit e82efd2)
2017-02-21 14:13:26 +01:00
Gina Häußge
9f963696c8 Interpret wait during connect fully as ok
Otherwise we might switch to connected state but lack an
acknowledgement to send the next lines and stay in a wait cycle.

Also related to #1770
2017-02-20 12:44:42 +01:00
Gina Häußge
7f0eb8d895 Hex-escape unprintable characters in terminal tab
If there's any binary going over the line like null bytes, we want to
see that here too.
2017-02-20 12:05:38 +01:00
Gina Häußge
e1eaf4eb8e comm: More resilience against garbage on the line during connect
* leading and trailing null bytes will now be stripped
  * while connecting, a "wait" will also trigger switch to connected
    state - relevant when connecting without reset and initial "ok" for
    M110 gets mangled
  * extended virtual printer by new options to test the above:
      * mangled "ok" can now be injected via "preparedOks" setting and
        prepare_ok DEBUG command
      * simulated reset lines on beginning ("start" etc) now only sent
        if new setting "simulateReset" is true

Should fix #1770
2017-02-20 11:57:47 +01:00
Gina Häußge
4cc410133b Fixed description of a setting 2017-02-17 13:52:16 +01:00
Gina Häußge
216f05d553 Hibernate communication with printer during active G4 on Repetier
Should hopefully solve #1506
2017-02-17 13:52:16 +01:00
Gina Häußge
b7c078f429 Fixed size checking in watchdog growth check
It helps to actually update the last checked file size on each
iteration 🤦‍♀️

Related to #1760
2017-02-17 13:05:23 +01:00
Gina Häußge
7331bc2bf5 Ensure file from watched folder is stable in size before upload
Additional fix for #1760
2017-02-16 19:30:58 +01:00
Gina Häußge
59f49f392e Refactored upload/watched to use file check methods in PrinterInterface
Extracted methods to check if modification of a file is possible and
to determine if a specific file is currently select to take care of
denying upload and re-selecting file after upload.

Refactored watched folder handler to use the same methods and mirror
behaviour of file upload via API.

Should solve #1760
2017-02-16 19:29:21 +01:00
Gina Häußge
997e0b510b Abort file analysis if file is about to be overwritten 2017-02-16 16:52:30 +01:00
Gina Häußge
1f9b8f40cd Enqueue copied/moved files/folders for analysis
Fixes #1775
2017-02-15 17:35:42 +01:00
Gina Häußge
8630ec5beb Fix some bugs in the client lib refactoring
* Endless recursion on file delete as reported in #1738
  * Broken implementation of .move
  * Broken definition of .pathForEntry, .entryForPath,
    .pathForElement and .elementByPath
2017-02-15 16:15:35 +01:00
Gina Häußge
e8349d6593 Always create a user session for requests with an API key
API endpoints that were not decorated with restricted_access so far did
not properly create a user session for cookie-less requests with an API
key only.

That meant that flask.current_user stayed an anonymous user, even with
the global admin API key. In case of /api/settings that meant that even
with the global admin API key it was not possible to read settings that
are admin-only (like the API key for example) or user-only.

This has now been rectified by moving the session creation into a
different before_request handler that is registered globally on all API
endpoints, meaning that an API key will now always lead to a user
session to be created, regardless of the requirements of the API
endpoint in question. Additionally the CORS handling was extracted
as well as the API key presence enforcement.

BlueprintPlugins will now also get the CORS and session-from-API-Key
treatment if they do not declare their endpoints as restricted.

Might solve the API key "n/a" issue filed in #1751, but since the cause
of that isn't identified yet that's not sure.
2017-02-15 13:12:35 +01:00
Gina Häußge
9b457cce9e Fixed user settings API 2017-02-15 11:38:33 +01:00
Gina Häußge
b2229ae24a SWU: Ignore empty or None configs 2017-02-14 15:03:20 +01:00
Gina Häußge
189c842881 dict_merge should not hiccup on None values 2017-02-14 15:02:33 +01:00
Gina Häußge
6963e5e495 SWU: We need to do that overwrite protection differently
Only replace data from config.yaml with merged results once everything
trying to overwrite stuff is filtered out.
2017-02-14 12:52:07 +01:00
Gina Häußge
7b6642f7c2 SWU: Better resilience against overwriting of update configs
Don't allow overwriting of "octoprint" config through plugins, don't
allow overwriting of already registered configs unless id to register
matches plugin identifier (in which case the already registered config
was probably a case of a copy-paste-error from another plugin).
2017-02-14 11:14:03 +01:00
Gina Häußge
5d97dc4b40 Better resilience against broken software update configs
Fixes #1773
2017-02-14 10:42:02 +01:00
Paul de Vries
b453897ea3 Upgrade LESS.min.js from 2.7.1 to 2.7.2
This will fix the broken contrast function introduced in 2.7.1

This commit will only affect the contrast function
See more @ https://github.com/less/less.js/compare/v2.7.1...v2.7.2#diff-8c2e50ef84a06711745a46e22c67d631
2017-02-05 14:45:10 +01:00
Gina Häußge
54a9a7b906 Use codecs.open for translation po files 2017-01-26 17:22:51 +01:00
Gina Häußge
a3f24c59e9 Don't render untranslated strings to messages.js 2017-01-26 17:22:07 +01:00
Gina Häußge
eaadf8743b Allow multiple instances of the JS client
We now have a global OctoPrintClient, which is the class from which
all clients are derived, and a global OctoPrint, which is a single
instance already setup and ready to use in case we only need one.

It would be cleaner to have clients create that singular instance
themselves, but we need to maintain backward compatibility for now
with how we established the client to work with the 1.3.0 release.

New clients can be create with

    client = new OctoPrintClient({ /* options */ });

Alternatively the options can be left out and set at a later point:

    client = new OctoPrintClient();
    /* ... */
    client.options = { /* options */ };

Individual client components register themselves with OctoPrintClient
via OctoPrintClient.registerComponent(name, component) from the
component JS files. Just like before their instances are then
available in the individual client instances under "<client>.<name>",
 e.g. "OctoPrint.files".

Plugin components register themselves with OctoPrintClient via
OctoPrintClient.registerPluginComponent(name, component) from the
component JS files. Just like before their instances are then
available in the individual client instances under "<client>.plugins
.<name>", e.g. "OctoPrint.plugins.softwareupdate".

This should make it possible to create dashboard pages utilizing the
JS client that monitor the status of multiple OctoPrint instances,
without workarounds such as having to swap out the options globally
before each request.

See #1681 for the corresponding discussion.
2017-01-26 14:59:56 +01:00
Gina Häußge
b0cd742bf4 Fix UMD pattern 2017-01-26 14:59:54 +01:00
Gina Häußge
7ab3eabe0f Support for shared nozzle setups
Support multi-extruder setups that share a single nozzle and heater,
like the E3D Cyclops, Diamon hotend or probably the upcoming Prusa Mk2
multi-extruder upgrade.

The Control tab will still allow tool switching and extruding for
the configured extruders, the Temperature tab will only display
one hotend temperature though.

Printer profiles have been extended by a new option
extruder.sharedNozzle that defaults to False. Extruder offsets are
not displayed in the profile editor if that setting is checked and
reset to (0,0).
2017-01-26 13:33:42 +01:00
Gina Häußge
8f3b6dca79 Fix stupid typo 2017-01-25 16:21:15 +01:00
Gina Häußge
29a2c6abec Allow new locales to be provided by plugins
Core translations still win over plugin translations, but at least
this way it's possible to provide full blown translations via plugins.
2017-01-25 16:02:25 +01:00
Gina Häußge
9250cd0c3b Whitespace, comments & added @eyal0 to AUTHORS.md
(cherry picked from commit c7f67cc)
2017-01-24 11:38:52 +01:00
Eyal Soha
6b2f28240e Ignore a leading v or V in github release tags.
This fixes foosel/OctoPrint#1723 .

(cherry picked from commit f1c3829)
2017-01-24 11:38:46 +01:00
Gina Häußge
c8dfe363bc Only offer daemon subcommand on linux 2017-01-20 17:10:59 +01:00
Gina Häußge
e20fcd9ce5 Merge branch 'rc/maintenance' into maintenance 2017-01-20 16:28:42 +01:00
Gina Häußge
3da3cfd8a0 Fixed passing of "daemon" legacy parameter on CLI
This time this hopefully really solves #1641
2017-01-20 15:33:24 +01:00
Gina Häußge
88a8bdf7b3 Add "Restart in safe mode" system menu entry 2017-01-20 14:27:06 +01:00
Gina Häußge
a948050c54 SWU: Fixed update configs without restart 2017-01-19 14:07:04 +01:00
Gina Häußge
0d76df2cd5 SWU: Fixed python_checker and python_updater 2017-01-19 14:06:33 +01:00
Gina Häußge
3b5c2fe519 SWU: Config version 4 didn't properly migrate old commands -> version 5 2017-01-19 12:33:45 +01:00
Gina Häußge
6f5ee4d291 Fixed doctests of software update version checks 2017-01-19 12:33:44 +01:00
Gina Häußge
507ddde9dd Improved error resilience in plugin repository handling 2017-01-19 12:33:43 +01:00
Gina Häußge
a646fff5ff Fix persistence of config version on settings migration 2017-01-19 12:33:27 +01:00
Gina Häußge
6268e27dd7 Fix settings not allowing to delete values not in defaults anymore 2017-01-19 12:33:25 +01:00
Gina Häußge
caa84d7918 Don't kill manual software update configs during migration
See lengthy comment in source added through this commit for details.
2017-01-19 12:11:01 +01:00
Gina Häußge
6d1e28ae9c We still need _read_lines after all in the streamed file info 2017-01-18 13:04:01 +01:00
Gina Häußge
1e482369b8 Further synchronization in comm layer
Prevent concurrent sending of commands from the monitor thread for
incoming ok's while processing the start, pause, resume or cancel
of a print job.
2017-01-18 12:58:38 +01:00
Gina Häußge
a6c4f8ba3b Fix potential race condition on print start
When the sending of the first line of a file to print is still taking
place while an "ok" from the firmware comes in, it's possible
that two threads will try to access the file handle in parallel. That
can lead to trouble within Python's codecs module.

Synchronizing all access to the handle should do the trick.
2017-01-17 17:46:20 +01:00
Gina Häußge
6bd788a83f Always define pixfmt for timelapse in video filter chain
Apparently having a chain AND the pix_fmt parameter
produces issues with higher resolutions.

Should fix #1317
2017-01-17 13:03:27 +01:00
Gina Häußge
4c971a92db from ... import * is only allowed at module level 2017-01-13 14:17:39 +01:00
Gina Häußge
1f0e67f85e Added FAQ link to footer 2017-01-13 13:42:53 +01:00
Noah Martin
74597483dc Added a mask icon for Safari pinned tab and touchbar
(cherry picked from commit ff02192)
2017-01-13 13:33:21 +01:00
Noah Martin
b1057a4cc8 Simplified install process on Mac
(cherry picked from commit 726eec8)
2017-01-13 13:29:11 +01:00
Gina Häußge
20cd13904d Cura: Fix selection of which start/end gcode to choose
So far the plugin selected the gcode script corresponding to the number of
extruders configured in the printer profile. After a close look into the
implementation in Cura itself, prompted by #1708, it turns out that this is
in fact wrong.

Cura selects the gcode script to use based on the maximum of the number of
extruders needed for printing the models in the scene and the minimum number
of extruders needed for generating support (if support extruder is "both" or "first"
or there is only one extruder, that's 1, if it's "second" and there is more than one
extruder, it's 2).

This commit changes the plugin's implementation to mirror this implementation.
The difference to Cura is that we have the number of extruders needed for the
models in the scene hard coded to 1 since we only support STL right now which
can never contain more than one object. If we ever decide to support merging of
multiple STLs into one single multi-extruder print or other model files like AMF
or OBJ from OctoPrint's slicer support, we need to change this.
2017-01-13 12:54:01 +01:00
Gina Häußge
95e4ad82b4 Cura: Fix off-by-one error for placeholder replacement
Affected print_temperature and filament_diameter placeholders.

E.g. `print_temperature2` was wrongly attempting to fetch `print_temperatures[2]`
 instead of `print_temperatures[1]` (0-based-indexing!)

 Partially fixes #1708
2017-01-13 11:25:08 +01:00
Gina Häußge
9e3d2bed65 Merge branch 'improve/passwordManagers' into maintenance 2017-01-12 18:59:39 +01:00
Gina Häußge
7f3d4a8380 Allow configuration of analysis throttling via config.yaml 2017-01-12 18:16:50 +01:00
Gina Häußge
e6dd37e26e Various analysis queue fixes
* Fix priority queue sorting (sorts ascending, not descending!)
  * Abort low priority jobs when a high priority job comes in
  * Utilize queue for tracking aborted jobs too
  * Abort analysis for items that are to be deleted/moved (also
    fixes issue under Windows where it was impossible to delete
    a file for which the analysis was still running).
2017-01-12 18:16:42 +01:00
Gina Häußge
d69c166f10 Fix unanalysed files from subfolders to not be found on startup 2017-01-12 15:15:02 +01:00
Gina Häußge
f6875c0df4 Update german translation 2017-01-12 14:34:00 +01:00
Gina Häußge
3ef7b37dc9 Hide login form when we are already logged in
Otherwise the Lastpass stuff will show up after all, despite
the positioning hack.
2017-01-12 14:23:44 +01:00
Gina Häußge
03085ab39b Fix width/height of login button in navbar 2017-01-12 14:22:34 +01:00
Gina Häußge
de0ee08e05 Fix Lastpass input button handling in login form
* move hidden login form to the left to hide overlayed
    Lastpass context buttons
  * do dropdown toggling for login form manually to
    not only ignore clicks into form but also into overlayed
    Lastpass context buttons for closing the dropdown again;
    do close dropdown for included a and button elements
    though
2017-01-12 13:32:10 +01:00
Gina Häußge
881d3bb212 Merge branch 'maintenance' into main/supportPasswordManagers 2017-01-11 19:03:31 +01:00
Gina Häußge
fb5d5682e6 Do not eat 0% progress
Fixes #1344 (this time for good I hope)
2017-01-11 17:57:45 +01:00
Gina Häußge
071c32fff1 Ported fix of solid layer count from Ultimaker/CuraEngine#140
Fixes #1692
2017-01-11 16:15:43 +01:00
Gina Häußge
7c74594f06 Adjusted Cura profile handling to match latest Cura Legacy version
* Added/changed mappings of profile to engine settings to
    match Cura Legacy mapping:
    * perimeterBeforeInfill: taken from perimeter_before_infill (new,
      fixes #1693)
    * skinSpeed: taken from solidarea_speed (new)
    * raftAirGapLayer0: sum of raft_airgap and raft_airgap_all
    * raftAirGap: taken from raft_airgap_all (new)
    * raftFanSpeed: changed to 0
    * raftSurfaceThickness: taken from raft_surface_thickness (new)
    * raftSurfaceLinewidth & raftSurfaceLineSpacing: taken from
      raft_surface_linewidth (new)
  * Mach3 Gcode Flavor replaces S parameter with P parameter in
    temperature commands within generated GCODE, like in Cura
    Legacy
2017-01-11 14:50:09 +01:00
Gina Häußge
d83440d32d Use full path instead of only the file name for busy detection 2017-01-11 13:53:28 +01:00
Gina Häußge
c0dff1359b Fix file_in_path for windows environments 2017-01-11 13:51:40 +01:00
Gina Häußge
2ab7fa4d3a Support volume calculate for S3D files 2017-01-11 12:11:16 +01:00
Gina Häußge
f20e985d0d profile => slicing_profile & removed filament 0 check
If the slicer returns values for a tool we want it in our analysis
result, even if it's zero. That way the result will be the same as
if we have our own built in gcode analyser take a look at the
file.

(cherry picked from commit 818ae92)
2017-01-11 12:04:13 +01:00
derpicknicker1
58f934e2c1 Fix issue in getting file metadata after slicing
This fixes the issue that there were no informations about filament
usage in metadata after slicing with cura plugin. Trying to call
profile.get_float("filament_diameter") ended in en exception with
message " 'module' object has no attribute 'get_float' ". So i defined
profile before using profile and now it works.
See issue #1685
Also inserted a check to determine if filament usage is > 0 to exclude
tools with no filament usage in metadata.

(cherry picked from commit c9b38bd)
2017-01-11 12:04:02 +01:00
Gina Häußge
6e474d9096 Fix model size calculation during GCODE analysis
* Properly handle G0/G1 with no X, Y, Z coordinates in relative mode
    instead of duplicating coordinates - should fix #1675
  * Only take move commands with X, Y, Z coordinates into account for
    model size calculation - this makes our internal GCODE analysis behave
    like the GCODE viewer's analysis and produce the same model size. The
    downside is that extrusions on the origin are no longer taken into account
    for checking if a model is within bounds of the print bed, but that should
    hopefully not produce any issues in the real world.
2017-01-10 12:16:33 +01:00
Gina Häußge
f3f60674fc Allow a retraction z hop of 0 in timelapse configuration
See comment by @markwal at
https://github.com/foosel/OctoPrint/pull/1148#pullrequestreview-14802655
2017-01-09 17:00:10 +01:00
Marc Hannappel
dc3182c872 Fix folders doesn't get listed when performing a filtering in file section, issue #1667
(cherry picked from commit 8a8b88a)
2017-01-09 16:54:55 +01:00
Paul de Vries
6cc84a1473 Make the login overlay always 'visible' in the DOM so that password managers can auto-submit their credentials 2016-12-31 13:13:01 +01:00
Paul de Vries
ce1344eb0c Remove legacy onKeyUp and ignored autocomplete 2016-12-30 20:56:08 +01:00
Gina Häußge
84e8f8e1ca Fix terminal filter regexes & add filter for wait 2016-12-16 13:01:56 +01:00
Gina Häußge
2669e79778 Change wording of buttons in cancel confirmation
"Cancel" and "Proceed" is misleading.

Closes #1656
2016-12-16 12:31:07 +01:00
Gina Häußge
42e3922053 Don't care about common params on CLI
--basedir, --config, --verbose, --safe may now come before or after
subcommands and should still be evaluated.

For the server commands (legacy, "server" and "daemon"), the same
should now hold true for the related parameters --host, --port, --debug,
--logging, --iknowwhatimdoing and also --pid (for daemon command).

While having the parameters belong to the individual commands and only
there (which is click's basic approach) is way more cleaner, too many people
were running into issues with that strict approach after all.

I just hope the somewhat hackish approach with context injection needed to
get the less strict version to work won't backfire badly in the long run.

See also #1633 and #1657
2016-12-16 12:18:05 +01:00
Gina Häußge
a735bcc18d Take keyboard control setting into account for possible check
Solves #1660
2016-12-16 10:13:53 +01:00
Gina Häußge
0560009204 Merge branch 'dev/supportPasswordManagers' into maintenance 2016-12-13 14:43:45 +01:00
Gina Häußge
cb9fba73a2 Move cancel confirmation checkbox up a bit 2016-12-13 14:28:44 +01:00
Gina Häußge
cbbfb4af20 Merge branch 'dev/cancelconfirm' of https://github.com/ntoff/OctoPrint into pr/ntoff/dev/cancelconfirm 2016-12-13 14:03:26 +01:00
Gina Häußge
50e55ed30d Do not have CLI interpret OCTOPRINT_VERSION env var
--version is a flag, not an actual parameter (wouldn't really make sense
too). I'm not sure why that isn't the default behaviour of the built-in
version_option decorator tbh.

See #1647
2016-12-12 10:59:22 +01:00
Gina Häußge
d0ff9cb65e Fix octoprint --daemon backwards compatibility 2016-12-12 10:05:11 +01:00
ntoff
e458e3dd18 cancel confirmation option
display or not the confirmation to cancel a print
2016-12-11 00:52:47 +10:00