ckanext-theming 0.0.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ckanext/theming/__init__.py +0 -0
- ckanext/theming/cli.py +650 -0
- ckanext/theming/dump_source.json +51 -0
- ckanext/theming/helpers.py +53 -0
- ckanext/theming/interfaces.py +68 -0
- ckanext/theming/lib.py +513 -0
- ckanext/theming/plugin.py +42 -0
- ckanext/theming/reference.py +336 -0
- ckanext/theming/templates/benchmarks/block.html +4 -0
- ckanext/theming/templates/benchmarks/block_1k.html +4000 -0
- ckanext/theming/templates/benchmarks/direct_include.html +1 -0
- ckanext/theming/templates/benchmarks/direct_include_1k.html +1000 -0
- ckanext/theming/templates/benchmarks/direct_include_legion.html +3 -0
- ckanext/theming/templates/benchmarks/legion/1.html +4 -0
- ckanext/theming/templates/benchmarks/legion/10.html +4 -0
- ckanext/theming/templates/benchmarks/legion/100.html +4 -0
- ckanext/theming/templates/benchmarks/legion/1000.html +4 -0
- ckanext/theming/templates/benchmarks/legion/101.html +4 -0
- ckanext/theming/templates/benchmarks/legion/102.html +4 -0
- ckanext/theming/templates/benchmarks/legion/103.html +4 -0
- ckanext/theming/templates/benchmarks/legion/104.html +4 -0
- ckanext/theming/templates/benchmarks/legion/105.html +4 -0
- ckanext/theming/templates/benchmarks/legion/106.html +4 -0
- ckanext/theming/templates/benchmarks/legion/107.html +4 -0
- ckanext/theming/templates/benchmarks/legion/108.html +4 -0
- ckanext/theming/templates/benchmarks/legion/109.html +4 -0
- ckanext/theming/templates/benchmarks/legion/11.html +4 -0
- ckanext/theming/templates/benchmarks/legion/110.html +4 -0
- ckanext/theming/templates/benchmarks/legion/111.html +4 -0
- ckanext/theming/templates/benchmarks/legion/112.html +4 -0
- ckanext/theming/templates/benchmarks/legion/113.html +4 -0
- ckanext/theming/templates/benchmarks/legion/114.html +4 -0
- ckanext/theming/templates/benchmarks/legion/115.html +4 -0
- ckanext/theming/templates/benchmarks/legion/116.html +4 -0
- ckanext/theming/templates/benchmarks/legion/117.html +4 -0
- ckanext/theming/templates/benchmarks/legion/118.html +4 -0
- ckanext/theming/templates/benchmarks/legion/119.html +4 -0
- ckanext/theming/templates/benchmarks/legion/12.html +4 -0
- ckanext/theming/templates/benchmarks/legion/120.html +4 -0
- ckanext/theming/templates/benchmarks/legion/121.html +4 -0
- ckanext/theming/templates/benchmarks/legion/122.html +4 -0
- ckanext/theming/templates/benchmarks/legion/123.html +4 -0
- ckanext/theming/templates/benchmarks/legion/124.html +4 -0
- ckanext/theming/templates/benchmarks/legion/125.html +4 -0
- ckanext/theming/templates/benchmarks/legion/126.html +4 -0
- ckanext/theming/templates/benchmarks/legion/127.html +4 -0
- ckanext/theming/templates/benchmarks/legion/128.html +4 -0
- ckanext/theming/templates/benchmarks/legion/129.html +4 -0
- ckanext/theming/templates/benchmarks/legion/13.html +4 -0
- ckanext/theming/templates/benchmarks/legion/130.html +4 -0
- ckanext/theming/templates/benchmarks/legion/131.html +4 -0
- ckanext/theming/templates/benchmarks/legion/132.html +4 -0
- ckanext/theming/templates/benchmarks/legion/133.html +4 -0
- ckanext/theming/templates/benchmarks/legion/134.html +4 -0
- ckanext/theming/templates/benchmarks/legion/135.html +4 -0
- ckanext/theming/templates/benchmarks/legion/136.html +4 -0
- ckanext/theming/templates/benchmarks/legion/137.html +4 -0
- ckanext/theming/templates/benchmarks/legion/138.html +4 -0
- ckanext/theming/templates/benchmarks/legion/139.html +4 -0
- ckanext/theming/templates/benchmarks/legion/14.html +4 -0
- ckanext/theming/templates/benchmarks/legion/140.html +4 -0
- ckanext/theming/templates/benchmarks/legion/141.html +4 -0
- ckanext/theming/templates/benchmarks/legion/142.html +4 -0
- ckanext/theming/templates/benchmarks/legion/143.html +4 -0
- ckanext/theming/templates/benchmarks/legion/144.html +4 -0
- ckanext/theming/templates/benchmarks/legion/145.html +4 -0
- ckanext/theming/templates/benchmarks/legion/146.html +4 -0
- ckanext/theming/templates/benchmarks/legion/147.html +4 -0
- ckanext/theming/templates/benchmarks/legion/148.html +4 -0
- ckanext/theming/templates/benchmarks/legion/149.html +4 -0
- ckanext/theming/templates/benchmarks/legion/15.html +4 -0
- ckanext/theming/templates/benchmarks/legion/150.html +4 -0
- ckanext/theming/templates/benchmarks/legion/151.html +4 -0
- ckanext/theming/templates/benchmarks/legion/152.html +4 -0
- ckanext/theming/templates/benchmarks/legion/153.html +4 -0
- ckanext/theming/templates/benchmarks/legion/154.html +4 -0
- ckanext/theming/templates/benchmarks/legion/155.html +4 -0
- ckanext/theming/templates/benchmarks/legion/156.html +4 -0
- ckanext/theming/templates/benchmarks/legion/157.html +4 -0
- ckanext/theming/templates/benchmarks/legion/158.html +4 -0
- ckanext/theming/templates/benchmarks/legion/159.html +4 -0
- ckanext/theming/templates/benchmarks/legion/16.html +4 -0
- ckanext/theming/templates/benchmarks/legion/160.html +4 -0
- ckanext/theming/templates/benchmarks/legion/161.html +4 -0
- ckanext/theming/templates/benchmarks/legion/162.html +4 -0
- ckanext/theming/templates/benchmarks/legion/163.html +4 -0
- ckanext/theming/templates/benchmarks/legion/164.html +4 -0
- ckanext/theming/templates/benchmarks/legion/165.html +4 -0
- ckanext/theming/templates/benchmarks/legion/166.html +4 -0
- ckanext/theming/templates/benchmarks/legion/167.html +4 -0
- ckanext/theming/templates/benchmarks/legion/168.html +4 -0
- ckanext/theming/templates/benchmarks/legion/169.html +4 -0
- ckanext/theming/templates/benchmarks/legion/17.html +4 -0
- ckanext/theming/templates/benchmarks/legion/170.html +4 -0
- ckanext/theming/templates/benchmarks/legion/171.html +4 -0
- ckanext/theming/templates/benchmarks/legion/172.html +4 -0
- ckanext/theming/templates/benchmarks/legion/173.html +4 -0
- ckanext/theming/templates/benchmarks/legion/174.html +4 -0
- ckanext/theming/templates/benchmarks/legion/175.html +4 -0
- ckanext/theming/templates/benchmarks/legion/176.html +4 -0
- ckanext/theming/templates/benchmarks/legion/177.html +4 -0
- ckanext/theming/templates/benchmarks/legion/178.html +4 -0
- ckanext/theming/templates/benchmarks/legion/179.html +4 -0
- ckanext/theming/templates/benchmarks/legion/18.html +4 -0
- ckanext/theming/templates/benchmarks/legion/180.html +4 -0
- ckanext/theming/templates/benchmarks/legion/181.html +4 -0
- ckanext/theming/templates/benchmarks/legion/182.html +4 -0
- ckanext/theming/templates/benchmarks/legion/183.html +4 -0
- ckanext/theming/templates/benchmarks/legion/184.html +4 -0
- ckanext/theming/templates/benchmarks/legion/185.html +4 -0
- ckanext/theming/templates/benchmarks/legion/186.html +4 -0
- ckanext/theming/templates/benchmarks/legion/187.html +4 -0
- ckanext/theming/templates/benchmarks/legion/188.html +4 -0
- ckanext/theming/templates/benchmarks/legion/189.html +4 -0
- ckanext/theming/templates/benchmarks/legion/19.html +4 -0
- ckanext/theming/templates/benchmarks/legion/190.html +4 -0
- ckanext/theming/templates/benchmarks/legion/191.html +4 -0
- ckanext/theming/templates/benchmarks/legion/192.html +4 -0
- ckanext/theming/templates/benchmarks/legion/193.html +4 -0
- ckanext/theming/templates/benchmarks/legion/194.html +4 -0
- ckanext/theming/templates/benchmarks/legion/195.html +4 -0
- ckanext/theming/templates/benchmarks/legion/196.html +4 -0
- ckanext/theming/templates/benchmarks/legion/197.html +4 -0
- ckanext/theming/templates/benchmarks/legion/198.html +4 -0
- ckanext/theming/templates/benchmarks/legion/199.html +4 -0
- ckanext/theming/templates/benchmarks/legion/2.html +4 -0
- ckanext/theming/templates/benchmarks/legion/20.html +4 -0
- ckanext/theming/templates/benchmarks/legion/200.html +4 -0
- ckanext/theming/templates/benchmarks/legion/201.html +4 -0
- ckanext/theming/templates/benchmarks/legion/202.html +4 -0
- ckanext/theming/templates/benchmarks/legion/203.html +4 -0
- ckanext/theming/templates/benchmarks/legion/204.html +4 -0
- ckanext/theming/templates/benchmarks/legion/205.html +4 -0
- ckanext/theming/templates/benchmarks/legion/206.html +4 -0
- ckanext/theming/templates/benchmarks/legion/207.html +4 -0
- ckanext/theming/templates/benchmarks/legion/208.html +4 -0
- ckanext/theming/templates/benchmarks/legion/209.html +4 -0
- ckanext/theming/templates/benchmarks/legion/21.html +4 -0
- ckanext/theming/templates/benchmarks/legion/210.html +4 -0
- ckanext/theming/templates/benchmarks/legion/211.html +4 -0
- ckanext/theming/templates/benchmarks/legion/212.html +4 -0
- ckanext/theming/templates/benchmarks/legion/213.html +4 -0
- ckanext/theming/templates/benchmarks/legion/214.html +4 -0
- ckanext/theming/templates/benchmarks/legion/215.html +4 -0
- ckanext/theming/templates/benchmarks/legion/216.html +4 -0
- ckanext/theming/templates/benchmarks/legion/217.html +4 -0
- ckanext/theming/templates/benchmarks/legion/218.html +4 -0
- ckanext/theming/templates/benchmarks/legion/219.html +4 -0
- ckanext/theming/templates/benchmarks/legion/22.html +4 -0
- ckanext/theming/templates/benchmarks/legion/220.html +4 -0
- ckanext/theming/templates/benchmarks/legion/221.html +4 -0
- ckanext/theming/templates/benchmarks/legion/222.html +4 -0
- ckanext/theming/templates/benchmarks/legion/223.html +4 -0
- ckanext/theming/templates/benchmarks/legion/224.html +4 -0
- ckanext/theming/templates/benchmarks/legion/225.html +4 -0
- ckanext/theming/templates/benchmarks/legion/226.html +4 -0
- ckanext/theming/templates/benchmarks/legion/227.html +4 -0
- ckanext/theming/templates/benchmarks/legion/228.html +4 -0
- ckanext/theming/templates/benchmarks/legion/229.html +4 -0
- ckanext/theming/templates/benchmarks/legion/23.html +4 -0
- ckanext/theming/templates/benchmarks/legion/230.html +4 -0
- ckanext/theming/templates/benchmarks/legion/231.html +4 -0
- ckanext/theming/templates/benchmarks/legion/232.html +4 -0
- ckanext/theming/templates/benchmarks/legion/233.html +4 -0
- ckanext/theming/templates/benchmarks/legion/234.html +4 -0
- ckanext/theming/templates/benchmarks/legion/235.html +4 -0
- ckanext/theming/templates/benchmarks/legion/236.html +4 -0
- ckanext/theming/templates/benchmarks/legion/237.html +4 -0
- ckanext/theming/templates/benchmarks/legion/238.html +4 -0
- ckanext/theming/templates/benchmarks/legion/239.html +4 -0
- ckanext/theming/templates/benchmarks/legion/24.html +4 -0
- ckanext/theming/templates/benchmarks/legion/240.html +4 -0
- ckanext/theming/templates/benchmarks/legion/241.html +4 -0
- ckanext/theming/templates/benchmarks/legion/242.html +4 -0
- ckanext/theming/templates/benchmarks/legion/243.html +4 -0
- ckanext/theming/templates/benchmarks/legion/244.html +4 -0
- ckanext/theming/templates/benchmarks/legion/245.html +4 -0
- ckanext/theming/templates/benchmarks/legion/246.html +4 -0
- ckanext/theming/templates/benchmarks/legion/247.html +4 -0
- ckanext/theming/templates/benchmarks/legion/248.html +4 -0
- ckanext/theming/templates/benchmarks/legion/249.html +4 -0
- ckanext/theming/templates/benchmarks/legion/25.html +4 -0
- ckanext/theming/templates/benchmarks/legion/250.html +4 -0
- ckanext/theming/templates/benchmarks/legion/251.html +4 -0
- ckanext/theming/templates/benchmarks/legion/252.html +4 -0
- ckanext/theming/templates/benchmarks/legion/253.html +4 -0
- ckanext/theming/templates/benchmarks/legion/254.html +4 -0
- ckanext/theming/templates/benchmarks/legion/255.html +4 -0
- ckanext/theming/templates/benchmarks/legion/256.html +4 -0
- ckanext/theming/templates/benchmarks/legion/257.html +4 -0
- ckanext/theming/templates/benchmarks/legion/258.html +4 -0
- ckanext/theming/templates/benchmarks/legion/259.html +4 -0
- ckanext/theming/templates/benchmarks/legion/26.html +4 -0
- ckanext/theming/templates/benchmarks/legion/260.html +4 -0
- ckanext/theming/templates/benchmarks/legion/261.html +4 -0
- ckanext/theming/templates/benchmarks/legion/262.html +4 -0
- ckanext/theming/templates/benchmarks/legion/263.html +4 -0
- ckanext/theming/templates/benchmarks/legion/264.html +4 -0
- ckanext/theming/templates/benchmarks/legion/265.html +4 -0
- ckanext/theming/templates/benchmarks/legion/266.html +4 -0
- ckanext/theming/templates/benchmarks/legion/267.html +4 -0
- ckanext/theming/templates/benchmarks/legion/268.html +4 -0
- ckanext/theming/templates/benchmarks/legion/269.html +4 -0
- ckanext/theming/templates/benchmarks/legion/27.html +4 -0
- ckanext/theming/templates/benchmarks/legion/270.html +4 -0
- ckanext/theming/templates/benchmarks/legion/271.html +4 -0
- ckanext/theming/templates/benchmarks/legion/272.html +4 -0
- ckanext/theming/templates/benchmarks/legion/273.html +4 -0
- ckanext/theming/templates/benchmarks/legion/274.html +4 -0
- ckanext/theming/templates/benchmarks/legion/275.html +4 -0
- ckanext/theming/templates/benchmarks/legion/276.html +4 -0
- ckanext/theming/templates/benchmarks/legion/277.html +4 -0
- ckanext/theming/templates/benchmarks/legion/278.html +4 -0
- ckanext/theming/templates/benchmarks/legion/279.html +4 -0
- ckanext/theming/templates/benchmarks/legion/28.html +4 -0
- ckanext/theming/templates/benchmarks/legion/280.html +4 -0
- ckanext/theming/templates/benchmarks/legion/281.html +4 -0
- ckanext/theming/templates/benchmarks/legion/282.html +4 -0
- ckanext/theming/templates/benchmarks/legion/283.html +4 -0
- ckanext/theming/templates/benchmarks/legion/284.html +4 -0
- ckanext/theming/templates/benchmarks/legion/285.html +4 -0
- ckanext/theming/templates/benchmarks/legion/286.html +4 -0
- ckanext/theming/templates/benchmarks/legion/287.html +4 -0
- ckanext/theming/templates/benchmarks/legion/288.html +4 -0
- ckanext/theming/templates/benchmarks/legion/289.html +4 -0
- ckanext/theming/templates/benchmarks/legion/29.html +4 -0
- ckanext/theming/templates/benchmarks/legion/290.html +4 -0
- ckanext/theming/templates/benchmarks/legion/291.html +4 -0
- ckanext/theming/templates/benchmarks/legion/292.html +4 -0
- ckanext/theming/templates/benchmarks/legion/293.html +4 -0
- ckanext/theming/templates/benchmarks/legion/294.html +4 -0
- ckanext/theming/templates/benchmarks/legion/295.html +4 -0
- ckanext/theming/templates/benchmarks/legion/296.html +4 -0
- ckanext/theming/templates/benchmarks/legion/297.html +4 -0
- ckanext/theming/templates/benchmarks/legion/298.html +4 -0
- ckanext/theming/templates/benchmarks/legion/299.html +4 -0
- ckanext/theming/templates/benchmarks/legion/3.html +4 -0
- ckanext/theming/templates/benchmarks/legion/30.html +4 -0
- ckanext/theming/templates/benchmarks/legion/300.html +4 -0
- ckanext/theming/templates/benchmarks/legion/301.html +4 -0
- ckanext/theming/templates/benchmarks/legion/302.html +4 -0
- ckanext/theming/templates/benchmarks/legion/303.html +4 -0
- ckanext/theming/templates/benchmarks/legion/304.html +4 -0
- ckanext/theming/templates/benchmarks/legion/305.html +4 -0
- ckanext/theming/templates/benchmarks/legion/306.html +4 -0
- ckanext/theming/templates/benchmarks/legion/307.html +4 -0
- ckanext/theming/templates/benchmarks/legion/308.html +4 -0
- ckanext/theming/templates/benchmarks/legion/309.html +4 -0
- ckanext/theming/templates/benchmarks/legion/31.html +4 -0
- ckanext/theming/templates/benchmarks/legion/310.html +4 -0
- ckanext/theming/templates/benchmarks/legion/311.html +4 -0
- ckanext/theming/templates/benchmarks/legion/312.html +4 -0
- ckanext/theming/templates/benchmarks/legion/313.html +4 -0
- ckanext/theming/templates/benchmarks/legion/314.html +4 -0
- ckanext/theming/templates/benchmarks/legion/315.html +4 -0
- ckanext/theming/templates/benchmarks/legion/316.html +4 -0
- ckanext/theming/templates/benchmarks/legion/317.html +4 -0
- ckanext/theming/templates/benchmarks/legion/318.html +4 -0
- ckanext/theming/templates/benchmarks/legion/319.html +4 -0
- ckanext/theming/templates/benchmarks/legion/32.html +4 -0
- ckanext/theming/templates/benchmarks/legion/320.html +4 -0
- ckanext/theming/templates/benchmarks/legion/321.html +4 -0
- ckanext/theming/templates/benchmarks/legion/322.html +4 -0
- ckanext/theming/templates/benchmarks/legion/323.html +4 -0
- ckanext/theming/templates/benchmarks/legion/324.html +4 -0
- ckanext/theming/templates/benchmarks/legion/325.html +4 -0
- ckanext/theming/templates/benchmarks/legion/326.html +4 -0
- ckanext/theming/templates/benchmarks/legion/327.html +4 -0
- ckanext/theming/templates/benchmarks/legion/328.html +4 -0
- ckanext/theming/templates/benchmarks/legion/329.html +4 -0
- ckanext/theming/templates/benchmarks/legion/33.html +4 -0
- ckanext/theming/templates/benchmarks/legion/330.html +4 -0
- ckanext/theming/templates/benchmarks/legion/331.html +4 -0
- ckanext/theming/templates/benchmarks/legion/332.html +4 -0
- ckanext/theming/templates/benchmarks/legion/333.html +4 -0
- ckanext/theming/templates/benchmarks/legion/334.html +4 -0
- ckanext/theming/templates/benchmarks/legion/335.html +4 -0
- ckanext/theming/templates/benchmarks/legion/336.html +4 -0
- ckanext/theming/templates/benchmarks/legion/337.html +4 -0
- ckanext/theming/templates/benchmarks/legion/338.html +4 -0
- ckanext/theming/templates/benchmarks/legion/339.html +4 -0
- ckanext/theming/templates/benchmarks/legion/34.html +4 -0
- ckanext/theming/templates/benchmarks/legion/340.html +4 -0
- ckanext/theming/templates/benchmarks/legion/341.html +4 -0
- ckanext/theming/templates/benchmarks/legion/342.html +4 -0
- ckanext/theming/templates/benchmarks/legion/343.html +4 -0
- ckanext/theming/templates/benchmarks/legion/344.html +4 -0
- ckanext/theming/templates/benchmarks/legion/345.html +4 -0
- ckanext/theming/templates/benchmarks/legion/346.html +4 -0
- ckanext/theming/templates/benchmarks/legion/347.html +4 -0
- ckanext/theming/templates/benchmarks/legion/348.html +4 -0
- ckanext/theming/templates/benchmarks/legion/349.html +4 -0
- ckanext/theming/templates/benchmarks/legion/35.html +4 -0
- ckanext/theming/templates/benchmarks/legion/350.html +4 -0
- ckanext/theming/templates/benchmarks/legion/351.html +4 -0
- ckanext/theming/templates/benchmarks/legion/352.html +4 -0
- ckanext/theming/templates/benchmarks/legion/353.html +4 -0
- ckanext/theming/templates/benchmarks/legion/354.html +4 -0
- ckanext/theming/templates/benchmarks/legion/355.html +4 -0
- ckanext/theming/templates/benchmarks/legion/356.html +4 -0
- ckanext/theming/templates/benchmarks/legion/357.html +4 -0
- ckanext/theming/templates/benchmarks/legion/358.html +4 -0
- ckanext/theming/templates/benchmarks/legion/359.html +4 -0
- ckanext/theming/templates/benchmarks/legion/36.html +4 -0
- ckanext/theming/templates/benchmarks/legion/360.html +4 -0
- ckanext/theming/templates/benchmarks/legion/361.html +4 -0
- ckanext/theming/templates/benchmarks/legion/362.html +4 -0
- ckanext/theming/templates/benchmarks/legion/363.html +4 -0
- ckanext/theming/templates/benchmarks/legion/364.html +4 -0
- ckanext/theming/templates/benchmarks/legion/365.html +4 -0
- ckanext/theming/templates/benchmarks/legion/366.html +4 -0
- ckanext/theming/templates/benchmarks/legion/367.html +4 -0
- ckanext/theming/templates/benchmarks/legion/368.html +4 -0
- ckanext/theming/templates/benchmarks/legion/369.html +4 -0
- ckanext/theming/templates/benchmarks/legion/37.html +4 -0
- ckanext/theming/templates/benchmarks/legion/370.html +4 -0
- ckanext/theming/templates/benchmarks/legion/371.html +4 -0
- ckanext/theming/templates/benchmarks/legion/372.html +4 -0
- ckanext/theming/templates/benchmarks/legion/373.html +4 -0
- ckanext/theming/templates/benchmarks/legion/374.html +4 -0
- ckanext/theming/templates/benchmarks/legion/375.html +4 -0
- ckanext/theming/templates/benchmarks/legion/376.html +4 -0
- ckanext/theming/templates/benchmarks/legion/377.html +4 -0
- ckanext/theming/templates/benchmarks/legion/378.html +4 -0
- ckanext/theming/templates/benchmarks/legion/379.html +4 -0
- ckanext/theming/templates/benchmarks/legion/38.html +4 -0
- ckanext/theming/templates/benchmarks/legion/380.html +4 -0
- ckanext/theming/templates/benchmarks/legion/381.html +4 -0
- ckanext/theming/templates/benchmarks/legion/382.html +4 -0
- ckanext/theming/templates/benchmarks/legion/383.html +4 -0
- ckanext/theming/templates/benchmarks/legion/384.html +4 -0
- ckanext/theming/templates/benchmarks/legion/385.html +4 -0
- ckanext/theming/templates/benchmarks/legion/386.html +4 -0
- ckanext/theming/templates/benchmarks/legion/387.html +4 -0
- ckanext/theming/templates/benchmarks/legion/388.html +4 -0
- ckanext/theming/templates/benchmarks/legion/389.html +4 -0
- ckanext/theming/templates/benchmarks/legion/39.html +4 -0
- ckanext/theming/templates/benchmarks/legion/390.html +4 -0
- ckanext/theming/templates/benchmarks/legion/391.html +4 -0
- ckanext/theming/templates/benchmarks/legion/392.html +4 -0
- ckanext/theming/templates/benchmarks/legion/393.html +4 -0
- ckanext/theming/templates/benchmarks/legion/394.html +4 -0
- ckanext/theming/templates/benchmarks/legion/395.html +4 -0
- ckanext/theming/templates/benchmarks/legion/396.html +4 -0
- ckanext/theming/templates/benchmarks/legion/397.html +4 -0
- ckanext/theming/templates/benchmarks/legion/398.html +4 -0
- ckanext/theming/templates/benchmarks/legion/399.html +4 -0
- ckanext/theming/templates/benchmarks/legion/4.html +4 -0
- ckanext/theming/templates/benchmarks/legion/40.html +4 -0
- ckanext/theming/templates/benchmarks/legion/400.html +4 -0
- ckanext/theming/templates/benchmarks/legion/401.html +4 -0
- ckanext/theming/templates/benchmarks/legion/402.html +4 -0
- ckanext/theming/templates/benchmarks/legion/403.html +4 -0
- ckanext/theming/templates/benchmarks/legion/404.html +4 -0
- ckanext/theming/templates/benchmarks/legion/405.html +4 -0
- ckanext/theming/templates/benchmarks/legion/406.html +4 -0
- ckanext/theming/templates/benchmarks/legion/407.html +4 -0
- ckanext/theming/templates/benchmarks/legion/408.html +4 -0
- ckanext/theming/templates/benchmarks/legion/409.html +4 -0
- ckanext/theming/templates/benchmarks/legion/41.html +4 -0
- ckanext/theming/templates/benchmarks/legion/410.html +4 -0
- ckanext/theming/templates/benchmarks/legion/411.html +4 -0
- ckanext/theming/templates/benchmarks/legion/412.html +4 -0
- ckanext/theming/templates/benchmarks/legion/413.html +4 -0
- ckanext/theming/templates/benchmarks/legion/414.html +4 -0
- ckanext/theming/templates/benchmarks/legion/415.html +4 -0
- ckanext/theming/templates/benchmarks/legion/416.html +4 -0
- ckanext/theming/templates/benchmarks/legion/417.html +4 -0
- ckanext/theming/templates/benchmarks/legion/418.html +4 -0
- ckanext/theming/templates/benchmarks/legion/419.html +4 -0
- ckanext/theming/templates/benchmarks/legion/42.html +4 -0
- ckanext/theming/templates/benchmarks/legion/420.html +4 -0
- ckanext/theming/templates/benchmarks/legion/421.html +4 -0
- ckanext/theming/templates/benchmarks/legion/422.html +4 -0
- ckanext/theming/templates/benchmarks/legion/423.html +4 -0
- ckanext/theming/templates/benchmarks/legion/424.html +4 -0
- ckanext/theming/templates/benchmarks/legion/425.html +4 -0
- ckanext/theming/templates/benchmarks/legion/426.html +4 -0
- ckanext/theming/templates/benchmarks/legion/427.html +4 -0
- ckanext/theming/templates/benchmarks/legion/428.html +4 -0
- ckanext/theming/templates/benchmarks/legion/429.html +4 -0
- ckanext/theming/templates/benchmarks/legion/43.html +4 -0
- ckanext/theming/templates/benchmarks/legion/430.html +4 -0
- ckanext/theming/templates/benchmarks/legion/431.html +4 -0
- ckanext/theming/templates/benchmarks/legion/432.html +4 -0
- ckanext/theming/templates/benchmarks/legion/433.html +4 -0
- ckanext/theming/templates/benchmarks/legion/434.html +4 -0
- ckanext/theming/templates/benchmarks/legion/435.html +4 -0
- ckanext/theming/templates/benchmarks/legion/436.html +4 -0
- ckanext/theming/templates/benchmarks/legion/437.html +4 -0
- ckanext/theming/templates/benchmarks/legion/438.html +4 -0
- ckanext/theming/templates/benchmarks/legion/439.html +4 -0
- ckanext/theming/templates/benchmarks/legion/44.html +4 -0
- ckanext/theming/templates/benchmarks/legion/440.html +4 -0
- ckanext/theming/templates/benchmarks/legion/441.html +4 -0
- ckanext/theming/templates/benchmarks/legion/442.html +4 -0
- ckanext/theming/templates/benchmarks/legion/443.html +4 -0
- ckanext/theming/templates/benchmarks/legion/444.html +4 -0
- ckanext/theming/templates/benchmarks/legion/445.html +4 -0
- ckanext/theming/templates/benchmarks/legion/446.html +4 -0
- ckanext/theming/templates/benchmarks/legion/447.html +4 -0
- ckanext/theming/templates/benchmarks/legion/448.html +4 -0
- ckanext/theming/templates/benchmarks/legion/449.html +4 -0
- ckanext/theming/templates/benchmarks/legion/45.html +4 -0
- ckanext/theming/templates/benchmarks/legion/450.html +4 -0
- ckanext/theming/templates/benchmarks/legion/451.html +4 -0
- ckanext/theming/templates/benchmarks/legion/452.html +4 -0
- ckanext/theming/templates/benchmarks/legion/453.html +4 -0
- ckanext/theming/templates/benchmarks/legion/454.html +4 -0
- ckanext/theming/templates/benchmarks/legion/455.html +4 -0
- ckanext/theming/templates/benchmarks/legion/456.html +4 -0
- ckanext/theming/templates/benchmarks/legion/457.html +4 -0
- ckanext/theming/templates/benchmarks/legion/458.html +4 -0
- ckanext/theming/templates/benchmarks/legion/459.html +4 -0
- ckanext/theming/templates/benchmarks/legion/46.html +4 -0
- ckanext/theming/templates/benchmarks/legion/460.html +4 -0
- ckanext/theming/templates/benchmarks/legion/461.html +4 -0
- ckanext/theming/templates/benchmarks/legion/462.html +4 -0
- ckanext/theming/templates/benchmarks/legion/463.html +4 -0
- ckanext/theming/templates/benchmarks/legion/464.html +4 -0
- ckanext/theming/templates/benchmarks/legion/465.html +4 -0
- ckanext/theming/templates/benchmarks/legion/466.html +4 -0
- ckanext/theming/templates/benchmarks/legion/467.html +4 -0
- ckanext/theming/templates/benchmarks/legion/468.html +4 -0
- ckanext/theming/templates/benchmarks/legion/469.html +4 -0
- ckanext/theming/templates/benchmarks/legion/47.html +4 -0
- ckanext/theming/templates/benchmarks/legion/470.html +4 -0
- ckanext/theming/templates/benchmarks/legion/471.html +4 -0
- ckanext/theming/templates/benchmarks/legion/472.html +4 -0
- ckanext/theming/templates/benchmarks/legion/473.html +4 -0
- ckanext/theming/templates/benchmarks/legion/474.html +4 -0
- ckanext/theming/templates/benchmarks/legion/475.html +4 -0
- ckanext/theming/templates/benchmarks/legion/476.html +4 -0
- ckanext/theming/templates/benchmarks/legion/477.html +4 -0
- ckanext/theming/templates/benchmarks/legion/478.html +4 -0
- ckanext/theming/templates/benchmarks/legion/479.html +4 -0
- ckanext/theming/templates/benchmarks/legion/48.html +4 -0
- ckanext/theming/templates/benchmarks/legion/480.html +4 -0
- ckanext/theming/templates/benchmarks/legion/481.html +4 -0
- ckanext/theming/templates/benchmarks/legion/482.html +4 -0
- ckanext/theming/templates/benchmarks/legion/483.html +4 -0
- ckanext/theming/templates/benchmarks/legion/484.html +4 -0
- ckanext/theming/templates/benchmarks/legion/485.html +4 -0
- ckanext/theming/templates/benchmarks/legion/486.html +4 -0
- ckanext/theming/templates/benchmarks/legion/487.html +4 -0
- ckanext/theming/templates/benchmarks/legion/488.html +4 -0
- ckanext/theming/templates/benchmarks/legion/489.html +4 -0
- ckanext/theming/templates/benchmarks/legion/49.html +4 -0
- ckanext/theming/templates/benchmarks/legion/490.html +4 -0
- ckanext/theming/templates/benchmarks/legion/491.html +4 -0
- ckanext/theming/templates/benchmarks/legion/492.html +4 -0
- ckanext/theming/templates/benchmarks/legion/493.html +4 -0
- ckanext/theming/templates/benchmarks/legion/494.html +4 -0
- ckanext/theming/templates/benchmarks/legion/495.html +4 -0
- ckanext/theming/templates/benchmarks/legion/496.html +4 -0
- ckanext/theming/templates/benchmarks/legion/497.html +4 -0
- ckanext/theming/templates/benchmarks/legion/498.html +4 -0
- ckanext/theming/templates/benchmarks/legion/499.html +4 -0
- ckanext/theming/templates/benchmarks/legion/5.html +4 -0
- ckanext/theming/templates/benchmarks/legion/50.html +4 -0
- ckanext/theming/templates/benchmarks/legion/500.html +4 -0
- ckanext/theming/templates/benchmarks/legion/501.html +4 -0
- ckanext/theming/templates/benchmarks/legion/502.html +4 -0
- ckanext/theming/templates/benchmarks/legion/503.html +4 -0
- ckanext/theming/templates/benchmarks/legion/504.html +4 -0
- ckanext/theming/templates/benchmarks/legion/505.html +4 -0
- ckanext/theming/templates/benchmarks/legion/506.html +4 -0
- ckanext/theming/templates/benchmarks/legion/507.html +4 -0
- ckanext/theming/templates/benchmarks/legion/508.html +4 -0
- ckanext/theming/templates/benchmarks/legion/509.html +4 -0
- ckanext/theming/templates/benchmarks/legion/51.html +4 -0
- ckanext/theming/templates/benchmarks/legion/510.html +4 -0
- ckanext/theming/templates/benchmarks/legion/511.html +4 -0
- ckanext/theming/templates/benchmarks/legion/512.html +4 -0
- ckanext/theming/templates/benchmarks/legion/513.html +4 -0
- ckanext/theming/templates/benchmarks/legion/514.html +4 -0
- ckanext/theming/templates/benchmarks/legion/515.html +4 -0
- ckanext/theming/templates/benchmarks/legion/516.html +4 -0
- ckanext/theming/templates/benchmarks/legion/517.html +4 -0
- ckanext/theming/templates/benchmarks/legion/518.html +4 -0
- ckanext/theming/templates/benchmarks/legion/519.html +4 -0
- ckanext/theming/templates/benchmarks/legion/52.html +4 -0
- ckanext/theming/templates/benchmarks/legion/520.html +4 -0
- ckanext/theming/templates/benchmarks/legion/521.html +4 -0
- ckanext/theming/templates/benchmarks/legion/522.html +4 -0
- ckanext/theming/templates/benchmarks/legion/523.html +4 -0
- ckanext/theming/templates/benchmarks/legion/524.html +4 -0
- ckanext/theming/templates/benchmarks/legion/525.html +4 -0
- ckanext/theming/templates/benchmarks/legion/526.html +4 -0
- ckanext/theming/templates/benchmarks/legion/527.html +4 -0
- ckanext/theming/templates/benchmarks/legion/528.html +4 -0
- ckanext/theming/templates/benchmarks/legion/529.html +4 -0
- ckanext/theming/templates/benchmarks/legion/53.html +4 -0
- ckanext/theming/templates/benchmarks/legion/530.html +4 -0
- ckanext/theming/templates/benchmarks/legion/531.html +4 -0
- ckanext/theming/templates/benchmarks/legion/532.html +4 -0
- ckanext/theming/templates/benchmarks/legion/533.html +4 -0
- ckanext/theming/templates/benchmarks/legion/534.html +4 -0
- ckanext/theming/templates/benchmarks/legion/535.html +4 -0
- ckanext/theming/templates/benchmarks/legion/536.html +4 -0
- ckanext/theming/templates/benchmarks/legion/537.html +4 -0
- ckanext/theming/templates/benchmarks/legion/538.html +4 -0
- ckanext/theming/templates/benchmarks/legion/539.html +4 -0
- ckanext/theming/templates/benchmarks/legion/54.html +4 -0
- ckanext/theming/templates/benchmarks/legion/540.html +4 -0
- ckanext/theming/templates/benchmarks/legion/541.html +4 -0
- ckanext/theming/templates/benchmarks/legion/542.html +4 -0
- ckanext/theming/templates/benchmarks/legion/543.html +4 -0
- ckanext/theming/templates/benchmarks/legion/544.html +4 -0
- ckanext/theming/templates/benchmarks/legion/545.html +4 -0
- ckanext/theming/templates/benchmarks/legion/546.html +4 -0
- ckanext/theming/templates/benchmarks/legion/547.html +4 -0
- ckanext/theming/templates/benchmarks/legion/548.html +4 -0
- ckanext/theming/templates/benchmarks/legion/549.html +4 -0
- ckanext/theming/templates/benchmarks/legion/55.html +4 -0
- ckanext/theming/templates/benchmarks/legion/550.html +4 -0
- ckanext/theming/templates/benchmarks/legion/551.html +4 -0
- ckanext/theming/templates/benchmarks/legion/552.html +4 -0
- ckanext/theming/templates/benchmarks/legion/553.html +4 -0
- ckanext/theming/templates/benchmarks/legion/554.html +4 -0
- ckanext/theming/templates/benchmarks/legion/555.html +4 -0
- ckanext/theming/templates/benchmarks/legion/556.html +4 -0
- ckanext/theming/templates/benchmarks/legion/557.html +4 -0
- ckanext/theming/templates/benchmarks/legion/558.html +4 -0
- ckanext/theming/templates/benchmarks/legion/559.html +4 -0
- ckanext/theming/templates/benchmarks/legion/56.html +4 -0
- ckanext/theming/templates/benchmarks/legion/560.html +4 -0
- ckanext/theming/templates/benchmarks/legion/561.html +4 -0
- ckanext/theming/templates/benchmarks/legion/562.html +4 -0
- ckanext/theming/templates/benchmarks/legion/563.html +4 -0
- ckanext/theming/templates/benchmarks/legion/564.html +4 -0
- ckanext/theming/templates/benchmarks/legion/565.html +4 -0
- ckanext/theming/templates/benchmarks/legion/566.html +4 -0
- ckanext/theming/templates/benchmarks/legion/567.html +4 -0
- ckanext/theming/templates/benchmarks/legion/568.html +4 -0
- ckanext/theming/templates/benchmarks/legion/569.html +4 -0
- ckanext/theming/templates/benchmarks/legion/57.html +4 -0
- ckanext/theming/templates/benchmarks/legion/570.html +4 -0
- ckanext/theming/templates/benchmarks/legion/571.html +4 -0
- ckanext/theming/templates/benchmarks/legion/572.html +4 -0
- ckanext/theming/templates/benchmarks/legion/573.html +4 -0
- ckanext/theming/templates/benchmarks/legion/574.html +4 -0
- ckanext/theming/templates/benchmarks/legion/575.html +4 -0
- ckanext/theming/templates/benchmarks/legion/576.html +4 -0
- ckanext/theming/templates/benchmarks/legion/577.html +4 -0
- ckanext/theming/templates/benchmarks/legion/578.html +4 -0
- ckanext/theming/templates/benchmarks/legion/579.html +4 -0
- ckanext/theming/templates/benchmarks/legion/58.html +4 -0
- ckanext/theming/templates/benchmarks/legion/580.html +4 -0
- ckanext/theming/templates/benchmarks/legion/581.html +4 -0
- ckanext/theming/templates/benchmarks/legion/582.html +4 -0
- ckanext/theming/templates/benchmarks/legion/583.html +4 -0
- ckanext/theming/templates/benchmarks/legion/584.html +4 -0
- ckanext/theming/templates/benchmarks/legion/585.html +4 -0
- ckanext/theming/templates/benchmarks/legion/586.html +4 -0
- ckanext/theming/templates/benchmarks/legion/587.html +4 -0
- ckanext/theming/templates/benchmarks/legion/588.html +4 -0
- ckanext/theming/templates/benchmarks/legion/589.html +4 -0
- ckanext/theming/templates/benchmarks/legion/59.html +4 -0
- ckanext/theming/templates/benchmarks/legion/590.html +4 -0
- ckanext/theming/templates/benchmarks/legion/591.html +4 -0
- ckanext/theming/templates/benchmarks/legion/592.html +4 -0
- ckanext/theming/templates/benchmarks/legion/593.html +4 -0
- ckanext/theming/templates/benchmarks/legion/594.html +4 -0
- ckanext/theming/templates/benchmarks/legion/595.html +4 -0
- ckanext/theming/templates/benchmarks/legion/596.html +4 -0
- ckanext/theming/templates/benchmarks/legion/597.html +4 -0
- ckanext/theming/templates/benchmarks/legion/598.html +4 -0
- ckanext/theming/templates/benchmarks/legion/599.html +4 -0
- ckanext/theming/templates/benchmarks/legion/6.html +4 -0
- ckanext/theming/templates/benchmarks/legion/60.html +4 -0
- ckanext/theming/templates/benchmarks/legion/600.html +4 -0
- ckanext/theming/templates/benchmarks/legion/601.html +4 -0
- ckanext/theming/templates/benchmarks/legion/602.html +4 -0
- ckanext/theming/templates/benchmarks/legion/603.html +4 -0
- ckanext/theming/templates/benchmarks/legion/604.html +4 -0
- ckanext/theming/templates/benchmarks/legion/605.html +4 -0
- ckanext/theming/templates/benchmarks/legion/606.html +4 -0
- ckanext/theming/templates/benchmarks/legion/607.html +4 -0
- ckanext/theming/templates/benchmarks/legion/608.html +4 -0
- ckanext/theming/templates/benchmarks/legion/609.html +4 -0
- ckanext/theming/templates/benchmarks/legion/61.html +4 -0
- ckanext/theming/templates/benchmarks/legion/610.html +4 -0
- ckanext/theming/templates/benchmarks/legion/611.html +4 -0
- ckanext/theming/templates/benchmarks/legion/612.html +4 -0
- ckanext/theming/templates/benchmarks/legion/613.html +4 -0
- ckanext/theming/templates/benchmarks/legion/614.html +4 -0
- ckanext/theming/templates/benchmarks/legion/615.html +4 -0
- ckanext/theming/templates/benchmarks/legion/616.html +4 -0
- ckanext/theming/templates/benchmarks/legion/617.html +4 -0
- ckanext/theming/templates/benchmarks/legion/618.html +4 -0
- ckanext/theming/templates/benchmarks/legion/619.html +4 -0
- ckanext/theming/templates/benchmarks/legion/62.html +4 -0
- ckanext/theming/templates/benchmarks/legion/620.html +4 -0
- ckanext/theming/templates/benchmarks/legion/621.html +4 -0
- ckanext/theming/templates/benchmarks/legion/622.html +4 -0
- ckanext/theming/templates/benchmarks/legion/623.html +4 -0
- ckanext/theming/templates/benchmarks/legion/624.html +4 -0
- ckanext/theming/templates/benchmarks/legion/625.html +4 -0
- ckanext/theming/templates/benchmarks/legion/626.html +4 -0
- ckanext/theming/templates/benchmarks/legion/627.html +4 -0
- ckanext/theming/templates/benchmarks/legion/628.html +4 -0
- ckanext/theming/templates/benchmarks/legion/629.html +4 -0
- ckanext/theming/templates/benchmarks/legion/63.html +4 -0
- ckanext/theming/templates/benchmarks/legion/630.html +4 -0
- ckanext/theming/templates/benchmarks/legion/631.html +4 -0
- ckanext/theming/templates/benchmarks/legion/632.html +4 -0
- ckanext/theming/templates/benchmarks/legion/633.html +4 -0
- ckanext/theming/templates/benchmarks/legion/634.html +4 -0
- ckanext/theming/templates/benchmarks/legion/635.html +4 -0
- ckanext/theming/templates/benchmarks/legion/636.html +4 -0
- ckanext/theming/templates/benchmarks/legion/637.html +4 -0
- ckanext/theming/templates/benchmarks/legion/638.html +4 -0
- ckanext/theming/templates/benchmarks/legion/639.html +4 -0
- ckanext/theming/templates/benchmarks/legion/64.html +4 -0
- ckanext/theming/templates/benchmarks/legion/640.html +4 -0
- ckanext/theming/templates/benchmarks/legion/641.html +4 -0
- ckanext/theming/templates/benchmarks/legion/642.html +4 -0
- ckanext/theming/templates/benchmarks/legion/643.html +4 -0
- ckanext/theming/templates/benchmarks/legion/644.html +4 -0
- ckanext/theming/templates/benchmarks/legion/645.html +4 -0
- ckanext/theming/templates/benchmarks/legion/646.html +4 -0
- ckanext/theming/templates/benchmarks/legion/647.html +4 -0
- ckanext/theming/templates/benchmarks/legion/648.html +4 -0
- ckanext/theming/templates/benchmarks/legion/649.html +4 -0
- ckanext/theming/templates/benchmarks/legion/65.html +4 -0
- ckanext/theming/templates/benchmarks/legion/650.html +4 -0
- ckanext/theming/templates/benchmarks/legion/651.html +4 -0
- ckanext/theming/templates/benchmarks/legion/652.html +4 -0
- ckanext/theming/templates/benchmarks/legion/653.html +4 -0
- ckanext/theming/templates/benchmarks/legion/654.html +4 -0
- ckanext/theming/templates/benchmarks/legion/655.html +4 -0
- ckanext/theming/templates/benchmarks/legion/656.html +4 -0
- ckanext/theming/templates/benchmarks/legion/657.html +4 -0
- ckanext/theming/templates/benchmarks/legion/658.html +4 -0
- ckanext/theming/templates/benchmarks/legion/659.html +4 -0
- ckanext/theming/templates/benchmarks/legion/66.html +4 -0
- ckanext/theming/templates/benchmarks/legion/660.html +4 -0
- ckanext/theming/templates/benchmarks/legion/661.html +4 -0
- ckanext/theming/templates/benchmarks/legion/662.html +4 -0
- ckanext/theming/templates/benchmarks/legion/663.html +4 -0
- ckanext/theming/templates/benchmarks/legion/664.html +4 -0
- ckanext/theming/templates/benchmarks/legion/665.html +4 -0
- ckanext/theming/templates/benchmarks/legion/666.html +4 -0
- ckanext/theming/templates/benchmarks/legion/667.html +4 -0
- ckanext/theming/templates/benchmarks/legion/668.html +4 -0
- ckanext/theming/templates/benchmarks/legion/669.html +4 -0
- ckanext/theming/templates/benchmarks/legion/67.html +4 -0
- ckanext/theming/templates/benchmarks/legion/670.html +4 -0
- ckanext/theming/templates/benchmarks/legion/671.html +4 -0
- ckanext/theming/templates/benchmarks/legion/672.html +4 -0
- ckanext/theming/templates/benchmarks/legion/673.html +4 -0
- ckanext/theming/templates/benchmarks/legion/674.html +4 -0
- ckanext/theming/templates/benchmarks/legion/675.html +4 -0
- ckanext/theming/templates/benchmarks/legion/676.html +4 -0
- ckanext/theming/templates/benchmarks/legion/677.html +4 -0
- ckanext/theming/templates/benchmarks/legion/678.html +4 -0
- ckanext/theming/templates/benchmarks/legion/679.html +4 -0
- ckanext/theming/templates/benchmarks/legion/68.html +4 -0
- ckanext/theming/templates/benchmarks/legion/680.html +4 -0
- ckanext/theming/templates/benchmarks/legion/681.html +4 -0
- ckanext/theming/templates/benchmarks/legion/682.html +4 -0
- ckanext/theming/templates/benchmarks/legion/683.html +4 -0
- ckanext/theming/templates/benchmarks/legion/684.html +4 -0
- ckanext/theming/templates/benchmarks/legion/685.html +4 -0
- ckanext/theming/templates/benchmarks/legion/686.html +4 -0
- ckanext/theming/templates/benchmarks/legion/687.html +4 -0
- ckanext/theming/templates/benchmarks/legion/688.html +4 -0
- ckanext/theming/templates/benchmarks/legion/689.html +4 -0
- ckanext/theming/templates/benchmarks/legion/69.html +4 -0
- ckanext/theming/templates/benchmarks/legion/690.html +4 -0
- ckanext/theming/templates/benchmarks/legion/691.html +4 -0
- ckanext/theming/templates/benchmarks/legion/692.html +4 -0
- ckanext/theming/templates/benchmarks/legion/693.html +4 -0
- ckanext/theming/templates/benchmarks/legion/694.html +4 -0
- ckanext/theming/templates/benchmarks/legion/695.html +4 -0
- ckanext/theming/templates/benchmarks/legion/696.html +4 -0
- ckanext/theming/templates/benchmarks/legion/697.html +4 -0
- ckanext/theming/templates/benchmarks/legion/698.html +4 -0
- ckanext/theming/templates/benchmarks/legion/699.html +4 -0
- ckanext/theming/templates/benchmarks/legion/7.html +4 -0
- ckanext/theming/templates/benchmarks/legion/70.html +4 -0
- ckanext/theming/templates/benchmarks/legion/700.html +4 -0
- ckanext/theming/templates/benchmarks/legion/701.html +4 -0
- ckanext/theming/templates/benchmarks/legion/702.html +4 -0
- ckanext/theming/templates/benchmarks/legion/703.html +4 -0
- ckanext/theming/templates/benchmarks/legion/704.html +4 -0
- ckanext/theming/templates/benchmarks/legion/705.html +4 -0
- ckanext/theming/templates/benchmarks/legion/706.html +4 -0
- ckanext/theming/templates/benchmarks/legion/707.html +4 -0
- ckanext/theming/templates/benchmarks/legion/708.html +4 -0
- ckanext/theming/templates/benchmarks/legion/709.html +4 -0
- ckanext/theming/templates/benchmarks/legion/71.html +4 -0
- ckanext/theming/templates/benchmarks/legion/710.html +4 -0
- ckanext/theming/templates/benchmarks/legion/711.html +4 -0
- ckanext/theming/templates/benchmarks/legion/712.html +4 -0
- ckanext/theming/templates/benchmarks/legion/713.html +4 -0
- ckanext/theming/templates/benchmarks/legion/714.html +4 -0
- ckanext/theming/templates/benchmarks/legion/715.html +4 -0
- ckanext/theming/templates/benchmarks/legion/716.html +4 -0
- ckanext/theming/templates/benchmarks/legion/717.html +4 -0
- ckanext/theming/templates/benchmarks/legion/718.html +4 -0
- ckanext/theming/templates/benchmarks/legion/719.html +4 -0
- ckanext/theming/templates/benchmarks/legion/72.html +4 -0
- ckanext/theming/templates/benchmarks/legion/720.html +4 -0
- ckanext/theming/templates/benchmarks/legion/721.html +4 -0
- ckanext/theming/templates/benchmarks/legion/722.html +4 -0
- ckanext/theming/templates/benchmarks/legion/723.html +4 -0
- ckanext/theming/templates/benchmarks/legion/724.html +4 -0
- ckanext/theming/templates/benchmarks/legion/725.html +4 -0
- ckanext/theming/templates/benchmarks/legion/726.html +4 -0
- ckanext/theming/templates/benchmarks/legion/727.html +4 -0
- ckanext/theming/templates/benchmarks/legion/728.html +4 -0
- ckanext/theming/templates/benchmarks/legion/729.html +4 -0
- ckanext/theming/templates/benchmarks/legion/73.html +4 -0
- ckanext/theming/templates/benchmarks/legion/730.html +4 -0
- ckanext/theming/templates/benchmarks/legion/731.html +4 -0
- ckanext/theming/templates/benchmarks/legion/732.html +4 -0
- ckanext/theming/templates/benchmarks/legion/733.html +4 -0
- ckanext/theming/templates/benchmarks/legion/734.html +4 -0
- ckanext/theming/templates/benchmarks/legion/735.html +4 -0
- ckanext/theming/templates/benchmarks/legion/736.html +4 -0
- ckanext/theming/templates/benchmarks/legion/737.html +4 -0
- ckanext/theming/templates/benchmarks/legion/738.html +4 -0
- ckanext/theming/templates/benchmarks/legion/739.html +4 -0
- ckanext/theming/templates/benchmarks/legion/74.html +4 -0
- ckanext/theming/templates/benchmarks/legion/740.html +4 -0
- ckanext/theming/templates/benchmarks/legion/741.html +4 -0
- ckanext/theming/templates/benchmarks/legion/742.html +4 -0
- ckanext/theming/templates/benchmarks/legion/743.html +4 -0
- ckanext/theming/templates/benchmarks/legion/744.html +4 -0
- ckanext/theming/templates/benchmarks/legion/745.html +4 -0
- ckanext/theming/templates/benchmarks/legion/746.html +4 -0
- ckanext/theming/templates/benchmarks/legion/747.html +4 -0
- ckanext/theming/templates/benchmarks/legion/748.html +4 -0
- ckanext/theming/templates/benchmarks/legion/749.html +4 -0
- ckanext/theming/templates/benchmarks/legion/75.html +4 -0
- ckanext/theming/templates/benchmarks/legion/750.html +4 -0
- ckanext/theming/templates/benchmarks/legion/751.html +4 -0
- ckanext/theming/templates/benchmarks/legion/752.html +4 -0
- ckanext/theming/templates/benchmarks/legion/753.html +4 -0
- ckanext/theming/templates/benchmarks/legion/754.html +4 -0
- ckanext/theming/templates/benchmarks/legion/755.html +4 -0
- ckanext/theming/templates/benchmarks/legion/756.html +4 -0
- ckanext/theming/templates/benchmarks/legion/757.html +4 -0
- ckanext/theming/templates/benchmarks/legion/758.html +4 -0
- ckanext/theming/templates/benchmarks/legion/759.html +4 -0
- ckanext/theming/templates/benchmarks/legion/76.html +4 -0
- ckanext/theming/templates/benchmarks/legion/760.html +4 -0
- ckanext/theming/templates/benchmarks/legion/761.html +4 -0
- ckanext/theming/templates/benchmarks/legion/762.html +4 -0
- ckanext/theming/templates/benchmarks/legion/763.html +4 -0
- ckanext/theming/templates/benchmarks/legion/764.html +4 -0
- ckanext/theming/templates/benchmarks/legion/765.html +4 -0
- ckanext/theming/templates/benchmarks/legion/766.html +4 -0
- ckanext/theming/templates/benchmarks/legion/767.html +4 -0
- ckanext/theming/templates/benchmarks/legion/768.html +4 -0
- ckanext/theming/templates/benchmarks/legion/769.html +4 -0
- ckanext/theming/templates/benchmarks/legion/77.html +4 -0
- ckanext/theming/templates/benchmarks/legion/770.html +4 -0
- ckanext/theming/templates/benchmarks/legion/771.html +4 -0
- ckanext/theming/templates/benchmarks/legion/772.html +4 -0
- ckanext/theming/templates/benchmarks/legion/773.html +4 -0
- ckanext/theming/templates/benchmarks/legion/774.html +4 -0
- ckanext/theming/templates/benchmarks/legion/775.html +4 -0
- ckanext/theming/templates/benchmarks/legion/776.html +4 -0
- ckanext/theming/templates/benchmarks/legion/777.html +4 -0
- ckanext/theming/templates/benchmarks/legion/778.html +4 -0
- ckanext/theming/templates/benchmarks/legion/779.html +4 -0
- ckanext/theming/templates/benchmarks/legion/78.html +4 -0
- ckanext/theming/templates/benchmarks/legion/780.html +4 -0
- ckanext/theming/templates/benchmarks/legion/781.html +4 -0
- ckanext/theming/templates/benchmarks/legion/782.html +4 -0
- ckanext/theming/templates/benchmarks/legion/783.html +4 -0
- ckanext/theming/templates/benchmarks/legion/784.html +4 -0
- ckanext/theming/templates/benchmarks/legion/785.html +4 -0
- ckanext/theming/templates/benchmarks/legion/786.html +4 -0
- ckanext/theming/templates/benchmarks/legion/787.html +4 -0
- ckanext/theming/templates/benchmarks/legion/788.html +4 -0
- ckanext/theming/templates/benchmarks/legion/789.html +4 -0
- ckanext/theming/templates/benchmarks/legion/79.html +4 -0
- ckanext/theming/templates/benchmarks/legion/790.html +4 -0
- ckanext/theming/templates/benchmarks/legion/791.html +4 -0
- ckanext/theming/templates/benchmarks/legion/792.html +4 -0
- ckanext/theming/templates/benchmarks/legion/793.html +4 -0
- ckanext/theming/templates/benchmarks/legion/794.html +4 -0
- ckanext/theming/templates/benchmarks/legion/795.html +4 -0
- ckanext/theming/templates/benchmarks/legion/796.html +4 -0
- ckanext/theming/templates/benchmarks/legion/797.html +4 -0
- ckanext/theming/templates/benchmarks/legion/798.html +4 -0
- ckanext/theming/templates/benchmarks/legion/799.html +4 -0
- ckanext/theming/templates/benchmarks/legion/8.html +4 -0
- ckanext/theming/templates/benchmarks/legion/80.html +4 -0
- ckanext/theming/templates/benchmarks/legion/800.html +4 -0
- ckanext/theming/templates/benchmarks/legion/801.html +4 -0
- ckanext/theming/templates/benchmarks/legion/802.html +4 -0
- ckanext/theming/templates/benchmarks/legion/803.html +4 -0
- ckanext/theming/templates/benchmarks/legion/804.html +4 -0
- ckanext/theming/templates/benchmarks/legion/805.html +4 -0
- ckanext/theming/templates/benchmarks/legion/806.html +4 -0
- ckanext/theming/templates/benchmarks/legion/807.html +4 -0
- ckanext/theming/templates/benchmarks/legion/808.html +4 -0
- ckanext/theming/templates/benchmarks/legion/809.html +4 -0
- ckanext/theming/templates/benchmarks/legion/81.html +4 -0
- ckanext/theming/templates/benchmarks/legion/810.html +4 -0
- ckanext/theming/templates/benchmarks/legion/811.html +4 -0
- ckanext/theming/templates/benchmarks/legion/812.html +4 -0
- ckanext/theming/templates/benchmarks/legion/813.html +4 -0
- ckanext/theming/templates/benchmarks/legion/814.html +4 -0
- ckanext/theming/templates/benchmarks/legion/815.html +4 -0
- ckanext/theming/templates/benchmarks/legion/816.html +4 -0
- ckanext/theming/templates/benchmarks/legion/817.html +4 -0
- ckanext/theming/templates/benchmarks/legion/818.html +4 -0
- ckanext/theming/templates/benchmarks/legion/819.html +4 -0
- ckanext/theming/templates/benchmarks/legion/82.html +4 -0
- ckanext/theming/templates/benchmarks/legion/820.html +4 -0
- ckanext/theming/templates/benchmarks/legion/821.html +4 -0
- ckanext/theming/templates/benchmarks/legion/822.html +4 -0
- ckanext/theming/templates/benchmarks/legion/823.html +4 -0
- ckanext/theming/templates/benchmarks/legion/824.html +4 -0
- ckanext/theming/templates/benchmarks/legion/825.html +4 -0
- ckanext/theming/templates/benchmarks/legion/826.html +4 -0
- ckanext/theming/templates/benchmarks/legion/827.html +4 -0
- ckanext/theming/templates/benchmarks/legion/828.html +4 -0
- ckanext/theming/templates/benchmarks/legion/829.html +4 -0
- ckanext/theming/templates/benchmarks/legion/83.html +4 -0
- ckanext/theming/templates/benchmarks/legion/830.html +4 -0
- ckanext/theming/templates/benchmarks/legion/831.html +4 -0
- ckanext/theming/templates/benchmarks/legion/832.html +4 -0
- ckanext/theming/templates/benchmarks/legion/833.html +4 -0
- ckanext/theming/templates/benchmarks/legion/834.html +4 -0
- ckanext/theming/templates/benchmarks/legion/835.html +4 -0
- ckanext/theming/templates/benchmarks/legion/836.html +4 -0
- ckanext/theming/templates/benchmarks/legion/837.html +4 -0
- ckanext/theming/templates/benchmarks/legion/838.html +4 -0
- ckanext/theming/templates/benchmarks/legion/839.html +4 -0
- ckanext/theming/templates/benchmarks/legion/84.html +4 -0
- ckanext/theming/templates/benchmarks/legion/840.html +4 -0
- ckanext/theming/templates/benchmarks/legion/841.html +4 -0
- ckanext/theming/templates/benchmarks/legion/842.html +4 -0
- ckanext/theming/templates/benchmarks/legion/843.html +4 -0
- ckanext/theming/templates/benchmarks/legion/844.html +4 -0
- ckanext/theming/templates/benchmarks/legion/845.html +4 -0
- ckanext/theming/templates/benchmarks/legion/846.html +4 -0
- ckanext/theming/templates/benchmarks/legion/847.html +4 -0
- ckanext/theming/templates/benchmarks/legion/848.html +4 -0
- ckanext/theming/templates/benchmarks/legion/849.html +4 -0
- ckanext/theming/templates/benchmarks/legion/85.html +4 -0
- ckanext/theming/templates/benchmarks/legion/850.html +4 -0
- ckanext/theming/templates/benchmarks/legion/851.html +4 -0
- ckanext/theming/templates/benchmarks/legion/852.html +4 -0
- ckanext/theming/templates/benchmarks/legion/853.html +4 -0
- ckanext/theming/templates/benchmarks/legion/854.html +4 -0
- ckanext/theming/templates/benchmarks/legion/855.html +4 -0
- ckanext/theming/templates/benchmarks/legion/856.html +4 -0
- ckanext/theming/templates/benchmarks/legion/857.html +4 -0
- ckanext/theming/templates/benchmarks/legion/858.html +4 -0
- ckanext/theming/templates/benchmarks/legion/859.html +4 -0
- ckanext/theming/templates/benchmarks/legion/86.html +4 -0
- ckanext/theming/templates/benchmarks/legion/860.html +4 -0
- ckanext/theming/templates/benchmarks/legion/861.html +4 -0
- ckanext/theming/templates/benchmarks/legion/862.html +4 -0
- ckanext/theming/templates/benchmarks/legion/863.html +4 -0
- ckanext/theming/templates/benchmarks/legion/864.html +4 -0
- ckanext/theming/templates/benchmarks/legion/865.html +4 -0
- ckanext/theming/templates/benchmarks/legion/866.html +4 -0
- ckanext/theming/templates/benchmarks/legion/867.html +4 -0
- ckanext/theming/templates/benchmarks/legion/868.html +4 -0
- ckanext/theming/templates/benchmarks/legion/869.html +4 -0
- ckanext/theming/templates/benchmarks/legion/87.html +4 -0
- ckanext/theming/templates/benchmarks/legion/870.html +4 -0
- ckanext/theming/templates/benchmarks/legion/871.html +4 -0
- ckanext/theming/templates/benchmarks/legion/872.html +4 -0
- ckanext/theming/templates/benchmarks/legion/873.html +4 -0
- ckanext/theming/templates/benchmarks/legion/874.html +4 -0
- ckanext/theming/templates/benchmarks/legion/875.html +4 -0
- ckanext/theming/templates/benchmarks/legion/876.html +4 -0
- ckanext/theming/templates/benchmarks/legion/877.html +4 -0
- ckanext/theming/templates/benchmarks/legion/878.html +4 -0
- ckanext/theming/templates/benchmarks/legion/879.html +4 -0
- ckanext/theming/templates/benchmarks/legion/88.html +4 -0
- ckanext/theming/templates/benchmarks/legion/880.html +4 -0
- ckanext/theming/templates/benchmarks/legion/881.html +4 -0
- ckanext/theming/templates/benchmarks/legion/882.html +4 -0
- ckanext/theming/templates/benchmarks/legion/883.html +4 -0
- ckanext/theming/templates/benchmarks/legion/884.html +4 -0
- ckanext/theming/templates/benchmarks/legion/885.html +4 -0
- ckanext/theming/templates/benchmarks/legion/886.html +4 -0
- ckanext/theming/templates/benchmarks/legion/887.html +4 -0
- ckanext/theming/templates/benchmarks/legion/888.html +4 -0
- ckanext/theming/templates/benchmarks/legion/889.html +4 -0
- ckanext/theming/templates/benchmarks/legion/89.html +4 -0
- ckanext/theming/templates/benchmarks/legion/890.html +4 -0
- ckanext/theming/templates/benchmarks/legion/891.html +4 -0
- ckanext/theming/templates/benchmarks/legion/892.html +4 -0
- ckanext/theming/templates/benchmarks/legion/893.html +4 -0
- ckanext/theming/templates/benchmarks/legion/894.html +4 -0
- ckanext/theming/templates/benchmarks/legion/895.html +4 -0
- ckanext/theming/templates/benchmarks/legion/896.html +4 -0
- ckanext/theming/templates/benchmarks/legion/897.html +4 -0
- ckanext/theming/templates/benchmarks/legion/898.html +4 -0
- ckanext/theming/templates/benchmarks/legion/899.html +4 -0
- ckanext/theming/templates/benchmarks/legion/9.html +4 -0
- ckanext/theming/templates/benchmarks/legion/90.html +4 -0
- ckanext/theming/templates/benchmarks/legion/900.html +4 -0
- ckanext/theming/templates/benchmarks/legion/901.html +4 -0
- ckanext/theming/templates/benchmarks/legion/902.html +4 -0
- ckanext/theming/templates/benchmarks/legion/903.html +4 -0
- ckanext/theming/templates/benchmarks/legion/904.html +4 -0
- ckanext/theming/templates/benchmarks/legion/905.html +4 -0
- ckanext/theming/templates/benchmarks/legion/906.html +4 -0
- ckanext/theming/templates/benchmarks/legion/907.html +4 -0
- ckanext/theming/templates/benchmarks/legion/908.html +4 -0
- ckanext/theming/templates/benchmarks/legion/909.html +4 -0
- ckanext/theming/templates/benchmarks/legion/91.html +4 -0
- ckanext/theming/templates/benchmarks/legion/910.html +4 -0
- ckanext/theming/templates/benchmarks/legion/911.html +4 -0
- ckanext/theming/templates/benchmarks/legion/912.html +4 -0
- ckanext/theming/templates/benchmarks/legion/913.html +4 -0
- ckanext/theming/templates/benchmarks/legion/914.html +4 -0
- ckanext/theming/templates/benchmarks/legion/915.html +4 -0
- ckanext/theming/templates/benchmarks/legion/916.html +4 -0
- ckanext/theming/templates/benchmarks/legion/917.html +4 -0
- ckanext/theming/templates/benchmarks/legion/918.html +4 -0
- ckanext/theming/templates/benchmarks/legion/919.html +4 -0
- ckanext/theming/templates/benchmarks/legion/92.html +4 -0
- ckanext/theming/templates/benchmarks/legion/920.html +4 -0
- ckanext/theming/templates/benchmarks/legion/921.html +4 -0
- ckanext/theming/templates/benchmarks/legion/922.html +4 -0
- ckanext/theming/templates/benchmarks/legion/923.html +4 -0
- ckanext/theming/templates/benchmarks/legion/924.html +4 -0
- ckanext/theming/templates/benchmarks/legion/925.html +4 -0
- ckanext/theming/templates/benchmarks/legion/926.html +4 -0
- ckanext/theming/templates/benchmarks/legion/927.html +4 -0
- ckanext/theming/templates/benchmarks/legion/928.html +4 -0
- ckanext/theming/templates/benchmarks/legion/929.html +4 -0
- ckanext/theming/templates/benchmarks/legion/93.html +4 -0
- ckanext/theming/templates/benchmarks/legion/930.html +4 -0
- ckanext/theming/templates/benchmarks/legion/931.html +4 -0
- ckanext/theming/templates/benchmarks/legion/932.html +4 -0
- ckanext/theming/templates/benchmarks/legion/933.html +4 -0
- ckanext/theming/templates/benchmarks/legion/934.html +4 -0
- ckanext/theming/templates/benchmarks/legion/935.html +4 -0
- ckanext/theming/templates/benchmarks/legion/936.html +4 -0
- ckanext/theming/templates/benchmarks/legion/937.html +4 -0
- ckanext/theming/templates/benchmarks/legion/938.html +4 -0
- ckanext/theming/templates/benchmarks/legion/939.html +4 -0
- ckanext/theming/templates/benchmarks/legion/94.html +4 -0
- ckanext/theming/templates/benchmarks/legion/940.html +4 -0
- ckanext/theming/templates/benchmarks/legion/941.html +4 -0
- ckanext/theming/templates/benchmarks/legion/942.html +4 -0
- ckanext/theming/templates/benchmarks/legion/943.html +4 -0
- ckanext/theming/templates/benchmarks/legion/944.html +4 -0
- ckanext/theming/templates/benchmarks/legion/945.html +4 -0
- ckanext/theming/templates/benchmarks/legion/946.html +4 -0
- ckanext/theming/templates/benchmarks/legion/947.html +4 -0
- ckanext/theming/templates/benchmarks/legion/948.html +4 -0
- ckanext/theming/templates/benchmarks/legion/949.html +4 -0
- ckanext/theming/templates/benchmarks/legion/95.html +4 -0
- ckanext/theming/templates/benchmarks/legion/950.html +4 -0
- ckanext/theming/templates/benchmarks/legion/951.html +4 -0
- ckanext/theming/templates/benchmarks/legion/952.html +4 -0
- ckanext/theming/templates/benchmarks/legion/953.html +4 -0
- ckanext/theming/templates/benchmarks/legion/954.html +4 -0
- ckanext/theming/templates/benchmarks/legion/955.html +4 -0
- ckanext/theming/templates/benchmarks/legion/956.html +4 -0
- ckanext/theming/templates/benchmarks/legion/957.html +4 -0
- ckanext/theming/templates/benchmarks/legion/958.html +4 -0
- ckanext/theming/templates/benchmarks/legion/959.html +4 -0
- ckanext/theming/templates/benchmarks/legion/96.html +4 -0
- ckanext/theming/templates/benchmarks/legion/960.html +4 -0
- ckanext/theming/templates/benchmarks/legion/961.html +4 -0
- ckanext/theming/templates/benchmarks/legion/962.html +4 -0
- ckanext/theming/templates/benchmarks/legion/963.html +4 -0
- ckanext/theming/templates/benchmarks/legion/964.html +4 -0
- ckanext/theming/templates/benchmarks/legion/965.html +4 -0
- ckanext/theming/templates/benchmarks/legion/966.html +4 -0
- ckanext/theming/templates/benchmarks/legion/967.html +4 -0
- ckanext/theming/templates/benchmarks/legion/968.html +4 -0
- ckanext/theming/templates/benchmarks/legion/969.html +4 -0
- ckanext/theming/templates/benchmarks/legion/97.html +4 -0
- ckanext/theming/templates/benchmarks/legion/970.html +4 -0
- ckanext/theming/templates/benchmarks/legion/971.html +4 -0
- ckanext/theming/templates/benchmarks/legion/972.html +4 -0
- ckanext/theming/templates/benchmarks/legion/973.html +4 -0
- ckanext/theming/templates/benchmarks/legion/974.html +4 -0
- ckanext/theming/templates/benchmarks/legion/975.html +4 -0
- ckanext/theming/templates/benchmarks/legion/976.html +4 -0
- ckanext/theming/templates/benchmarks/legion/977.html +4 -0
- ckanext/theming/templates/benchmarks/legion/978.html +4 -0
- ckanext/theming/templates/benchmarks/legion/979.html +4 -0
- ckanext/theming/templates/benchmarks/legion/98.html +4 -0
- ckanext/theming/templates/benchmarks/legion/980.html +4 -0
- ckanext/theming/templates/benchmarks/legion/981.html +4 -0
- ckanext/theming/templates/benchmarks/legion/982.html +4 -0
- ckanext/theming/templates/benchmarks/legion/983.html +4 -0
- ckanext/theming/templates/benchmarks/legion/984.html +4 -0
- ckanext/theming/templates/benchmarks/legion/985.html +4 -0
- ckanext/theming/templates/benchmarks/legion/986.html +4 -0
- ckanext/theming/templates/benchmarks/legion/987.html +4 -0
- ckanext/theming/templates/benchmarks/legion/988.html +4 -0
- ckanext/theming/templates/benchmarks/legion/989.html +4 -0
- ckanext/theming/templates/benchmarks/legion/99.html +4 -0
- ckanext/theming/templates/benchmarks/legion/990.html +4 -0
- ckanext/theming/templates/benchmarks/legion/991.html +4 -0
- ckanext/theming/templates/benchmarks/legion/992.html +4 -0
- ckanext/theming/templates/benchmarks/legion/993.html +4 -0
- ckanext/theming/templates/benchmarks/legion/994.html +4 -0
- ckanext/theming/templates/benchmarks/legion/995.html +4 -0
- ckanext/theming/templates/benchmarks/legion/996.html +4 -0
- ckanext/theming/templates/benchmarks/legion/997.html +4 -0
- ckanext/theming/templates/benchmarks/legion/998.html +4 -0
- ckanext/theming/templates/benchmarks/legion/999.html +4 -0
- ckanext/theming/templates/benchmarks/legion_macros.html +6000 -0
- ckanext/theming/templates/benchmarks/macro_direct_include.html +3 -0
- ckanext/theming/templates/benchmarks/macro_direct_include_1k.html +1003 -0
- ckanext/theming/templates/benchmarks/macro_direct_include_legion.html +5 -0
- ckanext/theming/templates/benchmarks/macro_include_with_context.html +3 -0
- ckanext/theming/templates/benchmarks/macro_include_with_context_1k.html +1003 -0
- ckanext/theming/templates/benchmarks/macro_include_with_context_legion.html +5 -0
- ckanext/theming/templates/benchmarks/macro_include_without_context.html +3 -0
- ckanext/theming/templates/benchmarks/macro_include_without_context_1k.html +1003 -0
- ckanext/theming/templates/benchmarks/macro_include_without_context_legion.html +5 -0
- ckanext/theming/templates/benchmarks/macro_inline.html +3 -0
- ckanext/theming/templates/benchmarks/macro_inline_1k.html +1002 -0
- ckanext/theming/templates/benchmarks/macro_inline_legion.html +5 -0
- ckanext/theming/templates/benchmarks/macro_snippet.html +3 -0
- ckanext/theming/templates/benchmarks/macro_snippet_1k.html +1003 -0
- ckanext/theming/templates/benchmarks/macro_snippet_legion.html +5 -0
- ckanext/theming/templates/benchmarks/macros.html +28 -0
- ckanext/theming/templates/benchmarks/snippet.html +1 -0
- ckanext/theming/templates/benchmarks/snippet_1k.html +1000 -0
- ckanext/theming/templates/benchmarks/snippet_legion.html +3 -0
- ckanext/theming/tests/__init__.py +0 -0
- ckanext/theming/tests/test_benchmark.py +83 -0
- ckanext/theming/tests/test_lib.py +107 -0
- ckanext/theming/tests/test_plugin.py +0 -0
- ckanext/theming/themes/bare/assets/script.js +203 -0
- ckanext/theming/themes/bare/assets/style.css +795 -0
- ckanext/theming/themes/bare/assets/webassets.yml +22 -0
- ckanext/theming/themes/bare/gulpfile.js +81 -0
- ckanext/theming/themes/bare/mkdocs.yml +166 -0
- ckanext/theming/themes/bare/package-lock.json +2764 -0
- ckanext/theming/themes/bare/package.json +20 -0
- ckanext/theming/themes/bare/templates/_base.html +93 -0
- ckanext/theming/themes/bare/templates/_footer.html +3 -0
- ckanext/theming/themes/bare/templates/_header.html +58 -0
- ckanext/theming/themes/bare/templates/_layout.html +140 -0
- ckanext/theming/themes/bare/templates/_page.html +23 -0
- ckanext/theming/themes/bare/templates/admin/_base.html +19 -0
- ckanext/theming/themes/bare/templates/admin/config.html +73 -0
- ckanext/theming/themes/bare/templates/admin/confirm_reset.html +21 -0
- ckanext/theming/themes/bare/templates/admin/index.html +58 -0
- ckanext/theming/themes/bare/templates/admin/snippets/confirm_delete.html +22 -0
- ckanext/theming/themes/bare/templates/admin/trash.html +58 -0
- ckanext/theming/themes/bare/templates/ckanext/stats/index.html +133 -0
- ckanext/theming/themes/bare/templates/datapusher/resource_data.html +89 -0
- ckanext/theming/themes/bare/templates/datastore/dictionary.html +51 -0
- ckanext/theming/themes/bare/templates/datastore/snippets/_dictionary_view.html +17 -0
- ckanext/theming/themes/bare/templates/datastore/snippets/api_info.html +93 -0
- ckanext/theming/themes/bare/templates/development/primer.html +1489 -0
- ckanext/theming/themes/bare/templates/error_document_template.html +28 -0
- ckanext/theming/themes/bare/templates/group/_base.html +29 -0
- ckanext/theming/themes/bare/templates/group/_edit_base.html +15 -0
- ckanext/theming/themes/bare/templates/group/about.html +36 -0
- ckanext/theming/themes/bare/templates/group/activity_stream.html +15 -0
- ckanext/theming/themes/bare/templates/group/admins.html +22 -0
- ckanext/theming/themes/bare/templates/group/changes.html +45 -0
- ckanext/theming/themes/bare/templates/group/confirm_delete.html +18 -0
- ckanext/theming/themes/bare/templates/group/confirm_delete_member.html +18 -0
- ckanext/theming/themes/bare/templates/group/edit.html +16 -0
- ckanext/theming/themes/bare/templates/group/followers.html +25 -0
- ckanext/theming/themes/bare/templates/group/index.html +46 -0
- ckanext/theming/themes/bare/templates/group/manage_members.html +41 -0
- ckanext/theming/themes/bare/templates/group/member_new.html +57 -0
- ckanext/theming/themes/bare/templates/group/members.html +24 -0
- ckanext/theming/themes/bare/templates/group/new.html +18 -0
- ckanext/theming/themes/bare/templates/group/new_group_form.html +53 -0
- ckanext/theming/themes/bare/templates/group/read.html +23 -0
- ckanext/theming/themes/bare/templates/group/snippets/info.html +49 -0
- ckanext/theming/themes/bare/templates/home/_about_text.html +20 -0
- ckanext/theming/themes/bare/templates/home/about.html +26 -0
- ckanext/theming/themes/bare/templates/home/index.html +76 -0
- ckanext/theming/themes/bare/templates/macros/ui/container.html +96 -0
- ckanext/theming/themes/bare/templates/macros/ui/content.html +41 -0
- ckanext/theming/themes/bare/templates/macros/ui/data.html +74 -0
- ckanext/theming/themes/bare/templates/macros/ui/element.html +89 -0
- ckanext/theming/themes/bare/templates/macros/ui/feedback.html +67 -0
- ckanext/theming/themes/bare/templates/macros/ui/form.html +324 -0
- ckanext/theming/themes/bare/templates/macros/ui/handle.html +15 -0
- ckanext/theming/themes/bare/templates/macros/ui/meta.html +50 -0
- ckanext/theming/themes/bare/templates/macros/ui/nav.html +73 -0
- ckanext/theming/themes/bare/templates/macros/ui/search.html +67 -0
- ckanext/theming/themes/bare/templates/macros/ui/section.html +28 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/activity.html +1 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/facet.html +8 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/group.html +7 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/license.html +11 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/organization.html +1 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/package.html +4 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/resource.html +4 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/search_form.html +23 -0
- ckanext/theming/themes/bare/templates/macros/ui/snippets/user.html +1 -0
- ckanext/theming/themes/bare/templates/macros/ui/wrapper.html +32 -0
- ckanext/theming/themes/bare/templates/macros/ui.html +147 -0
- ckanext/theming/themes/bare/templates/organization/_base.html +29 -0
- ckanext/theming/themes/bare/templates/organization/_edit_base.html +17 -0
- ckanext/theming/themes/bare/templates/organization/about.html +36 -0
- ckanext/theming/themes/bare/templates/organization/activity_stream.html +15 -0
- ckanext/theming/themes/bare/templates/organization/admins.html +22 -0
- ckanext/theming/themes/bare/templates/organization/bulk_process.html +62 -0
- ckanext/theming/themes/bare/templates/organization/changes.html +42 -0
- ckanext/theming/themes/bare/templates/organization/confirm_delete.html +19 -0
- ckanext/theming/themes/bare/templates/organization/confirm_delete_member.html +19 -0
- ckanext/theming/themes/bare/templates/organization/edit.html +16 -0
- ckanext/theming/themes/bare/templates/organization/index.html +47 -0
- ckanext/theming/themes/bare/templates/organization/manage_members.html +41 -0
- ckanext/theming/themes/bare/templates/organization/member_new.html +58 -0
- ckanext/theming/themes/bare/templates/organization/members.html +24 -0
- ckanext/theming/themes/bare/templates/organization/new.html +18 -0
- ckanext/theming/themes/bare/templates/organization/new_organization_form.html +52 -0
- ckanext/theming/themes/bare/templates/organization/read.html +24 -0
- ckanext/theming/themes/bare/templates/organization/snippets/info.html +47 -0
- ckanext/theming/themes/bare/templates/package/_base.html +63 -0
- ckanext/theming/themes/bare/templates/package/_edit_base.html +17 -0
- ckanext/theming/themes/bare/templates/package/_resource_edit_base.html +33 -0
- ckanext/theming/themes/bare/templates/package/activity_stream.html +15 -0
- ckanext/theming/themes/bare/templates/package/changes.html +45 -0
- ckanext/theming/themes/bare/templates/package/collaborators/collaborator_new.html +59 -0
- ckanext/theming/themes/bare/templates/package/collaborators/collaborators.html +42 -0
- ckanext/theming/themes/bare/templates/package/collaborators/confirm_delete.html +20 -0
- ckanext/theming/themes/bare/templates/package/confirm_delete.html +21 -0
- ckanext/theming/themes/bare/templates/package/confirm_delete_resource.html +19 -0
- ckanext/theming/themes/bare/templates/package/edit.html +16 -0
- ckanext/theming/themes/bare/templates/package/edit_view.html +1 -0
- ckanext/theming/themes/bare/templates/package/followers.html +25 -0
- ckanext/theming/themes/bare/templates/package/group_list.html +46 -0
- ckanext/theming/themes/bare/templates/package/history.html +12 -0
- ckanext/theming/themes/bare/templates/package/new.html +16 -0
- ckanext/theming/themes/bare/templates/package/new_resource.html +15 -0
- ckanext/theming/themes/bare/templates/package/new_resource_not_draft.html +1 -0
- ckanext/theming/themes/bare/templates/package/new_view.html +56 -0
- ckanext/theming/themes/bare/templates/package/read.html +105 -0
- ckanext/theming/themes/bare/templates/package/resource_edit.html +17 -0
- ckanext/theming/themes/bare/templates/package/resource_history.html +14 -0
- ckanext/theming/themes/bare/templates/package/resource_read.html +148 -0
- ckanext/theming/themes/bare/templates/package/resource_views.html +33 -0
- ckanext/theming/themes/bare/templates/package/resources.html +55 -0
- ckanext/theming/themes/bare/templates/package/search.html +20 -0
- ckanext/theming/themes/bare/templates/package/snippets/_package_basic_fields.html +62 -0
- ckanext/theming/themes/bare/templates/package/snippets/_package_metadata_fields.html +30 -0
- ckanext/theming/themes/bare/templates/package/snippets/_resource_view.html +30 -0
- ckanext/theming/themes/bare/templates/package/snippets/_search_facets.html +12 -0
- ckanext/theming/themes/bare/templates/package/snippets/_search_results.html +26 -0
- ckanext/theming/themes/bare/templates/package/snippets/info.html +48 -0
- ckanext/theming/themes/bare/templates/package/snippets/package_form.html +62 -0
- ckanext/theming/themes/bare/templates/package/snippets/resource_form.html +86 -0
- ckanext/theming/themes/bare/templates/package/snippets/search_htmx.html +17 -0
- ckanext/theming/themes/bare/templates/snippets/activity_stream.html +56 -0
- ckanext/theming/themes/bare/templates/snippets/csrf_input.html +1 -0
- ckanext/theming/themes/bare/templates/snippets/follow_button.html +6 -0
- ckanext/theming/themes/bare/templates/user/_base.html +45 -0
- ckanext/theming/themes/bare/templates/user/_edit_base.html +14 -0
- ckanext/theming/themes/bare/templates/user/activity_stream.html +16 -0
- ckanext/theming/themes/bare/templates/user/api_tokens.html +30 -0
- ckanext/theming/themes/bare/templates/user/confirm_delete.html +18 -0
- ckanext/theming/themes/bare/templates/user/dashboard.html +29 -0
- ckanext/theming/themes/bare/templates/user/dashboard_datasets.html +29 -0
- ckanext/theming/themes/bare/templates/user/dashboard_groups.html +33 -0
- ckanext/theming/themes/bare/templates/user/dashboard_organizations.html +32 -0
- ckanext/theming/themes/bare/templates/user/edit.html +16 -0
- ckanext/theming/themes/bare/templates/user/edit_user_form.html +69 -0
- ckanext/theming/themes/bare/templates/user/followers.html +30 -0
- ckanext/theming/themes/bare/templates/user/list.html +32 -0
- ckanext/theming/themes/bare/templates/user/login.html +49 -0
- ckanext/theming/themes/bare/templates/user/logout.html +12 -0
- ckanext/theming/themes/bare/templates/user/logout_first.html +13 -0
- ckanext/theming/themes/bare/templates/user/new.html +17 -0
- ckanext/theming/themes/bare/templates/user/new_user_form.html +25 -0
- ckanext/theming/themes/bare/templates/user/perform_reset.html +38 -0
- ckanext/theming/themes/bare/templates/user/read.html +16 -0
- ckanext/theming/themes/bare/templates/user/read_groups.html +36 -0
- ckanext/theming/themes/bare/templates/user/read_organizations.html +36 -0
- ckanext/theming/themes/bare/templates/user/request_reset.html +40 -0
- ckanext/theming/themes/bare/templates/user/snippets/api_token_create_form.html +18 -0
- ckanext/theming/themes/bare/templates/user/snippets/api_token_list.html +40 -0
- ckanext/theming/themes/bare/templates/user/snippets/api_tokens_revoke.html +3 -0
- ckanext/theming/themes/bare/templates/user/snippets/info.html +105 -0
- ckanext/theming/themes/bare/templates/user/snippets/news_feed.html +3 -0
- ckanext/theming/themes/bare/tsconfig.json +21 -0
- ckanext_theming-0.0.1-py3.10-nspkg.pth +1 -0
- ckanext_theming-0.0.1.dist-info/METADATA +151 -0
- ckanext_theming-0.0.1.dist-info/RECORD +1198 -0
- ckanext_theming-0.0.1.dist-info/WHEEL +5 -0
- ckanext_theming-0.0.1.dist-info/entry_points.txt +2 -0
- ckanext_theming-0.0.1.dist-info/licenses/LICENSE +661 -0
- ckanext_theming-0.0.1.dist-info/namespace_packages.txt +1 -0
- ckanext_theming-0.0.1.dist-info/top_level.txt +1 -0
|
File without changes
|
ckanext/theming/cli.py
ADDED
|
@@ -0,0 +1,650 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import contextlib
|
|
4
|
+
import fnmatch
|
|
5
|
+
import inspect
|
|
6
|
+
import json
|
|
7
|
+
import logging
|
|
8
|
+
import os
|
|
9
|
+
import pprint
|
|
10
|
+
import random
|
|
11
|
+
import re
|
|
12
|
+
import shutil
|
|
13
|
+
import string
|
|
14
|
+
from collections import Counter, defaultdict
|
|
15
|
+
from collections.abc import Callable, Collection
|
|
16
|
+
from typing import IO, Any
|
|
17
|
+
|
|
18
|
+
import click
|
|
19
|
+
import flask.signals
|
|
20
|
+
from jinja2 import Environment, Template, TemplateNotFound
|
|
21
|
+
from jinja2.exceptions import UndefinedError
|
|
22
|
+
from jinja2.runtime import Macro
|
|
23
|
+
from werkzeug.exceptions import NotFound
|
|
24
|
+
from werkzeug.routing import BuildError, Rule
|
|
25
|
+
|
|
26
|
+
import ckan.plugins.toolkit as tk
|
|
27
|
+
from ckan import model, types
|
|
28
|
+
|
|
29
|
+
from . import lib, reference
|
|
30
|
+
|
|
31
|
+
log = logging.getLogger(__name__)
|
|
32
|
+
|
|
33
|
+
__all__ = ["theme"]
|
|
34
|
+
|
|
35
|
+
RE_COMPONENT = re.compile(r"(?<!\.)ui\.(?!util\.)(?P<name>\w+)")
|
|
36
|
+
|
|
37
|
+
RE_EXTEND = re.compile(
|
|
38
|
+
r"""
|
|
39
|
+
\{%-?\s* (?# tag start)
|
|
40
|
+
extends\s+ (?# tag name)
|
|
41
|
+
(?P<name>.+?) (?# template name. Non-greedy match to exclude leading whitespace)
|
|
42
|
+
\s*-?%\} (?# tag end)
|
|
43
|
+
""",
|
|
44
|
+
re.X,
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
RE_CKAN_EXTEND = re.compile(
|
|
48
|
+
r"""
|
|
49
|
+
\{%-?\s* (?# tag start)
|
|
50
|
+
ckan_extends\s+ (?# tag name)
|
|
51
|
+
\s*-?%\} (?# tag end)
|
|
52
|
+
""",
|
|
53
|
+
re.X,
|
|
54
|
+
)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
RE_INCLUDE = re.compile(
|
|
58
|
+
r"""
|
|
59
|
+
\{%-?\s* (?# tag start)
|
|
60
|
+
include\s+ (?# tag name)
|
|
61
|
+
(?P<name>.+?) (?# template name)
|
|
62
|
+
\s*-?%\} (?# tag end)
|
|
63
|
+
""",
|
|
64
|
+
re.X,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@click.group(name="theme", short_help="Theme related commands.")
|
|
69
|
+
def theme():
|
|
70
|
+
pass
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def theme_callback(ctx: click.Context, param: click.Parameter, name: str | None):
|
|
74
|
+
if not name:
|
|
75
|
+
name = tk.config["ckan.ui.theme"]
|
|
76
|
+
|
|
77
|
+
if not name:
|
|
78
|
+
tk.error_shout("Theme is not configured")
|
|
79
|
+
raise click.Abort
|
|
80
|
+
|
|
81
|
+
try:
|
|
82
|
+
return lib.get_theme(name)
|
|
83
|
+
except KeyError as err:
|
|
84
|
+
tk.error_shout(f"Theme {name} is not registered")
|
|
85
|
+
raise click.Abort from err
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
theme_option = click.option("-t", "--theme", callback=theme_callback)
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@contextlib.contextmanager
|
|
92
|
+
def _make_ui(ctx: click.Context, theme: lib.Theme):
|
|
93
|
+
"""Context manager to build the UI for a theme within a Flask app context."""
|
|
94
|
+
with ctx.meta["flask_app"].app_context() as app_context:
|
|
95
|
+
yield theme.build_ui(app_context.app)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@theme.command("list")
|
|
99
|
+
def list_themes():
|
|
100
|
+
"""List available themes."""
|
|
101
|
+
themes = lib.collect_themes()
|
|
102
|
+
for name, info in themes.items():
|
|
103
|
+
click.echo(name)
|
|
104
|
+
click.echo(f" Path: {info.path}")
|
|
105
|
+
|
|
106
|
+
lineage = []
|
|
107
|
+
parent = info.parent
|
|
108
|
+
while parent:
|
|
109
|
+
if parent_info := themes.get(parent):
|
|
110
|
+
lineage.append(parent)
|
|
111
|
+
parent = parent_info.parent
|
|
112
|
+
else:
|
|
113
|
+
lineage.append(click.style(parent, fg="red"))
|
|
114
|
+
|
|
115
|
+
if lineage:
|
|
116
|
+
click.secho(f" Extends: {' -> '.join(lineage)}")
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
@theme.command("create")
|
|
120
|
+
@click.argument("name")
|
|
121
|
+
@click.argument("location", required=False)
|
|
122
|
+
@click.option("--base", default="bare", help="Base theme to copy structure and templates from.")
|
|
123
|
+
def theme_create(name: str, location: str, base: str):
|
|
124
|
+
"""Create a new theme with all required structure and templates."""
|
|
125
|
+
if not location:
|
|
126
|
+
location = os.getcwd()
|
|
127
|
+
if not click.confirm(f"No location provided, theme will be created inside `{location}`"):
|
|
128
|
+
raise click.Abort
|
|
129
|
+
theme = lib.get_theme(base)
|
|
130
|
+
if not theme.path:
|
|
131
|
+
tk.error_shout(f"{base} theme does not have a filesystem path to copy from")
|
|
132
|
+
if theme.parent:
|
|
133
|
+
click.echo(f"Consider using `{theme.parent}` as the base theme instead.")
|
|
134
|
+
|
|
135
|
+
raise click.Abort
|
|
136
|
+
|
|
137
|
+
shutil.copytree(
|
|
138
|
+
theme.path,
|
|
139
|
+
os.path.join(location, name),
|
|
140
|
+
ignore=lambda d, f: ["node_modules", "package-lock.json", ".benchmarks", ".test-screenshots"],
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
@theme.group()
|
|
145
|
+
def component():
|
|
146
|
+
"""Component-level commands."""
|
|
147
|
+
|
|
148
|
+
|
|
149
|
+
@component.command("list")
|
|
150
|
+
@click.pass_context
|
|
151
|
+
@theme_option
|
|
152
|
+
def component_list(ctx: click.Context, theme: lib.Theme):
|
|
153
|
+
"""List available components."""
|
|
154
|
+
with _make_ui(ctx, theme) as ui:
|
|
155
|
+
for item in ui:
|
|
156
|
+
click.echo(item)
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
@component.command("analyze")
|
|
160
|
+
@click.pass_context
|
|
161
|
+
@theme_option
|
|
162
|
+
@click.argument("components", nargs=-1)
|
|
163
|
+
def component_analyze(ctx: click.Context, components: Collection[str], theme: lib.Theme): # noqa: C901
|
|
164
|
+
"""Analyze UI components and their implementations."""
|
|
165
|
+
with _make_ui(ctx, theme) as ui:
|
|
166
|
+
if not components:
|
|
167
|
+
components = sorted(ui)
|
|
168
|
+
click.secho(f"Available UI components({len(components)}):")
|
|
169
|
+
|
|
170
|
+
for component in components:
|
|
171
|
+
comp_func = getattr(ui, component, None)
|
|
172
|
+
if not comp_func:
|
|
173
|
+
tk.error_shout(f"Unknown component {component}")
|
|
174
|
+
continue
|
|
175
|
+
|
|
176
|
+
ref = reference.components[component]
|
|
177
|
+
|
|
178
|
+
# Try to get the source or signature information
|
|
179
|
+
if isinstance(comp_func, Macro):
|
|
180
|
+
sig = ", ".join(comp_func.arguments)
|
|
181
|
+
|
|
182
|
+
if comp_func.catch_varargs:
|
|
183
|
+
sig = ", ".join([sig, "*varargs"])
|
|
184
|
+
|
|
185
|
+
if comp_func.catch_kwargs:
|
|
186
|
+
sig = ", ".join([sig, "**kwargs"])
|
|
187
|
+
|
|
188
|
+
sig = f"({sig})"
|
|
189
|
+
comp_type = "Callable macro" if comp_func.caller else "Macro"
|
|
190
|
+
|
|
191
|
+
else:
|
|
192
|
+
sig = str(inspect.signature(comp_func))
|
|
193
|
+
comp_type = type(comp_func).__name__
|
|
194
|
+
|
|
195
|
+
click.secho(f"{component}", bold=True)
|
|
196
|
+
click.secho(click.style("Type: ", fg="yellow") + comp_type)
|
|
197
|
+
click.secho(click.style("Category: ", fg="yellow") + ref.category.name)
|
|
198
|
+
click.secho(click.style("Signature: ", fg="yellow") + sig)
|
|
199
|
+
click.echo()
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
@component.command("check")
|
|
203
|
+
@theme_option
|
|
204
|
+
@click.pass_context
|
|
205
|
+
def component_check(ctx: click.Context, theme: lib.Theme): # noqa: C901
|
|
206
|
+
"""Verify that a theme implements all required UI components."""
|
|
207
|
+
categorized: dict[reference.Category, set[str]] = defaultdict(set)
|
|
208
|
+
for name, info in reference.components.items():
|
|
209
|
+
categorized[info.category].add(name)
|
|
210
|
+
|
|
211
|
+
with _make_ui(ctx, theme) as ui:
|
|
212
|
+
# Get all components from this theme
|
|
213
|
+
theme_components = set(ui)
|
|
214
|
+
missing_components = {name: sorted(items - theme_components) for name, items in categorized.items()}
|
|
215
|
+
|
|
216
|
+
extra_components = sorted(theme_components.difference(reference.components))
|
|
217
|
+
|
|
218
|
+
click.echo(f"Theme implements {len(theme_components)} components")
|
|
219
|
+
|
|
220
|
+
for category, items in categorized.items():
|
|
221
|
+
if missing_components[category]:
|
|
222
|
+
click.secho(
|
|
223
|
+
f" Missing {len(missing_components[category])} out of"
|
|
224
|
+
+ f" {len(items)} in category {category.name}",
|
|
225
|
+
fg="yellow",
|
|
226
|
+
)
|
|
227
|
+
click.secho(" " + ", ".join(missing_components[category]), fg="red")
|
|
228
|
+
|
|
229
|
+
else:
|
|
230
|
+
click.secho(f" All components in category {category.name} are implemented", fg="green")
|
|
231
|
+
if extra_components:
|
|
232
|
+
click.secho(f" Extra components ({len(extra_components)})", fg="yellow")
|
|
233
|
+
click.secho(" " + ", ".join(extra_components), fg="blue")
|
|
234
|
+
|
|
235
|
+
with ctx.meta["flask_app"].test_request_context():
|
|
236
|
+
args = {
|
|
237
|
+
"".join(random.sample(string.ascii_letters, 10)): random.randint(0, 100), # noqa: S311
|
|
238
|
+
}
|
|
239
|
+
rigid: dict[type, dict[str, Exception]] = defaultdict(dict)
|
|
240
|
+
allow_rigid = {"user", "group", "package", "resource", "organization"}
|
|
241
|
+
|
|
242
|
+
for name in sorted(theme_components):
|
|
243
|
+
func = getattr(ui, name)
|
|
244
|
+
try:
|
|
245
|
+
func(**args)
|
|
246
|
+
except Exception as err: # noqa: BLE001
|
|
247
|
+
if isinstance(err, UndefinedError) and name in allow_rigid:
|
|
248
|
+
continue
|
|
249
|
+
rigid[type(err)][name] = err
|
|
250
|
+
|
|
251
|
+
if rigid:
|
|
252
|
+
click.secho(
|
|
253
|
+
f" {sum(map(len, rigid.values()))} components produced an error with random arguments",
|
|
254
|
+
fg="yellow",
|
|
255
|
+
)
|
|
256
|
+
for key, values in rigid.items():
|
|
257
|
+
click.secho(f" {key.__name__}:", bold=False)
|
|
258
|
+
for name, err in values.items():
|
|
259
|
+
click.secho(f" {click.style(name, bold=True)}: {err}")
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
@theme.group()
|
|
263
|
+
def template():
|
|
264
|
+
"""Template-level commands."""
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
@template.command("list")
|
|
268
|
+
@theme_option
|
|
269
|
+
def template_list(theme: lib.Theme):
|
|
270
|
+
"""List template files in the theme."""
|
|
271
|
+
root = theme.template_path()
|
|
272
|
+
for path, _, files in os.walk(root):
|
|
273
|
+
relpath = os.path.relpath(path, root)
|
|
274
|
+
if relpath == ".":
|
|
275
|
+
relpath = ""
|
|
276
|
+
|
|
277
|
+
for file in files:
|
|
278
|
+
tpl_name = os.path.join(relpath, file)
|
|
279
|
+
reference.templates[tpl_name]
|
|
280
|
+
click.echo(tpl_name)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
@template.command("check")
|
|
284
|
+
@theme_option
|
|
285
|
+
def template_check(theme: lib.Theme):
|
|
286
|
+
"""Verify that a theme contains all required templates."""
|
|
287
|
+
categorized: dict[reference.Category, set[str]] = defaultdict(set)
|
|
288
|
+
for name, info in reference.templates.items():
|
|
289
|
+
categorized[info.category].add(name)
|
|
290
|
+
|
|
291
|
+
root = theme.template_path()
|
|
292
|
+
templates = {os.path.relpath(os.path.join(path, file), root) for path, _, files in os.walk(root) for file in files}
|
|
293
|
+
|
|
294
|
+
click.echo(f"Theme contains {len(templates)} templates")
|
|
295
|
+
|
|
296
|
+
missing = {name: sorted(items - templates) for name, items in categorized.items()}
|
|
297
|
+
extra = sorted(templates.difference(reference.templates))
|
|
298
|
+
|
|
299
|
+
for category, items in categorized.items():
|
|
300
|
+
if missing[category]:
|
|
301
|
+
click.secho(
|
|
302
|
+
f" Missing {len(missing[category])} out of" + f" {len(items)} in category {category.name}",
|
|
303
|
+
fg="yellow",
|
|
304
|
+
)
|
|
305
|
+
click.secho(" " + ", ".join(missing[category]), fg="red")
|
|
306
|
+
|
|
307
|
+
else:
|
|
308
|
+
click.secho(f" All templates in category {category.name} are present", fg="green")
|
|
309
|
+
if extra:
|
|
310
|
+
click.secho(f" Extra templates ({len(extra)})", fg="yellow")
|
|
311
|
+
click.secho(" " + "\n ".join(extra), fg="blue")
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
@template.command("analyze")
|
|
315
|
+
@click.pass_context
|
|
316
|
+
@theme_option
|
|
317
|
+
@click.argument("templates", nargs=-1)
|
|
318
|
+
@click.option("--relative-filename", is_flag=True)
|
|
319
|
+
def template_analyze( # noqa: C901
|
|
320
|
+
ctx: click.Context, templates: Collection[str], theme: lib.Theme, relative_filename: bool
|
|
321
|
+
):
|
|
322
|
+
"""Analyze theme templates."""
|
|
323
|
+
root = theme.template_path()
|
|
324
|
+
if not templates:
|
|
325
|
+
templates = {
|
|
326
|
+
os.path.relpath(os.path.join(path, file), root) for path, _, files in os.walk(root) for file in files
|
|
327
|
+
}
|
|
328
|
+
click.secho(f"Available templates({len(templates)}):")
|
|
329
|
+
|
|
330
|
+
env = ctx.meta["flask_app"].jinja_env
|
|
331
|
+
for name in sorted(templates):
|
|
332
|
+
try:
|
|
333
|
+
tpl = env.get_template(name)
|
|
334
|
+
except TemplateNotFound:
|
|
335
|
+
tk.error_shout(f"Template {name} does not exist")
|
|
336
|
+
continue
|
|
337
|
+
|
|
338
|
+
ref = reference.templates[name]
|
|
339
|
+
click.secho(f"{name}", bold=True)
|
|
340
|
+
click.secho(click.style("Category: ", fg="yellow") + ref.category.name)
|
|
341
|
+
click.secho(
|
|
342
|
+
click.style("Filename: ", fg="yellow") + os.path.relpath(tpl.filename, os.getcwd())
|
|
343
|
+
if relative_filename
|
|
344
|
+
else tpl.filename
|
|
345
|
+
)
|
|
346
|
+
|
|
347
|
+
with open(tpl.filename) as src:
|
|
348
|
+
content = src.read()
|
|
349
|
+
|
|
350
|
+
if includes := RE_INCLUDE.findall(content):
|
|
351
|
+
click.secho(click.style("Includes: ", fg="yellow") + ", ".join(i for i in sorted(set(includes))))
|
|
352
|
+
|
|
353
|
+
all_blocks: set[str] = set(tpl.blocks)
|
|
354
|
+
hierarchy: list[str] = []
|
|
355
|
+
|
|
356
|
+
hierarchy_break = _discover_template_hierarchy(env, tpl, hierarchy, all_blocks)
|
|
357
|
+
|
|
358
|
+
# click.secho(click.style("Extends: ", fg="yellow") + parent_name)
|
|
359
|
+
if hierarchy:
|
|
360
|
+
click.secho("Hierarchy: ", fg="yellow")
|
|
361
|
+
for item in hierarchy:
|
|
362
|
+
click.echo(f"\t{os.path.relpath(item, os.getcwd()) if relative_filename else os.path.normpath(item)}")
|
|
363
|
+
|
|
364
|
+
if hierarchy_break:
|
|
365
|
+
click.secho(click.style("Hierarchy detection interrupted on: ", fg="red") + hierarchy_break)
|
|
366
|
+
|
|
367
|
+
if tpl.blocks:
|
|
368
|
+
click.secho(click.style("Explicit blocks: ", fg="yellow") + ", ".join(sorted(tpl.blocks)))
|
|
369
|
+
|
|
370
|
+
implicit_blocks = all_blocks.difference(tpl.blocks)
|
|
371
|
+
if implicit_blocks:
|
|
372
|
+
click.secho(click.style("Implicit blocks: ", fg="yellow") + ", ".join(sorted(implicit_blocks)))
|
|
373
|
+
|
|
374
|
+
click.echo()
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
def _discover_template_hierarchy(
|
|
378
|
+
env: Environment, tpl: Template, hierarchy: list[str], all_blocks: set[str]
|
|
379
|
+
) -> str | None:
|
|
380
|
+
parent_name = None
|
|
381
|
+
|
|
382
|
+
with open(tpl.filename) as src: # pyright: ignore[reportArgumentType]
|
|
383
|
+
content = src.read()
|
|
384
|
+
|
|
385
|
+
if extends := RE_EXTEND.search(content):
|
|
386
|
+
parent_name = extends.group("name").strip("\"'")
|
|
387
|
+
|
|
388
|
+
elif RE_CKAN_EXTEND.search(content):
|
|
389
|
+
clean_name = tpl.name.rsplit("*", 1)[-1] # pyright: ignore[reportOptionalMemberAccess]
|
|
390
|
+
dirname = tpl.filename[: -len(clean_name) - 1] # pyright: ignore[reportOptionalSubscript, reportUnknownVariableType]
|
|
391
|
+
parent_name = f"*{dirname}*{clean_name}"
|
|
392
|
+
|
|
393
|
+
else:
|
|
394
|
+
return None
|
|
395
|
+
|
|
396
|
+
try:
|
|
397
|
+
parent_tpl = env.get_template(parent_name)
|
|
398
|
+
except TemplateNotFound:
|
|
399
|
+
return parent_name
|
|
400
|
+
|
|
401
|
+
hierarchy.append(parent_tpl.filename) # pyright: ignore[reportArgumentType]
|
|
402
|
+
all_blocks.update(parent_tpl.blocks)
|
|
403
|
+
|
|
404
|
+
return _discover_template_hierarchy(env, parent_tpl, hierarchy, all_blocks)
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
@template.command("component-usage")
|
|
408
|
+
@theme_option
|
|
409
|
+
@click.pass_context
|
|
410
|
+
@click.option("--include-frequency", is_flag=True, help="Include component usage frequency.")
|
|
411
|
+
def template_component_usage(ctx: click.Context, theme: lib.Theme, include_frequency: bool): # noqa: C901
|
|
412
|
+
"""Analyze component usage in templates."""
|
|
413
|
+
env: Environment = ctx.meta["flask_app"].jinja_env
|
|
414
|
+
used: dict[str, set[str]] = defaultdict(set)
|
|
415
|
+
counter: Counter[str] = Counter()
|
|
416
|
+
for name in env.list_templates():
|
|
417
|
+
if not name.endswith(".html"):
|
|
418
|
+
continue
|
|
419
|
+
tpl = env.get_template(name)
|
|
420
|
+
if not tpl.filename:
|
|
421
|
+
continue
|
|
422
|
+
|
|
423
|
+
with open(tpl.filename) as src:
|
|
424
|
+
for component_name in RE_COMPONENT.findall(src.read()):
|
|
425
|
+
used[component_name].add(tpl.filename)
|
|
426
|
+
counter.update([component_name])
|
|
427
|
+
|
|
428
|
+
with _make_ui(ctx, theme) as ui:
|
|
429
|
+
existing = set(ui)
|
|
430
|
+
|
|
431
|
+
unused = existing - set(used)
|
|
432
|
+
unknown = set(used) - existing
|
|
433
|
+
|
|
434
|
+
if unused:
|
|
435
|
+
click.secho(click.style(f"Unused components({len(unused)}): ", fg="yellow") + ", ".join(sorted(unused)))
|
|
436
|
+
else:
|
|
437
|
+
click.secho("No unused components", fg="green")
|
|
438
|
+
|
|
439
|
+
if unknown:
|
|
440
|
+
click.secho(f"Unknown components({len(unknown)}): ", fg="yellow")
|
|
441
|
+
for name in sorted(unknown):
|
|
442
|
+
click.echo(f" {name}:")
|
|
443
|
+
for tpl_name in sorted(used[name]):
|
|
444
|
+
click.echo(f" {tpl_name}")
|
|
445
|
+
|
|
446
|
+
else:
|
|
447
|
+
click.secho("No unknown components", fg="green")
|
|
448
|
+
|
|
449
|
+
if include_frequency:
|
|
450
|
+
click.secho("Component frequency:", fg="yellow")
|
|
451
|
+
for name, count in sorted(counter.items(), key=lambda pair: pair[::-1], reverse=True):
|
|
452
|
+
click.echo(f"{count:> 5}: {name}")
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
@theme.group()
|
|
456
|
+
def endpoint():
|
|
457
|
+
"""Endpoint-level commands."""
|
|
458
|
+
|
|
459
|
+
|
|
460
|
+
@endpoint.command("list")
|
|
461
|
+
@click.pass_context
|
|
462
|
+
def endpoint_list(ctx: click.Context):
|
|
463
|
+
"""List registered Flask endpoints."""
|
|
464
|
+
app = ctx.meta["flask_app"]
|
|
465
|
+
for name in app.view_functions:
|
|
466
|
+
click.echo(name)
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
@endpoint.command("variants")
|
|
470
|
+
@click.pass_context
|
|
471
|
+
@click.argument("endpoints", nargs=-1)
|
|
472
|
+
def endpoint_variants(ctx: click.Context, endpoints: Collection[str]):
|
|
473
|
+
"""List variants of Flask endpoints."""
|
|
474
|
+
app = ctx.meta["flask_app"]
|
|
475
|
+
grouped: dict[str, list[Rule]] = app.url_map._rules_by_endpoint
|
|
476
|
+
if not endpoints:
|
|
477
|
+
endpoints = tuple(grouped)
|
|
478
|
+
|
|
479
|
+
for name in endpoints:
|
|
480
|
+
if name not in grouped:
|
|
481
|
+
tk.error_shout(f"Endpoint {name} does not exist")
|
|
482
|
+
continue
|
|
483
|
+
|
|
484
|
+
click.secho(name, bold=True)
|
|
485
|
+
for variant in grouped[name]:
|
|
486
|
+
click.secho(click.style("Rule: ", fg="yellow") + variant.rule)
|
|
487
|
+
click.secho(click.style("Methods: ", fg="yellow") + ", ".join(variant.methods or []))
|
|
488
|
+
if variant.arguments:
|
|
489
|
+
click.secho(click.style("Arguments: ", fg="yellow") + ", ".join(variant.arguments))
|
|
490
|
+
if variant.defaults:
|
|
491
|
+
click.secho(click.style("Defaults: ", fg="yellow") + repr(variant.defaults))
|
|
492
|
+
click.echo()
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
class RenderInterceptionError(Exception):
|
|
496
|
+
"""Exception raised to intercept Jinja2 template rendering."""
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
def _render_intercept(condition: Callable[[dict[str, Any]], bool] = lambda kwargs: True):
|
|
500
|
+
"""Create a Jinja2 render interceptor that raises an exception when a condition is met."""
|
|
501
|
+
|
|
502
|
+
def interceptor(sender: types.CKANApp, **kwargs: Any):
|
|
503
|
+
if condition(kwargs):
|
|
504
|
+
raise RenderInterceptionError(kwargs)
|
|
505
|
+
|
|
506
|
+
return interceptor
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
def _observe_endpoint(
|
|
510
|
+
endpoint: str,
|
|
511
|
+
params: dict[str, Any],
|
|
512
|
+
app: types.CKANApp,
|
|
513
|
+
user: model.User | None = None,
|
|
514
|
+
method: str = "get",
|
|
515
|
+
) -> dict[str, Any]:
|
|
516
|
+
"""Observe the template and context variables used by a Flask endpoint."""
|
|
517
|
+
try:
|
|
518
|
+
url = tk.url_for(endpoint, **params)
|
|
519
|
+
except BuildError as err:
|
|
520
|
+
tk.error_shout(err)
|
|
521
|
+
raise click.Abort from err
|
|
522
|
+
|
|
523
|
+
with (
|
|
524
|
+
app.test_request_context(url, method=method),
|
|
525
|
+
flask.signals.before_render_template.connected_to(_render_intercept()),
|
|
526
|
+
):
|
|
527
|
+
if user:
|
|
528
|
+
tk.login_user(user)
|
|
529
|
+
|
|
530
|
+
try:
|
|
531
|
+
app.full_dispatch_request()
|
|
532
|
+
|
|
533
|
+
except NotFound as err:
|
|
534
|
+
tk.error_shout(err)
|
|
535
|
+
raise click.Abort from err
|
|
536
|
+
|
|
537
|
+
except RenderInterceptionError as err:
|
|
538
|
+
return err.args[0]
|
|
539
|
+
|
|
540
|
+
log.warning("Endpoint %s did not render any template", endpoint)
|
|
541
|
+
return {"template": Template(""), "context": {}}
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
@endpoint.command("observe", context_settings={"allow_extra_args": True, "ignore_unknown_options": True})
|
|
545
|
+
@click.pass_context
|
|
546
|
+
@click.argument("endpoint")
|
|
547
|
+
@click.option("--auth-user")
|
|
548
|
+
@click.option("--method", default="get")
|
|
549
|
+
@click.option("-v", "--verbose", is_flag=True, help="Show full context variables.")
|
|
550
|
+
@click.option("--ignore", default=("request", "session", "g", "csrf_token", "current_user"), multiple=True)
|
|
551
|
+
def endpoint_observe( # noqa: PLR0913
|
|
552
|
+
ctx: click.Context,
|
|
553
|
+
endpoint: str,
|
|
554
|
+
auth_user: str,
|
|
555
|
+
verbose: bool,
|
|
556
|
+
ignore: tuple[str, ...],
|
|
557
|
+
method: str,
|
|
558
|
+
):
|
|
559
|
+
"""Observe the template and context variables used by a Flask endpoint."""
|
|
560
|
+
app = ctx.meta["flask_app"]
|
|
561
|
+
user = model.User.get(auth_user)
|
|
562
|
+
|
|
563
|
+
with app.app_context():
|
|
564
|
+
try:
|
|
565
|
+
params = dict(arg.split("=") for arg in ctx.args)
|
|
566
|
+
except ValueError as err:
|
|
567
|
+
tk.error_shout("Extra arguments must follow the format: NAME=VALUE")
|
|
568
|
+
raise click.Abort from err
|
|
569
|
+
|
|
570
|
+
data = _observe_endpoint(endpoint, params, app, user=user, method=method)
|
|
571
|
+
|
|
572
|
+
click.secho(f"{click.style('Template: ', fg='yellow')}{data['template'].name}")
|
|
573
|
+
click.secho(
|
|
574
|
+
click.style("Context types(use `-v` to see values): ", fg="yellow")
|
|
575
|
+
+ pprint.pformat({key: type(value) for key, value in data["context"].items() if key not in ignore})
|
|
576
|
+
)
|
|
577
|
+
if verbose:
|
|
578
|
+
click.secho(
|
|
579
|
+
click.style("Context variables: ", fg="yellow")
|
|
580
|
+
+ pprint.pformat({key: value for key, value in data["context"].items() if key not in ignore})
|
|
581
|
+
)
|
|
582
|
+
|
|
583
|
+
|
|
584
|
+
def _dump_encoder(value: Any):
|
|
585
|
+
return f"<INVALID JSON: {value}>"
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
@endpoint.command("dump")
|
|
589
|
+
@click.pass_context
|
|
590
|
+
@click.option("--user")
|
|
591
|
+
@click.option("--ignore", default=("request", "session", "g", "csrf_token", "current_user"), multiple=True)
|
|
592
|
+
@click.option("--endpoints", multiple=True)
|
|
593
|
+
@click.option(
|
|
594
|
+
"--source",
|
|
595
|
+
type=click.File("r"),
|
|
596
|
+
required=True,
|
|
597
|
+
default=os.path.join(os.path.dirname(__file__), "dump_source.json"),
|
|
598
|
+
)
|
|
599
|
+
@click.option("-v", "--verbose", is_flag=True)
|
|
600
|
+
def endpoint_dump( # noqa: PLR0912, PLR0913, C901
|
|
601
|
+
ctx: click.Context,
|
|
602
|
+
user: str | None,
|
|
603
|
+
ignore: tuple[str, ...],
|
|
604
|
+
endpoints: tuple[str, ...],
|
|
605
|
+
verbose: bool,
|
|
606
|
+
source: IO[str],
|
|
607
|
+
):
|
|
608
|
+
"""Dump templates and context variables used by Flask endpoints in JSON format."""
|
|
609
|
+
app = ctx.meta["flask_app"]
|
|
610
|
+
url_map: dict[str, list[Rule]] = app.url_map._rules_by_endpoint
|
|
611
|
+
|
|
612
|
+
auth_obj = model.User.get(user)
|
|
613
|
+
source_data: dict[str, Any] = json.load(source)
|
|
614
|
+
|
|
615
|
+
result: dict[str, Any] = {}
|
|
616
|
+
|
|
617
|
+
with app.app_context():
|
|
618
|
+
for name, rules in url_map.items():
|
|
619
|
+
if endpoints and name not in endpoints:
|
|
620
|
+
continue
|
|
621
|
+
|
|
622
|
+
if any(fnmatch.fnmatch(name, pattern) for pattern in source_data.get("ignore", [])):
|
|
623
|
+
continue
|
|
624
|
+
|
|
625
|
+
for rule in rules:
|
|
626
|
+
if rule.methods and "GET" not in rule.methods:
|
|
627
|
+
continue
|
|
628
|
+
|
|
629
|
+
params = reference.make_params(name, rule.arguments, source_data, rule.defaults or {})
|
|
630
|
+
# TODO: handle different variants
|
|
631
|
+
params.update(source_data.get("args", {}).get("name", {}))
|
|
632
|
+
|
|
633
|
+
try:
|
|
634
|
+
data = _observe_endpoint(name, params, app, user=auth_obj)
|
|
635
|
+
except tk.ObjectNotFound as err:
|
|
636
|
+
tk.error_shout(f"Endpoint {name} with params {params} caused 404")
|
|
637
|
+
raise click.Abort from err
|
|
638
|
+
|
|
639
|
+
result[name] = {
|
|
640
|
+
"template": data["template"].name,
|
|
641
|
+
"context_types": {
|
|
642
|
+
key: type(value).__name__ for key, value in data["context"].items() if key not in ignore
|
|
643
|
+
},
|
|
644
|
+
}
|
|
645
|
+
if verbose:
|
|
646
|
+
result[name]["context_variables"] = {
|
|
647
|
+
key: value for key, value in data["context"].items() if key not in ignore
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
click.echo(json.dumps(result, default=_dump_encoder))
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data": {
|
|
3
|
+
"activity": {"id": "123"},
|
|
4
|
+
"resource": {"id": "ed861eb1-92b4-4edf-a175-ec5e6070d4af"},
|
|
5
|
+
"resource_view": {"id": "1dc4cbba-7028-4ef9-9aa3-3e273ed1ca10"},
|
|
6
|
+
"package": {"id": "46cc4b8f-5f9f-4e2d-a575-aba4d49d5fed", "name": "new-dataset"},
|
|
7
|
+
"group": {"id": "4321c80b-9772-4d27-a1a4-ea838542e930", "name": "group-qkpz-8942-dczs"},
|
|
8
|
+
"organization": {"id": "451df84a-9897-4342-99c3-7f912172fc86", "name": "organization-kobc-3255-qqep"},
|
|
9
|
+
"user": {"id": "sergey", "name": "sergey"}
|
|
10
|
+
},
|
|
11
|
+
"ignore": [
|
|
12
|
+
"static",
|
|
13
|
+
"resource.download",
|
|
14
|
+
"home.redirect_locale",
|
|
15
|
+
"_debug_toolbar.*",
|
|
16
|
+
"debugtoolbar.*",
|
|
17
|
+
"webassets.*",
|
|
18
|
+
"api.*",
|
|
19
|
+
"feeds.*",
|
|
20
|
+
"file.*",
|
|
21
|
+
"*_resource.*",
|
|
22
|
+
"*.member_dump",
|
|
23
|
+
"activity.*_changes_multiple"
|
|
24
|
+
],
|
|
25
|
+
"matchers": [
|
|
26
|
+
["id:activity.resource_history", ["resource", "id"]],
|
|
27
|
+
["id:activity.package_history", ["package", "id"]],
|
|
28
|
+
["id:activity.group_activity", ["group", "id"]],
|
|
29
|
+
["id:activity.group_changes", ["group", "id"]],
|
|
30
|
+
["id:activity.organization_activity", ["organization", "id"]],
|
|
31
|
+
["id:activity.organization_changes", ["organization", "id"]],
|
|
32
|
+
["id:activity.user_activity", ["user", "id"]],
|
|
33
|
+
["id:activity.user_changes", ["user", "id"]],
|
|
34
|
+
["id:activity.package_activity", ["package", "id"]],
|
|
35
|
+
["id:activity.package_changes", ["package", "id"]],
|
|
36
|
+
|
|
37
|
+
["resource_id:*", ["resource", "id"]],
|
|
38
|
+
["user_id:*", ["user", "id"]],
|
|
39
|
+
["view_id:*", ["resource_view", "id"]],
|
|
40
|
+
["activity_id:*", ["activity", "id"]],
|
|
41
|
+
|
|
42
|
+
["id:dataset.*", ["package", "name"]],
|
|
43
|
+
["id:resource.*", ["package", "name"]],
|
|
44
|
+
["id:datastore.*", ["package", "name"]],
|
|
45
|
+
|
|
46
|
+
["id:group.*", ["group", "name"]],
|
|
47
|
+
["id:organization.*", ["organization", "name"]],
|
|
48
|
+
["id:user.*", ["user", "name"]]
|
|
49
|
+
|
|
50
|
+
]
|
|
51
|
+
}
|