<?xml version="1.0"?>
<puzzles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.0pdd.com/puzzles.xsd" date="2020-02-19T05:14:37+00:00" version="0.30.21">
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/160" closed="2017-10-27T04:36:38+00:00">160</issue>
    <ticket>158</ticket>
    <estimate>60</estimate>
    <role>IMP</role>
    <id>158-2c007b76</id>
    <lines>4-4</lines>
    <body>&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; &#x43F;&#x43E;&#x434;&#x43A;&#x43B;&#x44E;&#x447;&#x435;&#x43D;&#x44B;&#x435; bears. &#x412;&#x43E;&#x437;&#x43C;&#x43E;&#x436;&#x43D;&#x43E;, &#x447;&#x442;&#x43E;-&#x442;&#x43E; &#x43F;&#x440;&#x438;&#x434;&#x435;&#x442;&#x441;&#x44F; &#x432;&#x44B;&#x43A;&#x438;&#x43D;&#x443;&#x442;&#x44C;.</body>
    <file>.coafile</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-08-16T16:31:32Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/161" closed="2017-10-27T04:36:39+00:00">161</issue>
    <ticket>158</ticket>
    <estimate>60</estimate>
    <role>IMP</role>
    <id>158-ba8c0a48</id>
    <lines>136-136</lines>
    <body>&#x434;&#x43E;&#x434;&#x435;&#x43B;&#x430;&#x442;&#x44C; &#x438; &#x438;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x43E;&#x432;&#x430;&#x442;&#x44C; &#x44D;&#x442;&#x43E;&#x442; &#x43E;&#x431;&#x440;&#x430;&#x437; &#x432; CI</body>
    <file>docker/docker-compose.yml</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-08-16T16:31:32Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/164" closed="2017-10-27T04:36:40+00:00">164</issue>
    <ticket>158</ticket>
    <estimate>60</estimate>
    <role>IMP</role>
    <id>158-c8f2b4a3</id>
    <lines>4-4</lines>
    <body>&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x439;&#x442;&#x438; pylint</body>
    <file>.coafile</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-08-16T17:33:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/165" closed="2017-10-27T04:36:41+00:00">165</issue>
    <ticket>158</ticket>
    <estimate>60</estimate>
    <role>IMP</role>
    <id>158-8710c947</id>
    <lines>5-5</lines>
    <body>&#x41D;&#x430;&#x441;&#x442;&#x440;&#x43E;&#x438;&#x442;&#x44C; eslint</body>
    <file>.coafile</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-08-16T17:33:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/180" closed="2017-11-13T09:44:33+00:00">180</issue>
    <ticket>172</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>172-cb186333</id>
    <lines>43-43</lines>
    <body>&#x421;&#x43E;&#x437;&#x434;&#x430;&#x451;&#x43C; &#x442;&#x435;&#x441;&#x442; &#x434;&#x43B;&#x44F; &#x442;&#x430;&#x43A;&#x438;&#x445; &#x441;&#x446;&#x435;&#x43D;&#x430;&#x440;&#x438;&#x435;&#x432;:</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-10-04T16:53:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/181">181</issue>
    <ticket>179</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>179-56b07b05</id>
    <lines>30-32</lines>
    <body>&#x420;&#x430;&#x437;&#x434;&#x435;&#x43B;&#x438; &#x442;&#x435;&#x441;&#x442;&#x44B; &#x43A;&#x43B;&#x430;&#x441;&#x441;&#x430; UpdateProducts &#x43D;&#x430; &#x438;&#x43D;&#x442;&#x435;&#x433;&#x440;&#x430;&#x446;&#x438;&#x43E;&#x43D;&#x43D;&#x44B;&#x435; &#x438; &#x43C;&#x43E;&#x434;&#x443;&#x43B;&#x44C;&#x43D;&#x44B;&#x435;. 1. &#x418;&#x441;&#x43F;&#x43E;&#x43B;&#x44C;&#x437;&#x443;&#x439; &#x444;&#x430;&#x439;&#x43B;&#x44B; &#x441; &#x444;&#x438;&#x43A;&#x441;&#x442;&#x443;&#x440;&#x430;&#x43C;&#x438; &#x434;&#x43B;&#x44F; &#x43C;&#x43E;&#x434;&#x443;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;, &#x447;&#x442;&#x43E;&#x431;&#x44B; &#x434;&#x43E;&#x431;&#x438;&#x442;&#x44C;&#x441;&#x44F; &#x441;&#x442;&#x430;&#x431;&#x438;&#x43B;&#x44C;&#x43D;&#x43E;&#x441;&#x442;&#x438;. 2. &#x422;&#x435;&#x441;&#x442;&#x438;&#x440;&#x443;&#x439; &#x441;&#x43A;&#x430;&#x447;&#x438;&#x432;&#x430;&#x43D;&#x438;&#x435; &#x444;&#x430;&#x439;&#x43B;&#x43E;&#x432; &#x441; FTP &#x43E;&#x442;&#x434;&#x435;&#x43B;&#x44C;&#x43D;&#x43E;.</body>
    <file>shopelectro/tests/tests_commands.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-10-04T16:53:11Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/201" closed="2017-10-27T04:36:42+00:00">201</issue>
    <ticket>176</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>176-cb752cc3</id>
    <lines>86-86</lines>
    <body>&#x41E;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x440;&#x430;&#x437;&#x432;&#x435;&#x440;&#x442;&#x44B;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x431;&#x43E;&#x435;&#x432;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x43D;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;</body>
    <file>doc/source/index.rst</file>
    <author>Oleg Zyryanov</author>
    <email>olegg-zz@mail.ru</email>
    <time>2017-10-19T10:10:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/203" closed="2017-10-27T04:36:42+00:00">203</issue>
    <ticket>176</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>176-2e19698a</id>
    <lines>109-109</lines>
    <body>&#x41E;&#x43F;&#x438;&#x441;&#x430;&#x442;&#x44C; &#x43F;&#x440;&#x43E;&#x446;&#x435;&#x441;&#x441; &#x440;&#x430;&#x437;&#x432;&#x435;&#x440;&#x442;&#x44B;&#x432;&#x430;&#x43D;&#x438;&#x44F; &#x431;&#x43E;&#x435;&#x432;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x43D;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x438;, &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; #190</body>
    <file>doc/source/index.rst</file>
    <author>Dima Veselov</author>
    <email>d.a.veselov@yandex.ru</email>
    <time>2017-10-20T13:06:18Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/204" closed="2017-10-27T04:36:43+00:00">204</issue>
    <ticket>176</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>176-ca941ef7</id>
    <lines>29-29</lines>
    <body>&#x420;&#x435;&#x430;&#x43B;&#x438;&#x437;&#x443;&#x439; &#x441;&#x43A;&#x440;&#x438;&#x43F;&#x442; &#x434;&#x43B;&#x44F; &#x432;&#x44B;&#x433;&#x440;&#x443;&#x437;&#x43A;&#x438; &#x431;&#x43E;&#x435;&#x432;&#x44B;&#x445; &#x434;&#x430;&#x43D;&#x43D;&#x44B;&#x445; &#x43D;&#x430; &#x43B;&#x43E;&#x43A;&#x430;&#x43B;&#x44C;, &#x437;&#x430;&#x432;&#x438;&#x441;&#x438;&#x442; &#x43E;&#x442; #190</body>
    <file>docker/Makefile</file>
    <author>Dima Veselov</author>
    <email>d.a.veselov@yandex.ru</email>
    <time>2017-10-20T13:06:18Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/208" closed="2017-10-30T07:58:44+00:00">208</issue>
    <ticket>178</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>178-b9c77ecb</id>
    <lines>1-1</lines>
    <body>&#x41D;&#x430;&#x43F;&#x438;&#x448;&#x438; &#x43A;&#x43E;&#x43D;&#x444;&#x438;&#x433; &#x434;&#x43B;&#x44F; Drone CI</body>
    <file>.drone.yml</file>
    <author>Dima Veselov</author>
    <email>d.a.veselov@yandex.ru</email>
    <time>2017-10-27T04:36:25Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/210" closed="2018-07-21T10:09:20+00:00">210</issue>
        <ticket>208</ticket>
        <estimate>0</estimate>
        <role>IMP</role>
        <id>208-56cdec4f</id>
        <lines>1-1</lines>
        <body>&#x41E;&#x43F;&#x440;&#x435;&#x434;&#x435;&#x43B;&#x438; &#x43E;&#x43F;&#x442;&#x438;&#x43C;&#x430;&#x43B;&#x44C;&#x43D;&#x43E;&#x435; &#x43A;&#x43E;&#x43B;&#x438;&#x447;&#x435;&#x441;&#x442;&#x432;&#x43E; &#x43F;&#x430;&#x440;&#x430;&#x43B;&#x43B;&#x435;&#x43B;&#x44C;&#x43D;&#x44B;&#x445; &#x442;&#x435;&#x441;&#x442;&#x43E;&#x432;</body>
        <file>.drone.yml</file>
        <author>Dima Veselov</author>
        <email>d.a.veselov@yandex.ru</email>
        <time>2017-10-30T07:58:39Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/221" closed="2018-03-06T14:57:43+00:00">221</issue>
    <ticket>195</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>195-08ad816e</id>
    <lines>240-242</lines>
    <body>- refactor Tag.serialize_* methods - they must take argument `List[Tag]` as well as `List[Tuple[TagGroup, Tag]]` - they should be standalone functions, not static methods</body>
    <file>shopelectro/models.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2017-11-13T09:44:28Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/230" closed="2017-12-20T08:27:07+00:00">230</issue>
    <ticket>117</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>117-cb0461b4</id>
    <lines>36-36</lines>
    <body>run backup before deploy</body>
    <file>docker/Makefile</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2017-11-21T07:40:08Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/234">234</issue>
    <ticket>232</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>232-865d5cdb</id>
    <lines>6-9</lines>
    <body>- DB restore error on local env. How to reproduce: - launch this script - restart se-python container</body>
    <file>etc/se-backup-restore.sh</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2017-11-28T10:59:43Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/244" closed="2018-05-23T01:47:14+00:00">244</issue>
    <ticket>SEARCH-TEST</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>SEARCH-TEST-1f4dde45</id>
    <lines>1103-1105</lines>
    <body>Fix a Search.test_search_have_results test. From time to time the test_search_have_results raise an TimeoutException error. You can find error traceback here: https://ci.fidals.com/fidals/shopelectro/152</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2017-12-20T19:33:20Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/250" closed="2018-05-16T14:30:16+00:00">250</issue>
    <ticket>229</ticket>
    <estimate>0</estimate>
    <role>IMP</role>
    <id>229-a984cd8e</id>
    <lines>56-57</lines>
    <body>if Validate `.env` is full Is full means '.env` contains all keynames from `.env.dist`</body>
    <file>docker/docker-compose.yml</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2017-12-26T10:16:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/303">303</issue>
    <ticket>269</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>269-33286093</id>
    <lines>6-6</lines>
    <body>Create docs for build system.</body>
    <file>docker/Makefile</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-05-16T14:30:04Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/446" closed="2018-08-15T17:22:14+00:00">446</issue>
        <ticket>303</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>303-7eff8043</id>
        <lines>25-26</lines>
        <body>Try to rm --no-cache build flags from drone and Makefile. If it's impossible, write code comment.</body>
        <file>CI.md</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-07-25T05:16:30Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/322" closed="2018-06-08T17:01:13+00:00">322</issue>
    <ticket>300</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>300-20aab4d2</id>
    <lines>93-93</lines>
    <body>Resurrect coala.</body>
    <file>docker/docker-compose.yml</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-03T09:59:03Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/341" closed="2018-07-01T13:11:55+00:00">341</issue>
        <ticket>322</ticket>
        <estimate>0</estimate>
        <role>DEV</role>
        <id>322-dbccf9a1</id>
        <lines>93-93</lines>
        <body>Resurrect coala eslint.</body>
        <file>docker/docker-compose.yml</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2018-06-08T17:01:06Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/323" closed="2019-01-16T14:00:00+00:00">323</issue>
    <ticket>300</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>300-0d5387ef</id>
    <lines>90-95</lines>
    <body>Use or create clear selenium.WebElement behaviour system.from Currently we return element from click method. It's not clear design decision. Use or create your own behaviour system. Some pipeline like WebElement or custom one. Maybe page objects pattern will be helpful: http://selenium-python.readthedocs.io/page-objects.html</body>
    <file>shopelectro/tests/helpers.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-03T09:59:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/337" closed="2018-06-18T05:39:03+00:00">337</issue>
    <ticket>142</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>142-764900e7</id>
    <lines>162-164</lines>
    <body>Drop `dj_database_url` dependency. This package helps to take postgres credentials from URI. Now we assemble this creds to URI, then parse them with dj_database_url.</body>
    <file>shopelectro/settings/base.py</file>
    <author>duker</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-08T11:03:40Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/338" closed="2018-06-15T17:51:43+00:00">338</issue>
    <ticket>302</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>302-31c4df63</id>
    <lines>58-58</lines>
    <body>Divide the CatalogPage test class into parts related to the features.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-06-08T16:55:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/339" closed="2018-06-15T17:51:45+00:00">339</issue>
    <ticket>302</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>302-ab23fc9d</id>
    <lines>204-207</lines>
    <body>Implement test case for pagination logic. Products number changes in depend on page number. If step=24 and page number=2, then products quantity is 48. If step=24 and page number=2 and total products quantity is 40, then products quantity is 40.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-06-08T16:55:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/340" closed="2018-07-05T20:35:06+00:00">340</issue>
    <ticket>302</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>302-bdb9bbef</id>
    <lines>5-5</lines>
    <body>Implement pagination buttons for seo purposes.</body>
    <file>templates/catalog/category_products.html</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-06-08T16:55:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/350" closed="2018-06-24T14:33:42+00:00">350</issue>
    <ticket>302</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>302-39fc3702</id>
    <lines>57-57</lines>
    <body>Divide the CatalogPage test class into parts related to the features."""</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-15T17:51:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/351">351</issue>
    <ticket>302</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>302-fbbfb65a</id>
    <lines>202-205</lines>
    <body>Implement test case for pagination logic. Products number changes in depend on page number. If step=24 and page number=2, then products quantity is 48. If step=24 and page number=2 and total products quantity is 40, then products quantity is 40. # Ignore PycodestyleBear (E501)</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-15T15:41:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/352" closed="2018-07-25T08:43:05+00:00">352</issue>
    <ticket>345</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>345-fd64d13a</id>
    <lines>16-17</lines>
    <body>Use ready image for drone npm step. stb2 Image `fidals/se-nodejs:dev` already contains built static and node_modules.</body>
    <file>.drone.yml</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-15T15:41:16Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/448" closed="2018-08-02T09:39:20+00:00">448</issue>
        <ticket>352</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>352-4d0775ee</id>
        <lines>9-12</lines>
        <body>Use ready image for python in drone. stb2 - rm pip-install step - refactor test step - rm/modify docker-build step</body>
        <file>.drone.yml</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-07-25T08:42:59Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/449" closed="2018-07-31T12:03:57+00:00">449</issue>
        <ticket>352</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>352-3a47ae9f</id>
        <lines>33-36</lines>
        <body>Fix volumes collision for new drone `npm install`. `docker-compose run --rm nodejs gulp build` don't create build dir at host folder. When collision is resolved, change old `npm install` for new one.</body>
        <file>.drone.yml</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-07-25T08:42:59Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/457" closed="2018-07-31T12:03:58+00:00">457</issue>
            <ticket>449</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>449-27d8c19e</id>
            <lines>27-28</lines>
            <body>Repair npm container reusing at drone. Second approach looks much more good in my taste.</body>
            <file>docker/dc-volumes.yml</file>
            <author>duker33</author>
            <email>duker33@gmail.com</email>
            <time>2018-07-28T07:52:09Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/fidals/shopelectro/issues/464" closed="2018-08-02T09:39:21+00:00">464</issue>
                <ticket>457</ticket>
                <estimate>15</estimate>
                <role>DEV</role>
                <id>457-1bf03782</id>
                <lines>47-47</lines>
                <body>Return back refarm deps to nodejs service.</body>
                <file>docker/docker-compose.yml</file>
                <author>duker33</author>
                <email>duker33@gmail.com</email>
                <time>2018-07-31T12:03:43Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="true">
            <issue href="https://github.com/fidals/shopelectro/issues/458">458</issue>
            <ticket>449</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>449-eceaf6dd</id>
            <lines>39-42</lines>
            <body>Fix gulpfile's mount error in drone. Then uncomment it, if it's possible. Link on error: https://ci.fidals.com/fidals/shopelectro/468/7</body>
            <file>docker/docker-compose.yml</file>
            <author>duker33</author>
            <email>duker33@gmail.com</email>
            <time>2018-07-28T07:52:09Z</time>
            <children/>
          </puzzle>
          <puzzle alive="true">
            <issue href="https://github.com/fidals/shopelectro/issues/459">459</issue>
            <ticket>449</ticket>
            <estimate>15</estimate>
            <role>DEV</role>
            <id>449-03f4ab2a</id>
            <lines>1086-1086</lines>
            <body>Resurrect `test_autocomplete_by_vendor_code`</body>
            <file>shopelectro/tests/tests_selenium.py</file>
            <author>duker33</author>
            <email>duker33@gmail.com</email>
            <time>2018-07-28T07:52:09Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/373" closed="2019-07-05T09:59:29+00:00">373</issue>
    <ticket>371</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>371-6673a075</id>
    <lines>58-59</lines>
    <body>Move selenium timeout to env var. stb2 To be able to change it from drone without touching code.</body>
    <file>shopelectro/tests/helpers.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-06-19T12:41:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/402" closed="2018-08-15T17:39:54+00:00">402</issue>
    <ticket>302</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>302-891207cd</id>
    <lines>2-3</lines>
    <body>Implement JS for pagination buttons. Hide pagination buttons and reniew a canonical url for current page with the help of JS.</body>
    <file>templates/catalog/category_pagination.html</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-07-05T20:34:56Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/404" closed="2019-04-04T08:50:57+00:00">404</issue>
    <ticket>389</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>389-3679238e</id>
    <lines>70-72</lines>
    <body>Set db name in `test_db` command. stb2 Set name instead of asserting. You also should create/drop it with postgres driver.</body>
    <file>shopelectro/management/commands/test_db.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-07-06T13:54:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/405" closed="2018-07-20T06:40:40+00:00">405</issue>
    <ticket>360</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>360-e326c5ed</id>
    <lines>737-737</lines>
    <body>Resurrect test `test_confirm_order`</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-07-07T12:59:33Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/406" closed="2018-07-20T06:40:42+00:00">406</issue>
    <ticket>360</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>360-cd212ec2</id>
    <lines>1098-1098</lines>
    <body>Resurrect test `test_search_have_results`</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-07-07T12:59:33Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/407" closed="2018-07-23T11:02:09+00:00">407</issue>
    <ticket>360</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>360-25169cf6</id>
    <lines>581-583</lines>
    <body>Remove hardcoded fixture data. Replace `url_from` and `url_to` with urls, generated from db. It'll be much more short and clear.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-07-07T12:59:33Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/408" closed="2018-08-15T16:58:48+00:00">408</issue>
    <ticket>396</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>396-93372351</id>
    <lines>137-140</lines>
    <body>Do drone check `docker-up` service. Let drone check if started service is available. Some code draft: `- if [[ $(curl -Is http://127.0.0.1:8010 | head -1 | grep 200) = '' ]]; then echo 'service '; fi`</body>
    <file>.drone.yml</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-07-07T13:21:17Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/517" closed="2018-08-22T14:22:40+00:00">517</issue>
        <ticket>408</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>408-5cad790a</id>
        <lines>124-128</lines>
        <body>Repair docker-up pipeline Seems we faced with volumes issue: app_1 | python: can't open file 'manage.py': [Errno 2] No such file or directory `ls` shows this: build etc front front_build node_modules</body>
        <file>.drone.yml</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2018-08-15T16:58:38Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/534" closed="2018-09-23T09:16:45+00:00">534</issue>
            <ticket>517</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>517-a10609a6</id>
            <lines>127-131</lines>
            <body>Fill drone-sided app with data. Do migrate and fixtures load. Currently we faced with issues here: https://ci.fidals.com/fidals/shopelectro/721/3 Then try to resurrect health check.</body>
            <file>.drone.yml</file>
            <author>duker33</author>
            <email>duker33@gmail.com</email>
            <time>2018-08-22T14:22:28Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/fidals/shopelectro/issues/587" closed="2018-09-24T20:43:33+00:00">587</issue>
                <ticket>534</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>534-ecbd61f7</id>
                <lines>130-134</lines>
                <body>Fix CI's error for docker-up pipe. Any of below commands returns this: "/bin/sh: syntax error: unterminated quoted string" docker-compose exec -T app-drone nc -z google.com 80 &gt; /dev/null 2&gt;&amp;1 docker-compose exec -T app-drone wget google.com docker-compose exec -T app-drone docker/check-health.sh localhost:8000</body>
                <file>.drone.yml</file>
                <author>Artemiy</author>
                <email>wertins71@gmail.com</email>
                <time>2018-09-23T09:16:39Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/434" closed="2018-07-31T15:58:20+00:00">434</issue>
    <ticket>129</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>129-385e3122</id>
    <lines>22-24</lines>
    <body>Implement tracking of certain actions on front-end for YA and GA. Actions: one-click purchase, changing products count on the order page. See the parent issue for a detail.</body>
    <file>front/js/shared/yandex.es6</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-07-20T13:04:10Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/444" closed="2018-08-02T06:02:09+00:00">444</issue>
    <ticket>273</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>273-9b2b9d3f</id>
    <lines>57-60</lines>
    <body>Render 404, that is recommending products for a deleted product. 1. Find a product with page__is_active=False 2. If the product exists then render 404 with products of its category See the parent issue for details.</body>
    <file>shopelectro/views/catalog.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-07-24T20:40:41Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/470" closed="2018-08-06T00:40:46+00:00">470</issue>
        <ticket>444</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>444-2276c763</id>
        <lines>14-17</lines>
        <body>Create styles for 404 products list. ... and for text under h3. Convert h3 on 404 page to h1 by the way. See ancestor issues for details.</body>
        <file>templates/catalog/product_404.html</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-08-02T06:02:03Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/481" closed="2018-08-17T10:21:21+00:00">481</issue>
            <ticket>470</ticket>
            <estimate>15</estimate>
            <role>DEV</role>
            <id>470-c5d3123c</id>
            <lines>189-190</lines>
            <body>Implement a new method for a Product's manager to get all_products as below.</body>
            <file>shopelectro/views/catalog.py</file>
            <author>Artemiy</author>
            <email>wertins71@gmail.com</email>
            <time>2018-08-06T00:40:39Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/445" closed="2018-08-06T11:19:12+00:00">445</issue>
    <ticket>273</ticket>
    <estimate>0</estimate>
    <role>DEV</role>
    <id>273-4fe77e3c</id>
    <lines>22-25</lines>
    <body>Create a custom manager for the Product model. Currently we have code dupliactions for such filter: Product.objects.filter(page__is_active=True) Filter Product's queryset in initial method.</body>
    <file>shopelectro/models.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-07-24T20:40:41Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/460">460</issue>
    <ticket>452</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>452-ce38bf44</id>
    <lines>100-100</lines>
    <body>Resurrect delete prods test</body>
    <file>shopelectro/tests/tests_commands.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-07-28T13:53:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/485" closed="2018-08-10T13:40:56+00:00">485</issue>
    <ticket>268</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>268-fa7566a2</id>
    <lines>19-19</lines>
    <body>Resurrect js lint.</body>
    <file>.coafile</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-06T09:16:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/489">489</issue>
    <ticket>473</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>473-f28eab07</id>
    <lines>234-234</lines>
    <body>Test order redirect to ya.kassa</body>
    <file>front/js/components/order.es6</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-06T19:09:07Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/496" closed="2018-08-17T16:53:27+00:00">496</issue>
        <ticket>489</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>489-209a5aa0</id>
        <lines>805-806</lines>
        <body>Fix yandex.kassa payment type bug. See details in the test case below.</body>
        <file>shopelectro/tests/tests_selenium.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-08-09T13:04:04Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/493" closed="2018-08-15T06:26:11+00:00">493</issue>
    <ticket>473</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>473-2be6ecfc</id>
    <lines>87-88</lines>
    <body>Enable and test COPY_PHONE and COPY_MAIL. It's ya.metrika aims.</body>
    <file>front/js/shared/yandex.es6</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-08T10:43:46Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/515" closed="2018-11-28T10:13:28+00:00">515</issue>
        <ticket>493</ticket>
        <estimate>15</estimate>
        <role>DEV</role>
        <id>493-6db30696</id>
        <lines>698-698</lines>
        <body>Resurrect test `test_empty_cart`</body>
        <file>shopelectro/tests/tests_selenium.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-08-15T06:26:02Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/494" closed="2019-01-18T05:06:28+00:00">494</issue>
    <ticket>473</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>473-5159ab9c</id>
    <lines>976-976</lines>
    <body>Resurrect test `test_cart_page_open`</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-08T10:43:46Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/696" closed="2019-03-20T18:23:17+00:00">696</issue>
        <ticket>494</ticket>
        <estimate>15</estimate>
        <role>DEV</role>
        <id>494-651ceea1</id>
        <lines>59-60</lines>
        <body>Rm `wait_page_loading` function in favor of analogous method. In favor of `helpers.SeleniumTestCase.wait_page_loaded`</body>
        <file>shopelectro/tests/tests_selenium.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-01-18T05:06:20Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/497" closed="2019-01-20T13:54:40+00:00">497</issue>
    <ticket>473</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>473-9a69e4d0</id>
    <lines>654-654</lines>
    <body>Move `payment_type` to dict or dataclass</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-09T13:04:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/498" closed="2019-01-20T13:54:42+00:00">498</issue>
    <ticket>473</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>473-40a31b12</id>
    <lines>679-679</lines>
    <body>Hide all form processing methods to a separated class.</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-09T13:04:04Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/505" closed="2018-08-17T16:53:58+00:00">505</issue>
    <ticket>388</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>388-901e9efb</id>
    <lines>112-112</lines>
    <body>Move product siblings to slider</body>
    <file>templates/catalog/product.html</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-12T09:37:14Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/529">529</issue>
        <ticket>505</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>505-f0844092</id>
        <lines>121-122</lines>
        <body>Create slider for product's siblings. Use slick.js to create slider.</body>
        <file>templates/catalog/product.html</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2018-08-17T16:53:48Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/506" closed="2018-08-29T10:09:58+00:00">506</issue>
    <ticket>388</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>388-509fa51e</id>
    <lines>122-123</lines>
    <body>Move Product.get_siblings method to refarm-site And reuse it on STB.</body>
    <file>shopelectro/models.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-12T09:37:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/513">513</issue>
    <ticket>510</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>510-1f23f5f0</id>
    <lines>182-182</lines>
    <body>Move `navbar` fixed styles out of `dropup` css class.</body>
    <file>front/less/vendors/bootstrap/dropdowns.less</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-14T05:37:20Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/514">514</issue>
    <ticket>510</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>510-6d408411</id>
    <lines>193-194</lines>
    <body>Rename `@input-border-radius` to `@input-border-radius-base` in v4 It's old task from front guy. So, check if it's actual.</body>
    <file>front/less/vendors/bootstrap/variables.less</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-14T05:37:20Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/518">518</issue>
    <ticket>265</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>265-6e9b5ba6</id>
    <lines>323-325</lines>
    <body>Move content-based settings to db. Content guys should be able to change settings like `MAIN_PAGE_TILE` or `FOOTER_LINKS` from admin panel.</body>
    <file>shopelectro/settings/base.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-15T17:22:21Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/522" closed="2018-08-22T14:36:59+00:00">522</issue>
    <ticket>398</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>398-023fcade</id>
    <lines>190-193</lines>
    <body>Fix doubled tags issue. CategoryTagsPage processes doubled tag in bad way. Doubled tags - tags with the same name, but from different tag groups. See details in test below.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-17T04:35:55Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/535" closed="2018-08-29T05:44:20+00:00">535</issue>
        <ticket>522</ticket>
        <estimate>15</estimate>
        <role>DEV</role>
        <id>522-e4951f35</id>
        <lines>79-80</lines>
        <body>Move method `CatalogTags.create_doubled_tag` to test helpers. And rm code doubling at</body>
        <file>shopelectro/tests/tests_views.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-08-22T14:36:53Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/524" closed="2018-08-22T14:46:07+00:00">524</issue>
    <ticket>504</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>504-30170dc3</id>
    <lines>30-33</lines>
    <body>Send `purchase` event to YA and GA after a success purchase. This will allow us to send order's id. Currently we send the event after submitting of the purchase button with the dummy order's id. See the parent issue for a detail.</body>
    <file>front/js/shared/tracking.es6</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-08-17T15:02:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/525" closed="2019-03-07T15:45:51+00:00">525</issue>
    <ticket>504</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>504-f7f52310</id>
    <lines>35-35</lines>
    <body>Send info about product's brand to YA and GA.</body>
    <file>front/js/shared/tracking.es6</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-08-17T15:02:31Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/537">537</issue>
        <ticket>525</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>525-5d17d280</id>
        <lines>85-90</lines>
        <body>Try to implement Product.objects.get_brands() Currently we use Tag.objects.get_brands(), be it seems is not so convenient as it may be. Details: https://github.com/fidals/shopelectro/pull/531#discussion_r211858857 https://github.com/fidals/shopelectro/pull/531#discussion_r211962280</body>
        <file>shopelectro/tests/tests_models.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2018-08-22T15:55:29Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/526" closed="2018-08-29T17:49:08+00:00">526</issue>
    <ticket>504</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>504-93dfa99a</id>
    <lines>42-42</lines>
    <body>Rename `productId` like format of properties to `data-product-id`.</body>
    <file>templates/catalog/category_products.html</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-08-17T15:02:31Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/547" closed="2018-08-29T05:44:21+00:00">547</issue>
    <ticket>533</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>533-219400c4</id>
    <lines>98-98</lines>
    <body>Move `price.prepare_products` logic to `ProductQuerySet`</body>
    <file>shopelectro/management/commands/price.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-08-25T08:06:12Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/555" closed="2018-09-01T04:28:24+00:00">555</issue>
    <ticket>539</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>539-97439133</id>
    <lines>253-254</lines>
    <body>Create test(s) for numbered pagination. Currently we test only a prev/next page feature.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-08-29T15:30:41Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/556" closed="2018-09-07T23:46:30+00:00">556</issue>
    <ticket>539</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>539-e6f6dde5</id>
    <lines>29-29</lines>
    <body>Move PaginatorLinks to refarm-site.</body>
    <file>shopelectro/views/catalog.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-08-29T15:30:41Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/566" closed="2018-09-17T10:50:26+00:00">566</issue>
    <ticket>550</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>550-87015712</id>
    <lines>83-83</lines>
    <body>Split to ProductImagesContext and ProductBrandContext</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-07T23:46:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/567" closed="2018-09-17T10:50:28+00:00">567</issue>
    <ticket>550</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>550-c08f412e</id>
    <lines>113-117</lines>
    <body>Move context realization to pure to objects composition. Discussed some thoughts with Artemiy via call. Artemiy will do it. For example SortedCategory should consist of separated SortedList and Category classes/objects.</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-07T23:46:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/568" closed="2018-09-17T10:50:30+00:00">568</issue>
    <ticket>550</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>550-6e482196</id>
    <lines>197-198</lines>
    <body>Take `view_type` value from dataclass. Depends on updating to python3.7</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-07T23:46:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/569" closed="2018-09-17T10:50:31+00:00">569</issue>
    <ticket>550</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>550-035b850e</id>
    <lines>242-243</lines>
    <body>Try to rm sorting staff from context.TaggedCategory. Or explain again why it's impossible. Now it's not clear from comment.</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-07T23:46:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/577" closed="2018-09-17T10:50:32+00:00">577</issue>
    <ticket>550</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>550-6f1a456c</id>
    <lines>20-20</lines>
    <body>Move context module to refarm.catalog app</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-16T15:59:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/578" closed="2018-09-17T10:50:34+00:00">578</issue>
    <ticket>550</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>550-f02726e9</id>
    <lines>90-91</lines>
    <body>Move prepare_tile_products func to context Now it's separated function with huge of inconsistent queryset deps.</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-16T15:59:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/579" closed="2018-09-17T10:50:36+00:00">579</issue>
    <ticket>550</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>550-79bb63d1</id>
    <lines>261-262</lines>
    <body>Move `TaggedCategory.get_tags` to property. As in `products` property case.</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-09-16T15:59:35Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/597">597</issue>
    <ticket>463</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>463-6a745ddc</id>
    <lines>2-4</lines>
    <body>Bump celery version to 4.2.2, when it will be released. It would resolve compatibility issue. Do not forget to remove git installation from fidals/se:dev Dockerfile.</body>
    <file>requirements.txt</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-10-03T13:49:33Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/598">598</issue>
    <ticket>589</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>589-d53d6ac5</id>
    <lines>30-30</lines>
    <body>Create test for Order.set_positions</body>
    <file>shopelectro/tests/tests_models.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-10-05T09:57:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/599">599</issue>
    <ticket>589</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>589-56fb945f</id>
    <lines>166-167</lines>
    <body>Create Cart model. See details here: https://github.com/fidals/shopelectro/pull/590#discussion_r222544672</body>
    <file>shopelectro/models.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-10-05T09:57:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/610" closed="2018-11-28T10:13:29+00:00">610</issue>
    <ticket>rf182</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>rf182-d8bdf334</id>
    <lines>604-608</lines>
    <body>Csrf problems with OrderPage test. The fourth test (test_empty_cart here) produces error for csrf token: `Forbidden (CSRF cookie not set.): /shop/cart-add/` Problem does not occur if we start test `test_empty_cart` as single. See and launch `test_csrf_problem` method of this class.</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-10-22T11:40:51Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/611" closed="2018-11-28T10:13:30+00:00">611</issue>
    <ticket>rf182</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>rf182-e133eb1a</id>
    <lines>780-781</lines>
    <body>Resolve problems with csrf for test. For `test_table_is_presented_if_there_is_some_products` too.</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-10-22T11:40:51Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/612" closed="2018-10-23T13:02:18+00:00">612</issue>
    <ticket>rf169</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>rf169-b846c0cd</id>
    <lines>228-236</lines>
    <body>Fix model.Manager bad inheritance Now we have this problem: ``` In [2]: type(ExcludedModelTPage.objects.all()) Out[2]: mptt.querysets.TreeQuerySet ``` But should be `pages.models.PageQuerySet`. Or just rm all excluded staff in favor on direct excluded filter using.</body>
    <file>shopelectro/models.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-10-22T11:40:51Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/662" closed="2018-12-20T17:35:54+00:00">662</issue>
        <ticket>612</ticket>
        <estimate>15</estimate>
        <role>DEV</role>
        <id>612-5a876930</id>
        <lines>231-233</lines>
        <body>Remove ExcludedModelTPage. Now it used only in search view. Use there the explicit `exclude(type=...)` instead.</body>
        <file>shopelectro/models.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-12-05T13:30:59Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/617" closed="2018-12-08T08:40:54+00:00">617</issue>
    <ticket>603</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>603-bf36ae82</id>
    <lines>21-24</lines>
    <body>Resurrect postgres waiting This prefix for app docker service's command does not work: `./docker/wait-for.sh postgres:5432 -- ` Prefix was used in docker-compose-production too.</body>
    <file>docker/docker-compose.yml</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-10-24T15:13:34Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/624" closed="2018-12-08T08:40:55+00:00">624</issue>
    <ticket>603</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>603-db394ed9</id>
    <lines>127-129</lines>
    <body>Resurrect `test-docker-compose` pipe step. See issue details here: https://ci.fidals.com/fidals/shopelectro/1006/13</body>
    <file>.drone.yml</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-11-01T16:30:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/625">625</issue>
    <ticket>603</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>603-27650b29</id>
    <lines>40-41</lines>
    <body>Resurrect update_catalog tests. Now we have problems with files downloading.</body>
    <file>shopelectro/tests/tests_commands.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-11-01T16:30:37Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/647" closed="2018-12-01T18:21:42+00:00">647</issue>
    <ticket>639</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>639-16d96f9d</id>
    <lines>3-4</lines>
    <body>Move CheckedTagsRunner to refarm-site. Reuse it in SE and STB.</body>
    <file>shopelectro/tests/runner.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2018-11-28T19:56:02Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/651" closed="2019-01-29T18:04:58+00:00">651</issue>
    <ticket>648</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>648-61c34e29</id>
    <lines>483-488</lines>
    <body>Resolve db_template render problem. Now the whole app fails trying to render db_template, that contains some cyrillic symbols. For details see the test below and this comment with the traceback: https://github.com/fidals/shopelectro/issues/648#issuecomment-443151390</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-01T10:20:52Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/654">654</issue>
    <ticket>645</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>645-c12aacc6</id>
    <lines>97-98</lines>
    <body>Move test_db's product_id to generator. stb2 Now it uses dirty autoincrement.</body>
    <file>shopelectro/management/commands/test_db.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-03T14:53:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/655" closed="2018-12-19T11:19:26+00:00">655</issue>
    <ticket>645</ticket>
    <estimate>15</estimate>
    <role>DEV</role>
    <id>645-df6002b3</id>
    <lines>319-320</lines>
    <body>Reuse get_category_page method in LoadMore.load_more BaseCatalogTestCase.get_category_page.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-03T14:53:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/666" closed="2019-01-29T13:09:23+00:00">666</issue>
    <ticket>661</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>661-ec781b69</id>
    <lines>39-40</lines>
    <body>Refactor price command. Create Price class with it's own price processing.</body>
    <file>shopelectro/management/commands/price.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-11T08:12:20Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/714">714</issue>
        <ticket>666</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>666-c099ca68</id>
        <lines>490-490</lines>
        <body>Move UTM_PRICE_MAP to an iterable Enum</body>
        <file>shopelectro/settings/base.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-01-29T13:09:10Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/715" closed="2019-02-06T14:17:50+00:00">715</issue>
        <ticket>666</ticket>
        <estimate>120</estimate>
        <role>DEV</role>
        <id>666-23eb8556</id>
        <lines>93-99</lines>
        <body>Split price.Context.context to smaller classes Don't forget it: - Move class `PriceFilter` to `Product` - Merge to `IGNORED` constants - Rm constants from Tree class - Inject logs object here instead of returning operation status - Maybe split this file to blocks</body>
        <file>shopelectro/management/commands/price.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-01-29T13:09:10Z</time>
        <children>
          <puzzle alive="true">
            <issue href="https://github.com/fidals/shopelectro/issues/721">721</issue>
            <ticket>715</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>715-4667b26c</id>
            <lines>113-114</lines>
            <body>Try to rm ancestors filter in YM price filter. Exclude only categories with no pictures, without their ancestors.</body>
            <file>shopelectro/management/commands/price.py</file>
            <author>duker33</author>
            <email>duker33@gmail.com</email>
            <time>2019-02-06T14:17:38Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/667" closed="2018-12-20T17:35:55+00:00">667</issue>
    <ticket>661</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>661-57422015</id>
    <lines>176-177</lines>
    <body>Refactor huge set of getters in prices test. Move every `get_price_...` method to some `PriceNode` class.</body>
    <file>shopelectro/tests/tests_commands.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-11T08:12:20Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/679" closed="2019-01-18T09:58:56+00:00">679</issue>
        <ticket>667</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>667-9b0b5dfc</id>
        <lines>212-217</lines>
        <body>Create `Prices` class for test_commands. It should keep prices without need of recreating it every time price is needed. For example for price file removing we need only file file_path, but should instantiate the whole price object.</body>
        <file>shopelectro/tests/tests_commands.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2018-12-20T17:35:44Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/668">668</issue>
    <ticket>665</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>665-cd32d089</id>
    <lines>4-6</lines>
    <body>Resurrect InvalidLinkBear. Now it failed on CI. https://ci.fidals.com/fidals/shopelectro/1108/11</body>
    <file>.coafile</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-11T09:42:29Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/669" closed="2018-12-20T17:35:56+00:00">669</issue>
    <ticket>656</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>656-e0480813</id>
    <lines>54-55</lines>
    <body>Fix pages consistency in update_db command. See test below for details.</body>
    <file>shopelectro/tests/tests_commands.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2018-12-11T09:42:29Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/690" closed="2019-01-20T13:54:43+00:00">690</issue>
    <ticket>682</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>682-3cd95aee</id>
    <lines>64-66</lines>
    <body>Implement check_purchase. Handle errors. Report failed attempts. Schedule it in the celery beat.</body>
    <file>shopelectro/tasks.py</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-16T13:59:46Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/704" closed="2019-01-28T13:29:31+00:00">704</issue>
        <ticket>690</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>690-44aa8d80</id>
        <lines>64-65</lines>
        <body>Handle errors in check_purchase. Report failed attempts. Schedule it in the celery beat.</body>
        <file>shopelectro/tasks.py</file>
        <author>@artemiy312</author>
        <email>wertins71@gmail.com</email>
        <time>2019-01-20T13:54:28Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/712" closed="2019-02-11T09:08:11+00:00">712</issue>
        <ticket>690</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>690-7e329879</id>
        <lines>66-66</lines>
        <body>Schedule check_purchase in the celery beat.</body>
        <file>shopelectro/tasks.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-01-28T13:29:24Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/691">691</issue>
    <ticket>682</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>682-c5541afd</id>
    <lines>5-5</lines>
    <body>Implement and reuse shopelectro.selenium.OrderPage for selenium tests.</body>
    <file>shopelectro/selenium/pages/order.py</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-16T13:59:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/692">692</issue>
    <ticket>682</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>682-999a09ed</id>
    <lines>8-8</lines>
    <body>Implement and reuse shopelectro.selenium.CategoryPage for selenium tests.</body>
    <file>shopelectro/selenium/pages/category.py</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-16T13:59:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/698" closed="2019-01-20T13:20:02+00:00">698</issue>
    <ticket>683</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>683-0642f414</id>
    <lines>7-7</lines>
    <body>Remove the ProductImages in favor of catalog.newcontext.ProductImages</body>
    <file>shopelectro/context.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-18T13:50:01Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/699" closed="2019-02-14T20:45:04+00:00">699</issue>
    <ticket>683</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>683-588407ed</id>
    <lines>35-37</lines>
    <body>Create context class(es) for catalog page representation. Created class(es) will compose the context classes for catalog views. Remove get_catalog_context in favor of created class(es).</body>
    <file>shopelectro/views/catalog.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-18T13:50:01Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/700" closed="2019-03-16T08:09:27+00:00">700</issue>
    <ticket>683</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>683-2a584c01</id>
    <lines>47-48</lines>
    <body>Remove *Tags and *Products suffixes from catalog.newcontext classes. Rename Checked404Tags to ExistingOr404.</body>
    <file>shopelectro/views/catalog.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-18T13:50:01Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/701" closed="2019-01-22T11:55:29+00:00">701</issue>
    <ticket>683</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>683-b33e7e30</id>
    <lines>76-78</lines>
    <body>Create context class(es). Remove optional_context from get_catalog_context and patching of page.get_template_render_context in favor of created class(es).</body>
    <file>shopelectro/views/catalog.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-01-18T13:50:01Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/722">722</issue>
    <ticket>718</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>718-0ce8b03b</id>
    <lines>1028-1028</lines>
    <body>Resurrect `test_cart_page_open` test.</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-02-06T14:17:48Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/731">731</issue>
    <ticket>723</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>723-4318bda6</id>
    <lines>61-62</lines>
    <body>Create separated request_data.Pagination class. And may be remove `LoadMoreRequestData` class.</body>
    <file>shopelectro/request_data.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-02-14T20:44:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/732">732</issue>
    <ticket>255</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>255-32cc46dd</id>
    <lines>12-14</lines>
    <body>Improve `SortingOption` interface. Now it's located in context and this is wrong. Maybe refactor `CATEGORY_SORTING_OPTIONS`.</body>
    <file>shopelectro/context.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-02-14T20:44:54Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/749" closed="2019-02-23T18:42:26+00:00">749</issue>
    <ticket>283</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>283-ce00cf9b</id>
    <lines>499-499</lines>
    <body>Fix test_tags_pagination_has_canonical_links</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-02-23T02:58:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/761" closed="2019-03-26T03:11:34+00:00">761</issue>
    <ticket>759</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>759-bc6cfc4f</id>
    <lines>18-18</lines>
    <body>Move LoadedGATracker to the refarm.</body>
    <file>front/js/shared/tracking.es6</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-03-07T15:45:33Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/795">795</issue>
        <ticket>761</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>761-8d03e66d</id>
        <lines>53-55</lines>
        <body>Fix stale cache using for nodejs image. The image always uses stale cache for refarm-site's front. See this build log: https://ci.fidals.com/fidals/shopelectro/1438/6</body>
        <file>.drone.yml</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-03-26T03:11:27Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/762" closed="2020-02-19T05:14:37+00:00">762</issue>
    <ticket>759</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>759-e8d84e6c</id>
    <lines>63-64</lines>
    <body>Create tests for eCommerce tracking. Test all events, these perform tracking operations.</body>
    <file>front/js/shared/tracking.es6</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-03-07T15:45:33Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/771" closed="2019-03-20T18:23:17+00:00">771</issue>
        <ticket>762</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>762-c8b88dbe</id>
        <lines>35-36</lines>
        <body>Match an order with a transaction of Google eCommerce analytics. The transaction must contain correct order data and related products.</body>
        <file>shopelectro/tests/tests_js_analytics.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-03-14T02:57:14Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/785" closed="2019-03-31T08:28:10+00:00">785</issue>
            <ticket>771</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>771-dff73c4b</id>
            <lines>62-62</lines>
            <body>Test Yandex eCommerce</body>
            <file>shopelectro/tests/tests_js_analytics.py</file>
            <author>Artemiy</author>
            <email>wertins71@gmail.com</email>
            <time>2019-03-20T18:23:03Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/fidals/shopelectro/issues/799" closed="2019-04-08T20:39:26+00:00">799</issue>
                <ticket>785</ticket>
                <estimate>60</estimate>
                <role>DEV</role>
                <id>785-951da4fc</id>
                <lines>85-90</lines>
                <body>Test Yandex ecommerce goals. Here are goals left to test: - onCartClear from cart - onProductAdd from catalog, product and order pages - onProductRemove from cart and order page - onProductDetail from product page</body>
                <file>shopelectro/tests/tests_js_analytics.py</file>
                <author>Artemiy</author>
                <email>wertins71@gmail.com</email>
                <time>2019-03-31T08:28:02Z</time>
                <children>
                  <puzzle alive="true">
                    <issue href="https://github.com/fidals/shopelectro/issues/807">807</issue>
                    <ticket>799</ticket>
                    <estimate>120</estimate>
                    <role>DEV</role>
                    <id>799-4de81e94</id>
                    <lines>4-4</lines>
                    <body>Reuse shopelectro.selenium.elements.cart.Cart for selenium tests.</body>
                    <file>shopelectro/selenium/elements/cart.py</file>
                    <author>Artemiy</author>
                    <email>wertins71@gmail.com</email>
                    <time>2019-04-08T20:39:15Z</time>
                    <children/>
                  </puzzle>
                  <puzzle alive="false">
                    <issue href="https://github.com/fidals/shopelectro/issues/808" closed="2019-06-30T18:33:00+00:00">808</issue>
                    <ticket>799</ticket>
                    <estimate>120</estimate>
                    <role>DEV</role>
                    <id>799-d8297b13</id>
                    <lines>91-95</lines>
                    <body>Test Yandex ecommerce goals. Here are goals left to test: - onCartClear from cart - onProductAdd from catalog, product and order pages - onProductRemove from cart and order page</body>
                    <file>shopelectro/tests/tests_js_analytics.py</file>
                    <author>Artemiy</author>
                    <email>wertins71@gmail.com</email>
                    <time>2019-04-08T20:39:15Z</time>
                    <children>
                      <puzzle alive="false">
                        <issue href="https://github.com/fidals/shopelectro/issues/920" closed="2019-07-05T09:59:30+00:00">920</issue>
                        <ticket>808</ticket>
                        <estimate>120</estimate>
                        <role>DEV</role>
                        <id>808-b0743766</id>
                        <lines>90-93</lines>
                        <body>Test Yandex ecommerce goals. Here are goals left to test: - onProductAdd from catalog and order pages - onProductRemove from order page</body>
                        <file>shopelectro/tests/tests_js_analytics.py</file>
                        <author>Artemiy</author>
                        <email>wertins71@gmail.com</email>
                        <time>2019-06-30T18:32:47Z</time>
                        <children>
                          <puzzle alive="false">
                            <issue href="https://github.com/fidals/shopelectro/issues/938" closed="2019-07-12T19:00:32+00:00">938</issue>
                            <ticket>920</ticket>
                            <estimate>15</estimate>
                            <role>DEV</role>
                            <id>920-cb7dcfc8</id>
                            <lines>28-29</lines>
                            <body>Document the Cart.wait_changes. Cover corner cases with TimeoutException.</body>
                            <file>shopelectro/selenium/elements/cart.py</file>
                            <author>Artemiy</author>
                            <email>wertins71@gmail.com</email>
                            <time>2019-07-05T09:59:20Z</time>
                            <children/>
                          </puzzle>
                        </children>
                      </puzzle>
                      <puzzle alive="false">
                        <issue href="https://github.com/fidals/shopelectro/issues/921" closed="2019-07-05T09:59:32+00:00">921</issue>
                        <ticket>808</ticket>
                        <estimate>60</estimate>
                        <role>DEV</role>
                        <id>808-a392ddf6</id>
                        <lines>22-23</lines>
                        <body>Create a context manager for cart-related tests. It should wait position changes after completed inner block.</body>
                        <file>shopelectro/selenium/pages/product.py</file>
                        <author>Artemiy</author>
                        <email>wertins71@gmail.com</email>
                        <time>2019-06-30T18:32:47Z</time>
                        <children/>
                      </puzzle>
                      <puzzle alive="false">
                        <issue href="https://github.com/fidals/shopelectro/issues/929" closed="2019-07-05T11:22:44+00:00">929</issue>
                        <ticket>808</ticket>
                        <estimate>30</estimate>
                        <role>DEV</role>
                        <id>808-f72e84e8</id>
                        <lines>101-102</lines>
                        <body>Create Goals class for tests. Remove these utility functions in favor of the class.</body>
                        <file>shopelectro/tests/tests_js_analytics.py</file>
                        <author>Artemiy</author>
                        <email>wertins71@gmail.com</email>
                        <time>2019-07-02T16:26:42Z</time>
                        <children>
                          <puzzle alive="true">
                            <issue href="https://github.com/fidals/shopelectro/issues/940">940</issue>
                            <ticket>929</ticket>
                            <estimate>30</estimate>
                            <role>DEV</role>
                            <id>929-26614c74</id>
                            <lines>5-5</lines>
                            <body>Implement GoogleEcommerceGoals and YandexMetrikaGoals and use them in tests.</body>
                            <file>shopelectro/selenium/analytics_goals.py</file>
                            <author>Artemiy</author>
                            <email>wertins71@gmail.com</email>
                            <time>2019-07-05T11:22:34Z</time>
                            <children/>
                          </puzzle>
                        </children>
                      </puzzle>
                      <puzzle alive="true">
                        <issue href="https://github.com/fidals/shopelectro/issues/930">930</issue>
                        <ticket>808</ticket>
                        <estimate>15</estimate>
                        <role>DEV</role>
                        <id>808-1338f575</id>
                        <lines>860-861</lines>
                        <body>Resurrect test_accordion_minimized. The test is unstable. https://ci.fidals.com/fidals/shopelectro/1617/10</body>
                        <file>shopelectro/tests/tests_selenium.py</file>
                        <author>Artemiy</author>
                        <email>wertins71@gmail.com</email>
                        <time>2019-07-02T16:26:42Z</time>
                        <children/>
                      </puzzle>
                    </children>
                  </puzzle>
                </children>
              </puzzle>
            </children>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/772" closed="2019-03-20T18:23:18+00:00">772</issue>
        <ticket>762</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>762-afab9051</id>
        <lines>885-885</lines>
        <body>Move Ya.Metrica tests to tests_js_counters.py</body>
        <file>shopelectro/tests/tests_selenium.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-03-14T02:57:14Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/775">775</issue>
    <ticket>683</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>683-97118339</id>
    <lines>65-66</lines>
    <body>Remove *Tags and *Products suffixes from catalog.context classes. Rename Checked404Tags to ExistingOr404.</body>
    <file>shopelectro/context.py</file>
    <author>@duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-03-16T08:09:17Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/780" closed="2019-03-26T03:11:35+00:00">780</issue>
    <ticket>776</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>776-b176eb04</id>
    <lines>785-785</lines>
    <body>Create reverse_custom_page function.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-03-19T15:20:39Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/788" closed="2019-04-08T20:39:27+00:00">788</issue>
    <ticket>783</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>783-afda78ab</id>
    <lines>23-24</lines>
    <body>Create Cart class for tests. The class should replace batch of methods from this file.</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-03-24T03:39:32Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/789" closed="2019-03-29T18:05:35+00:00">789</issue>
    <ticket>783</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>783-dbb67fb4</id>
    <lines>395-397</lines>
    <body>Load the cart lazily. It will solve the issue with invalid cart data and bring ability to create cache shared among users.</body>
    <file>shopelectro/tests/tests_selenium.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-03-24T03:39:32Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/793">793</issue>
        <ticket>789</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>789-ab1e4d1d</id>
        <lines>37-37</lines>
        <body>Make cart routes REST style instead of RPC.</body>
        <file>shopelectro/views/ecommerce.py</file>
        <author>@artemiy312</author>
        <email>wertins71@gmail.com</email>
        <time>2019-03-25T22:33:08Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/794" closed="2019-03-29T18:05:36+00:00">794</issue>
        <ticket>789</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>789-a1cd638b</id>
        <lines>11-12</lines>
        <body>Load cart lazily. See the parent task for details.</body>
        <file>front/js/components/headerCart.es6</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-03-25T22:33:08Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/809">809</issue>
    <ticket>682</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>682-bb791ac2</id>
    <lines>6-6</lines>
    <body>Implement and reuse shopelectro.selenium.Product for selenium tests.</body>
    <file>shopelectro/selenium/pages/product.py</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-04-08T20:39:15Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/812" closed="2019-04-14T22:52:29+00:00">812</issue>
    <ticket>RF320</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>RF320-1363a653</id>
    <lines>51-53</lines>
    <body>Resurrect shopelectro.tests.tests_js_analytics.YandexEcommerce#test_purchase It was failed after this PR: https://github.com/fidals/refarm-site/pull/321</body>
    <file>shopelectro/tests/tests_js_analytics.py</file>
    <author>@duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-04-12T14:14:09Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/832" closed="2019-05-02T12:07:12+00:00">832</issue>
    <ticket>826</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>826-e15bd036</id>
    <lines>138-140</lines>
    <body>Fix mobile selenium driver. STB2 The test shows, that the driver is broken. Probably we should properly setup desired capabilities of the driver.</body>
    <file>shopelectro/tests/tests_selenium_mobile.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-04-30T10:50:06Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/835" closed="2019-05-17T15:41:55+00:00">835</issue>
    <ticket>822</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>822-138e7a1d</id>
    <lines>146-149</lines>
    <body>Resurrect admin price filter. It's failing after fix changing `PriceRange.price_lookup` value. Fix was here: https://github.com/fidals/refarm-site/pull/325 Just disable this filter for STB. It's not relevant there</body>
    <file>shopelectro/tests/tests_selenium_admin.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-04-30T18:43:03Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/851">851</issue>
        <ticket>835</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>835-d813aa49</id>
        <lines>62-64</lines>
        <body>Fix admin filter tests Tests rely upon order of html markup. It is fragile and always breaks after admin filter modifications.</body>
        <file>shopelectro/tests/tests_selenium_admin.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-05-17T15:41:43Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/836" closed="2019-06-15T10:44:11+00:00">836</issue>
    <ticket>822</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>822-663573d7</id>
    <lines>27-30</lines>
    <body>Create tests for the catalog matrix. This cases are would be good to test: - Matrix sorting by page position - Block items limiting</body>
    <file>shopelectro/views/catalog.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-04-30T18:43:03Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/837" closed="2019-06-17T15:54:31+00:00">837</issue>
    <ticket>822</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>822-d2ff7292</id>
    <lines>43-43</lines>
    <body>Doc category matrix blocks.</body>
    <file>shopelectro/views/catalog.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-04-30T18:43:03Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/879">879</issue>
        <ticket>837</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>837-249f0a95</id>
        <lines>941-942</lines>
        <body>Resurrect `test_autocomplete_item_link` https://ci.fidals.com/fidals/shopelectro/1554/10</body>
        <file>shopelectro/tests/tests_selenium.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-06-17T15:54:18Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/880" closed="2019-07-04T09:49:29+00:00">880</issue>
        <ticket>837</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>837-edb24a44</id>
        <lines>45-47</lines>
        <body>Improve categories matrix arch. Now it's untyped data structure with common comments. Turn it to the set of object with clear names.</body>
        <file>shopelectro/views/catalog.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-06-17T15:54:18Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/924" closed="2019-07-02T09:25:06+00:00">924</issue>
            <ticket>880</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>880-520a1edd</id>
            <lines>74-75</lines>
            <body>Add it to the admin panel, use it in the matrix view. Get the block_size data from the matrix view and fill out the model from admin.</body>
            <file>shopelectro/models.py</file>
            <author>Artemiy Rodionov</author>
            <email>wertins71@gmail.com</email>
            <time>2019-07-02T09:16:01Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/934" closed="2019-07-06T20:00:55+00:00">934</issue>
            <ticket>880</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>880-c9d8b5dc</id>
            <lines>74-75</lines>
            <body>Add MatrixBlock to the admin panel. Inline it on Category Edit page.</body>
            <file>shopelectro/models.py</file>
            <author>Artemiy</author>
            <email>wertins71@gmail.com</email>
            <time>2019-07-04T09:49:19Z</time>
            <children>
              <puzzle alive="false">
                <issue href="https://github.com/fidals/shopelectro/issues/942" closed="2019-09-24T07:39:01+00:00">942</issue>
                <ticket>934</ticket>
                <estimate>15</estimate>
                <role>DEV</role>
                <id>934-a8735256</id>
                <lines>101-102</lines>
                <body>Wait user approval for `make i18n` See the parent issue for details</body>
                <file>docker/Makefile</file>
                <author>@artemiy312</author>
                <email>wertins71@gmail.com</email>
                <time>2019-07-06T20:00:45Z</time>
                <children/>
              </puzzle>
            </children>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/935" closed="2019-07-06T20:00:56+00:00">935</issue>
            <ticket>880</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>880-51a8e904</id>
            <lines>77-78</lines>
            <body>Use MatrixBlock in the matrix view. Get the block_size data from the matrix view and fill out the model.</body>
            <file>shopelectro/models.py</file>
            <author>Artemiy</author>
            <email>wertins71@gmail.com</email>
            <time>2019-07-04T09:49:19Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/841" closed="2019-05-17T02:06:20+00:00">841</issue>
    <ticket>816</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>816-b6729641</id>
    <lines>85-85</lines>
    <body>Test privacy policy agreement.{% endcomment %}</body>
    <file>templates/ecommerce/order/table_form.html</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-05-02T14:30:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/842">842</issue>
    <ticket>816</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>816-0b7aa454</id>
    <lines>87-87</lines>
    <body>Make the checkbox to the same color as its text.{% endcomment %}</body>
    <file>templates/ecommerce/order/table_form.html</file>
    <author>@artemiy312</author>
    <email>wertins71@gmail.com</email>
    <time>2019-05-02T14:30:38Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/849" closed="2019-09-24T09:45:28+00:00">849</issue>
    <ticket>844</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>844-220eaf83</id>
    <lines>3-3</lines>
    <body>Add a html validator to CI pipeline{% endcomment %}</body>
    <file>templates/pages/breadcrumbs_with_siblings.html</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-05-17T02:06:23Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/858" closed="2019-05-31T10:59:22+00:00">858</issue>
    <ticket>827</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>827-e73e1926</id>
    <lines>531-533</lines>
    <body>Fix tests for TableEditor. They depend on dom element positions, which leads to broken tests after adding new fields to a model.</body>
    <file>shopelectro/tests/tests_selenium_admin.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-05-30T09:08:00Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/863" closed="2019-07-06T20:00:57+00:00">863</issue>
        <ticket>858</ticket>
        <estimate>15</estimate>
        <role>DEV</role>
        <id>858-5815cddb</id>
        <lines>4-4</lines>
        <body>Localize Product.in_pack field</body>
        <file>front/js/components/admin.es6</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-05-31T10:59:04Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/859" closed="2019-05-31T13:21:49+00:00">859</issue>
    <ticket>827</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>827-907829af</id>
    <lines>17-17</lines>
    <body>Update Product.in_pack and render prices properly.</body>
    <file>shopelectro/management/commands/_update_catalog/update_pack.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-05-30T09:08:00Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/864" closed="2019-06-28T00:11:48+00:00">864</issue>
        <ticket>859</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>859-ae8cb052</id>
        <lines>20-20</lines>
        <body>Implement update_pack and render prices properly.</body>
        <file>shopelectro/management/commands/_update_catalog/update_pack.py</file>
        <author>@artemiy312</author>
        <email>wertins71@gmail.com</email>
        <time>2019-05-31T13:21:35Z</time>
        <children>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/912" closed="2019-06-28T01:40:45+00:00">912</issue>
            <ticket>864</ticket>
            <estimate>60</estimate>
            <role>DEV</role>
            <id>864-67a30cf0</id>
            <lines>25-26</lines>
            <body>Raise errors in find_pack_group. Remove Optional type as returning value and test find_pack_group.</body>
            <file>shopelectro/management/commands/_update_catalog/update_pack.py</file>
            <author>Artemiy</author>
            <email>wertins71@gmail.com</email>
            <time>2019-06-28T00:11:32Z</time>
            <children/>
          </puzzle>
          <puzzle alive="false">
            <issue href="https://github.com/fidals/shopelectro/issues/913" closed="2019-06-28T01:40:46+00:00">913</issue>
            <ticket>864</ticket>
            <estimate>30</estimate>
            <role>DEV</role>
            <id>864-ed26e544</id>
            <lines>48-48</lines>
            <body>Test update_pack command.</body>
            <file>shopelectro/tests/tests_commands.py</file>
            <author>Artemiy</author>
            <email>wertins71@gmail.com</email>
            <time>2019-06-28T00:11:32Z</time>
            <children/>
          </puzzle>
        </children>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/865" closed="2019-06-28T01:40:47+00:00">865</issue>
        <ticket>859</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>859-006a8835</id>
        <lines>47-48</lines>
        <body>Create fixture products with in_pack = 2 Resuse the fixture in related tests.</body>
        <file>shopelectro/tests/tests_commands.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-05-31T13:21:35Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/875">875</issue>
    <ticket>850</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>850-6f930677</id>
    <lines>69-70</lines>
    <body>Fix Mobile.search tests group. search_input property doesn't input content.</body>
    <file>shopelectro/tests/tests_selenium_mobile.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-06-11T18:03:36Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/881" closed="2019-06-28T00:11:49+00:00">881</issue>
    <ticket>843</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>843-3cc08e76</id>
    <lines>161-162</lines>
    <body>Fix mobile cart. Now it's test fails</body>
    <file>shopelectro/tests/tests_selenium_mobile.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-06-17T15:54:18Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/899">899</issue>
    <ticket>890</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>890-25fb560d</id>
    <lines>17-18</lines>
    <body>Remove date_published outside of base template. Pages whose are needed at date_pubslished should use it explicitly.</body>
    <file>templates/pages/page.html</file>
    <author>@duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-06-25T08:51:28Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/903">903</issue>
    <ticket>891</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>891-9180fe3b</id>
    <lines>449-449</lines>
    <body>Markup mobile tile-about and text for main page.</body>
    <file>front/less/pages/main.less</file>
    <author>@duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-06-26T08:21:46Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/931" closed="2019-07-05T09:16:54+00:00">931</issue>
        <ticket>903</ticket>
        <estimate>15</estimate>
        <role>DEV</role>
        <id>903-d9199ace</id>
        <lines>11-11</lines>
        <body>Move SCREENS const to configs.es6 file.</body>
        <file>front/js/components/main.es6</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-07-04T09:30:12Z</time>
        <children/>
      </puzzle>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/932" closed="2019-07-05T09:16:55+00:00">932</issue>
        <ticket>903</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>903-ee71e4aa</id>
        <lines>53-54</lines>
        <body>Toggle slider on window resize. Now slider is toggled based only on initial window size.</body>
        <file>front/js/components/main.es6</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-07-04T09:30:12Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/914" closed="2019-06-30T08:03:45+00:00">914</issue>
    <ticket>910</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>910-f547fee5</id>
    <lines>85-85</lines>
    <body>Explore and doc what is vendor_code.</body>
    <file>shopelectro/models.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-06-28T09:15:16Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/939" closed="2019-07-12T19:00:33+00:00">939</issue>
    <ticket>820</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>820-7b702e9a</id>
    <lines>90-91</lines>
    <body>Test Yandex ecommerce add and remove goals from the order page. Get rid of code duplications.</body>
    <file>shopelectro/tests/tests_js_analytics.py</file>
    <author>Artemiy</author>
    <email>wertins71@gmail.com</email>
    <time>2019-07-05T09:59:20Z</time>
    <children>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/944">944</issue>
        <ticket>939</ticket>
        <estimate>120</estimate>
        <role>DEV</role>
        <id>939-a904eb4b</id>
        <lines>90-91</lines>
        <body>Test Yandex ecommerce increase/decrease/set goals from the order page. Create assertion for cart clear goal.</body>
        <file>shopelectro/tests/tests_js_analytics.py</file>
        <author>Artemiy</author>
        <email>wertins71@gmail.com</email>
        <time>2019-07-12T19:00:22Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/956">956</issue>
    <ticket>952</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>952-c8a775a9</id>
    <lines>138-141</lines>
    <body>Refactor input counters Position absolute is bad decision. It leads to non-centered input counter. See the screen at one of the #952 comments for details.</body>
    <file>front/less/common/inputs.less</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-09-15T12:16:55Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/961" closed="2019-09-24T09:45:29+00:00">961</issue>
    <ticket>887</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>887-c7e6a145</id>
    <lines>546-546</lines>
    <body>Repair category siblings mech.</body>
    <file>shopelectro/tests/tests_views.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-09-18T06:54:05Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/962">962</issue>
    <ticket>894</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>894-8ab56e9d</id>
    <lines>19-21</lines>
    <body>Fix UI issues to update font-awesome. See failed selenium tests set for details: https://ci.fidals.com/fidals/shopelectro/1674/10</body>
    <file>front/less/vendors/font-awesome.less</file>
    <author>@duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-09-18T09:03:46Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/974" closed="2019-10-01T07:26:01+00:00">974</issue>
    <ticket>971</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>971-f15c5594</id>
    <lines>157-157</lines>
    <body>Sort top menu subcategories by name #}</body>
    <file>templates/layout/header.html</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-09-28T06:55:25Z</time>
    <children>
      <puzzle alive="false">
        <issue href="https://github.com/fidals/shopelectro/issues/980" closed="2019-10-01T00:47:23+00:00">980</issue>
        <ticket>974</ticket>
        <estimate>60</estimate>
        <role>DEV</role>
        <id>974-ceadb5de</id>
        <lines>20-21</lines>
        <body>Reuse the logic.header.menu_qs menu menu query. And test HEADER_LINKS "exclude/add" settings option.</body>
        <file>shopelectro/templatetags/se_extras.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-09-30T09:16:19Z</time>
        <children/>
      </puzzle>
      <puzzle alive="true">
        <issue href="https://github.com/fidals/shopelectro/issues/981">981</issue>
        <ticket>974</ticket>
        <estimate>30</estimate>
        <role>DEV</role>
        <id>974-1680c064</id>
        <lines>15-17</lines>
        <body>Optimize the header menu query. Fetch catalog page for the header menu at the same query. root category pages.</body>
        <file>shopelectro/logic/header.py</file>
        <author>duker33</author>
        <email>duker33@gmail.com</email>
        <time>2019-09-30T09:16:19Z</time>
        <children/>
      </puzzle>
    </children>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/975" closed="2019-11-19T07:12:52+00:00">975</issue>
    <ticket>971</ticket>
    <estimate>60</estimate>
    <role>DEV</role>
    <id>971-a1bdb68c</id>
    <lines>19-20</lines>
    <body>Remove product tile cards code doubling. Both in html templates and styles.</body>
    <file>templates/layout/tile_products.html</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-09-28T06:55:25Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/985">985</issue>
    <ticket>977</ticket>
    <estimate>120</estimate>
    <role>DEV</role>
    <id>977-9e650840</id>
    <lines>38-42</lines>
    <body>Create some lazy() wrapper for counters. `lazy(my_counter).reachGoal()` should asynchronous delay reaching until my_counter object won't be fully loaded. See our custom the Google Analytics code as reference implementation: https://github.com/fidals/refarm-site/pull/314/files</body>
    <file>front/js/shared/tracking.es6</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-09-30T17:13:56Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/998">998</issue>
    <ticket>996</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>996-4e0aa46a</id>
    <lines>61-62</lines>
    <body>Test category filtering at the admin page. Use standard django test client, without selenium.</body>
    <file>shopelectro/admin.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-10-10T13:04:14Z</time>
    <children/>
  </puzzle>
  <puzzle alive="true">
    <issue href="https://github.com/fidals/shopelectro/issues/1008">1008</issue>
    <ticket>1004</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1004-6d192a5c</id>
    <lines>313-316</lines>
    <body>Organize yml and rss prices testing in the right way. Now rss price has no clear class separation, like yml prices have. Prices filename is hardcoded. Depends from #714.</body>
    <file>shopelectro/tests/tests_commands.py</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-10-31T11:11:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/1009" closed="2019-11-19T07:12:59+00:00">1009</issue>
    <ticket>1004</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1004-e3426e23</id>
    <lines>7-8</lines>
    <body>Avoid hardcoded values in RSS template. Take values like site's title and description from DB.</body>
    <file>templates/prices/price.rss</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-10-31T11:11:49Z</time>
    <children/>
  </puzzle>
  <puzzle alive="false">
    <issue href="https://github.com/fidals/shopelectro/issues/1010" closed="2019-11-11T09:54:25+00:00">1010</issue>
    <ticket>1004</ticket>
    <estimate>30</estimate>
    <role>DEV</role>
    <id>1004-a213ccd7</id>
    <lines>27-30</lines>
    <body>Implement specific to GM set of RSS labels. See the main set of them below. And take to account values from ahead code: "g:condition" and "g:availability".</body>
    <file>templates/prices/price.rss</file>
    <author>duker33</author>
    <email>duker33@gmail.com</email>
    <time>2019-10-31T11:11:49Z</time>
    <children/>
  </puzzle>
</puzzles>
