diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/dataSources/2dac2136-d902-4d27-8789-9371934602fd.xml b/.idea/dataSources/2dac2136-d902-4d27-8789-9371934602fd.xml index f4ef6ac..308c6ef 100644 --- a/.idea/dataSources/2dac2136-d902-4d27-8789-9371934602fd.xml +++ b/.idea/dataSources/2dac2136-d902-4d27-8789-9371934602fd.xml @@ -14,727 +14,864 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
1
- +
1
- + 1 integer|0s 1 1 - + 2 text|0s 1 - + 3 text|0s - + 4 text|0s - + 5 text|0s 1 - + 6 text|0s 1 - + 7 text|0s 1 - + 8 text|0s 1 - + 9 text|0s 1 - + 1 channel_id 1 - + 1 username 1 - + 1 custom_url 1 - + id 1 - + channel_id sqlite_autoindex_YtManagerApp_channel_1 - + username sqlite_autoindex_YtManagerApp_channel_2 - + custom_url sqlite_autoindex_YtManagerApp_channel_3 - + 1 integer|0s 1 1 - + 2 text|0s 1 - - 3 - integer|0s - - 4 + 3 text|0s 1 + 4 + text|0s + 1 + + 5 text|0s 1 - + 6 text|0s 1 - + 7 - text|0s - 1 + bool|0s - + 8 integer|0s + + + 9 + text|0s + + + 10 + bool|0s + + + 11 + integer|0s 1 - + + 12 + integer|0s + + + 13 + integer|0s + 1 + + 1 playlist_id 1 - - parent_folder_id - - - + channel_id - + + parent_folder_id + + + + user_id + + + id 1 - + playlist_id sqlite_autoindex_YtManagerApp_subscription_1 - - parent_folder_id - YtManagerApp_subscriptionfolder - id - 1 - 1 - - + channel_id YtManagerApp_channel id 1 1 - + + parent_folder_id + YtManagerApp_subscriptionfolder + id + 1 + 1 + + + user_id + auth_user + id + 1 + 1 + + 1 integer|0s 1 1 - + 2 text|0s 1 - + 3 integer|0s + 1 - + + 4 + integer|0s + + + user_id + + + parent_id - + id 1 - + + user_id + auth_user + id + 1 + 1 + + parent_id YtManagerApp_subscriptionfolder id 1 1 - + 1 integer|0s 1 1 - + + 2 + bool|0s + + + 3 + bool|0s + + + 4 + bool|0s + + + 5 + integer|0s + + + 6 + integer|0s + + + 7 + text|0s + + + 8 + text|0s + + + 9 + text|0s + + + 10 + text|0s + + + 11 + bool|0s + + + 12 + bool|0s + + + 13 + bool|0s + + + 14 + text|0s + + + 15 + text|0s + + + 16 + integer|0s + 1 + + + 1 + user_id + + 1 + + + id + 1 + + + user_id + sqlite_autoindex_YtManagerApp_usersettings_1 + + + user_id + auth_user + id + 1 + 1 + + + 1 + integer|0s + 1 + 1 + + 2 text|0s 1 - + 3 text|0s 1 - + 4 text|0s + 1 - + 5 bool|0s 1 - + 6 + text|0s + + + 7 integer|0s 1 - - 7 - text|0s - 1 - - + 8 - text|0s + datetime|0s 1 - + 9 text|0s 1 - + 10 + text|0s + 1 + + + 11 integer|0s 1 - - 11 - datetime|0s - 1 - - + subscription_id - + id 1 - + subscription_id YtManagerApp_subscription id 1 1 - + 1 integer|0s 1 1 - + 2 varchar(80)|0s 1 - + 1 name 1 - + id 1 - + name sqlite_autoindex_auth_group_1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + group_id permission_id 1 - + group_id - + permission_id - + id 1 - + group_id auth_group id 1 1 - + permission_id auth_permission id 1 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 varchar(100)|0s 1 - + 4 varchar(255)|0s 1 - + content_type_id codename 1 - + content_type_id - + id 1 - + content_type_id django_content_type id 1 1 - + 1 integer|0s 1 1 - + 2 varchar(128)|0s 1 - + 3 datetime|0s - + 4 bool|0s 1 - + 5 varchar(150)|0s 1 - + 6 varchar(30)|0s 1 - + 7 varchar(254)|0s 1 - + 8 bool|0s 1 - + 9 bool|0s 1 - + 10 datetime|0s 1 - + 11 varchar(150)|0s 1 - + 1 username 1 - + id 1 - + username sqlite_autoindex_auth_user_1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id group_id 1 - + user_id - + group_id - + id 1 - + user_id auth_user id 1 1 - + group_id auth_group id 1 1 - + 1 integer|0s 1 1 - + 2 integer|0s 1 - + 3 integer|0s 1 - + user_id permission_id 1 - + user_id - + permission_id - + id 1 - + user_id auth_user id 1 1 - + permission_id auth_permission id 1 1 - + 1 integer|0s 1 1 - + 2 datetime|0s 1 - + 3 text|0s - + 4 varchar(200)|0s 1 - + 5 text|0s 1 - + 6 integer|0s - + 7 integer|0s 1 - + 8 smallint unsigned|0s 1 - + content_type_id - + user_id - + id 1 - + content_type_id django_content_type id 1 1 - + user_id auth_user id 1 1 - + 1 integer|0s 1 1 - + 2 varchar(100)|0s 1 - + 3 varchar(100)|0s 1 - + app_label model 1 - + id 1 - + 1 integer|0s 1 1 - + 2 varchar(255)|0s 1 - + 3 varchar(255)|0s 1 - + 4 datetime|0s 1 - + id 1 - + 1 varchar(40)|0s 1 - + 2 text|0s 1 - + 3 datetime|0s 1 - + 1 session_key 1 - + expire_date - + session_key 1 sqlite_autoindex_django_session_1 - + 1 text|0s - + 2 text|0s - + 3 text|0s - + 4 integer|0s - + 5 text|0s - + 1 - + 2 diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 5fa7757..5bb447b 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,39 +2,63 @@ - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + - - - + + + + + + + - + - + - - + + - + + + + + + + + - + - - - - - + + - + - - - - - - + + - + - - - - - - - + + @@ -211,37 +238,17 @@ - - - - - - - - - - - - - - - - - - - - - + - - - - - - + - - + + + + + + + @@ -254,9 +261,10 @@ @@ -284,6 +292,12 @@ _resolve_section_option ExtendedInterpolatorWithEnv ConfigParserWithEnv + logger + settings + app_config + dialog_ + .find + .show loading @@ -292,6 +306,8 @@ subscriptionEditDialog folderEditDialog = + dj_settings + modal_ @@ -300,43 +316,57 @@ @@ -346,10 +376,16 @@ true DEFINITION_ORDER + + + + + - @@ -432,12 +468,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Radio' + + '' + + '' + var $group = $(groupHTML).appendTo('#qunit-fixture') + + $group.find('input').on('change', function (e) { + e.preventDefault() + assert.ok(true, 'change event fired') + done() + }) + + $group.find('label').trigger('click') + }) + + QUnit.test('should check for closest matching toggle', function (assert) { + assert.expect(12) + var groupHTML = '
' + + '' + + '' + + '' + + '
' + var $group = $(groupHTML).appendTo('#qunit-fixture') + + var $btn1 = $group.children().eq(0) + var $btn2 = $group.children().eq(1) + + assert.ok($btn1.hasClass('active'), 'btn1 has active class') + assert.ok($btn1.find('input').prop('checked'), 'btn1 is checked') + assert.ok(!$btn2.hasClass('active'), 'btn2 does not have active class') + assert.ok(!$btn2.find('input').prop('checked'), 'btn2 is not checked') + $btn2.find('input').trigger('click') + assert.ok(!$btn1.hasClass('active'), 'btn1 does not have active class') + assert.ok(!$btn1.find('input').prop('checked'), 'btn1 is not checked') + assert.ok($btn2.hasClass('active'), 'btn2 has active class') + assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked') + + $btn2.find('input').trigger('click') // Clicking an already checked radio should not un-check it + assert.ok(!$btn1.hasClass('active'), 'btn1 does not have active class') + assert.ok(!$btn1.find('input').prop('checked'), 'btn1 is not checked') + assert.ok($btn2.hasClass('active'), 'btn2 has active class') + assert.ok($btn2.find('input').prop('checked'), 'btn2 is checked') + }) + + QUnit.test('should not add aria-pressed on labels for radio/checkbox inputs in a data-toggle="buttons" group', function (assert) { + assert.expect(2) + var groupHTML = '
' + + '' + + '' + + '
' + var $group = $(groupHTML).appendTo('#qunit-fixture') + + var $btn1 = $group.children().eq(0) + var $btn2 = $group.children().eq(1) + + $btn1.find('input').trigger('click') + assert.ok($btn1.is(':not([aria-pressed])'), 'label for nested checkbox input has not been given an aria-pressed attribute') + + $btn2.find('input').trigger('click') + assert.ok($btn2.is(':not([aria-pressed])'), 'label for nested radio input has not been given an aria-pressed attribute') + }) + + QUnit.test('should handle disabled attribute on non-button elements', function (assert) { + assert.expect(2) + var groupHTML = '
' + + '' + + '
' + var $group = $(groupHTML).appendTo('#qunit-fixture') + + var $btn = $group.children().eq(0) + var $input = $btn.children().eq(0) + + $btn.trigger('click') + assert.ok($btn.is(':not(.active)'), 'button did not become active') + assert.ok(!$input.is(':checked'), 'checkbox did not get checked') + }) + + QUnit.test('dispose should remove data and the element', function (assert) { + assert.expect(2) + + var $el = $('
') + var $button = $el.bootstrapButton() + + assert.ok(typeof $button.data('bs.button') !== 'undefined') + + $button.data('bs.button').dispose() + + assert.ok(typeof $button.data('bs.button') === 'undefined') + }) + + QUnit.test('should return button version', function (assert) { + assert.expect(1) + + if (typeof Button !== 'undefined') { + assert.ok(typeof Button.VERSION === 'string') + } else { + assert.notOk() + } + }) +}) diff --git a/YtManagerApp/static/YtManagerApp/import/bootstrap-4.1.3/js/tests/unit/carousel.js b/YtManagerApp/static/YtManagerApp/import/bootstrap-4.1.3/js/tests/unit/carousel.js new file mode 100644 index 0000000..baabcf4 --- /dev/null +++ b/YtManagerApp/static/YtManagerApp/import/bootstrap-4.1.3/js/tests/unit/carousel.js @@ -0,0 +1,944 @@ +$(function () { + 'use strict' + + QUnit.module('carousel plugin') + + QUnit.test('should be defined on jQuery object', function (assert) { + assert.expect(1) + assert.ok($(document.body).carousel, 'carousel method is defined') + }) + + QUnit.module('carousel', { + beforeEach: function () { + // Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode + $.fn.bootstrapCarousel = $.fn.carousel.noConflict() + }, + afterEach: function () { + $.fn.carousel = $.fn.bootstrapCarousel + delete $.fn.bootstrapCarousel + $('#qunit-fixture').html('') + } + }) + + QUnit.test('should provide no conflict', function (assert) { + assert.expect(1) + assert.strictEqual(typeof $.fn.carousel, 'undefined', 'carousel was set back to undefined (orig value)') + }) + + QUnit.test('should throw explicit error on undefined method', function (assert) { + assert.expect(1) + var $el = $('
') + $el.bootstrapCarousel() + try { + $el.bootstrapCarousel('noMethod') + } catch (err) { + assert.strictEqual(err.message, 'No method named "noMethod"') + } + }) + + QUnit.test('should return jquery collection containing the element', function (assert) { + assert.expect(2) + var $el = $('
') + var $carousel = $el.bootstrapCarousel() + assert.ok($carousel instanceof $, 'returns jquery collection') + assert.strictEqual($carousel[0], $el[0], 'collection contains element') + }) + + QUnit.test('should type check config options', function (assert) { + assert.expect(2) + + var message + var expectedMessage = 'CAROUSEL: Option "interval" provided type "string" but expected type "(number|boolean)".' + var config = { + interval: 'fat sux' + } + + try { + $('
').bootstrapCarousel(config) + } catch (err) { + message = err.message + } + + assert.ok(message === expectedMessage, 'correct error message') + + config = { + keyboard: document.createElement('div') + } + expectedMessage = 'CAROUSEL: Option "keyboard" provided type "element" but expected type "boolean".' + + try { + $('
').bootstrapCarousel(config) + } catch (err) { + message = err.message + } + + assert.ok(message === expectedMessage, 'correct error message') + }) + + QUnit.test('should not fire slid when slide is prevented', function (assert) { + assert.expect(1) + var done = assert.async() + $('