') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Fix call to get with unsupported parameters by bjester · Pull Request #2907 · learningequality/studio · GitHub
Skip to content

Fix call to get with unsupported parameters - #2907

Merged
rtibbles merged 8 commits into
learningequality:hotfixesfrom
bjester:fix-invalid-get
Feb 4, 2021
Merged

Fix call to get with unsupported parameters#2907
rtibbles merged 8 commits into
learningequality:hotfixesfrom
bjester:fix-invalid-get

Conversation

@bjester

@bjesterbjester commented Feb 4, 2021

Copy link
Copy Markdown
Member

Description

Fixes an invalid function call to .get with params that are only supported when requesting collections. Adds more unit tests covering relevant code.

Issue Addressed (if applicable)

Resolves: #2903

QA Notes

  • This fixed a bug in the sort order code that would cause issues moving items to the end of a list, and could only occur when dragging downward, to end of the list, and dropping

Checklist

  • Is the code clean and well-commented?
  • Are there tests for this change?

@codecov

codecovBot commented Feb 4, 2021

Copy link
Copy Markdown

Codecov Report

Merging #2907 (cde5fa7) into hotfixes (28587f8) will increase coverage by 4.65%.
The diff coverage is 93.00%.

Impacted file tree graph

@@ Coverage Diff @@## hotfixes #2907 +/- ##
============================================
+ Coverage 80.80% 85.46% +4.65% 
============================================
Files 281 298 +17 Lines 12659 15794 +3135 ============================================
+ Hits 10229 13498 +3269 + Misses 2430 2296 -134 
Impacted FilesCoverage Δ
contentcuration/contentcuration/decorators.py56.60% <50.00%> (-37.60%)⬇️
...ntentcuration/contentcuration/db/models/manager.py91.20% <90.98%> (-8.80%)⬇️
contentcuration/contentcuration/forms.py82.85% <94.31%> (+34.40%)⬆️
contentcuration/contentcuration/api.py92.06% <100.00%> (+1.43%)⬆️
...tentcuration/contentcuration/context_processors.py100.00% <100.00%> (ø)
...ontentcuration/contentcuration/db/advisory_lock.py100.00% <100.00%> (ø)
...tcuration/contentcuration/db/models/expressions.py93.33% <100.00%> (-6.67%)⬇️
...entcuration/contentcuration/db/models/functions.py100.00% <100.00%> (ø)
...ation/contentcuration/tests/test_rest_framework.py36.93% <0.00%> (-63.07%)⬇️
contentcuration/contentcuration/utils/format.py21.05% <0.00%> (-49.54%)⬇️
... and 180 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update caaadfe...22dccd6. Read the comment docs.

const values = [nodeId, channelId];
return this.table.get({ '[node_id+channel_id]': values }).then(node => {
if (!node) {
return this.requestCollection({ _node_id_channel_id___in: values.join(',') }).then(

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you should need to do the join here - the get parameter serialization should handle this part.

For consistency, setting values to [[nodeId, channelId]] because we're doing an __in query is cleanest, although I think it has the same net result.

@marcellamakimarcellamaki left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. I did mention to @bjester one Dexie error with drag and drop but it seems like that is related to what Micah is working on, not this fix. After those issues are addressed, I can do a re-check of this and make sure the issue here was resolve and that's where the issue was 😄

@rtibbles
rtibbles merged commit b829b5f into learningequality:hotfixesFeb 4, 2021
@bjester
bjester deleted the fix-invalid-get branch April 27, 2021 20:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Copy to Clipboard doesn't work - seems like the resources are never copied

3 participants

@bjester@rtibbles@marcellamaki