Skip to content

Commit

Permalink
Synchronized build
Browse files Browse the repository at this point in the history
  • Loading branch information
lektor-bot committed May 22, 2016
1 parent b1645d7 commit cf0162b
Show file tree
Hide file tree
Showing 5 changed files with 249 additions and 10 deletions.
69 changes: 69 additions & 0 deletions django-menyaem-yazyk-v-zavisimosti-ot-domena/index.html
@@ -0,0 +1,69 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="../static/style.css">
<link rel="stylesheet" href="../static/font-awesome.min.css">
<link rel="stylesheet" href="../static/admonition-text.css">
<link rel="stylesheet" href="../static/pygments.css">
<title>Django меняем язык в зависимости от домена</title>
</head>
<body>
<main>


<div class="blog-post">

<h1>Django меняем язык в зависимости от домена</h1>

<p class="meta">

<a href="https://twitter.com/ali_aliev">Ali Aliev</a>

[2016-05-18]
</p>

<p>Появилась задача менять язык интерфейса в зависимости от домена, который был прикреплен к сайту. Как оказалась решение данной задачи очень простое достаточно написать небольшой middleware.</p>
<p>Для начала создадим в настройках settings.py следующий словарь, который мы будем использовать и читать:</p>
<div class="highlight"><pre><span class="n">LANGUAGES_DOMAINS</span> <span class="o">=</span> <span class="p">{</span>
<span class="s">&#39;somedomain.com&#39;</span><span class="p">:</span> <span class="s">&#39;en&#39;</span><span class="p">,</span>
<span class="p">}</span>
</pre></div>
<p>далее код самого middleware:</p>
<div class="highlight"><pre><span class="kn">from</span> <span class="nn">django.conf</span> <span class="kn">import</span> <span class="n">settings</span>
<span class="kn">from</span> <span class="nn">django.utils</span> <span class="kn">import</span> <span class="n">translation</span>


<span class="k">class</span> <span class="nc">DomainLocaleMiddleware</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Set language regarding of domain</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="k">def</span> <span class="nf">process_request</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">request</span><span class="p">):</span>
<span class="k">if</span> <span class="n">request</span><span class="o">.</span><span class="n">META</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s">&#39;HTTP_ACCEPT_LANGUAGE&#39;</span><span class="p">):</span>
<span class="c"># Totally ignore the browser settings... </span>
<span class="k">del</span> <span class="n">request</span><span class="o">.</span><span class="n">META</span><span class="p">[</span><span class="s">&#39;HTTP_ACCEPT_LANGUAGE&#39;</span><span class="p">]</span>

<span class="n">current_domain</span> <span class="o">=</span> <span class="n">request</span><span class="o">.</span><span class="n">META</span><span class="p">[</span><span class="s">&#39;HTTP_HOST&#39;</span><span class="p">]</span>
<span class="n">lang_code</span> <span class="o">=</span> <span class="n">settings</span><span class="o">.</span><span class="n">LANGUAGES_DOMAINS</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="n">current_domain</span><span class="p">)</span>

<span class="k">if</span> <span class="n">lang_code</span><span class="p">:</span>
<span class="n">translation</span><span class="o">.</span><span class="n">activate</span><span class="p">(</span><span class="n">lang_code</span><span class="p">)</span>
<span class="n">request</span><span class="o">.</span><span class="n">LANGUAGE_CODE</span> <span class="o">=</span> <span class="n">lang_code</span>
</pre></div>

</div>


</main>
<a href="https://github.com/aliev"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://camo.githubusercontent.com/82b228a3648bf44fc1163ef44c62fcc60081495e/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_left_red_aa0000.png"></a>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-42591955-1', 'auto');
ga('send', 'pageview');

</script>
</body>
</html>
61 changes: 61 additions & 0 deletions eshe-neskolko-poleznyh-filtrov-v-django-orm/index.html
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="../static/style.css">
<link rel="stylesheet" href="../static/font-awesome.min.css">
<link rel="stylesheet" href="../static/admonition-text.css">
<link rel="stylesheet" href="../static/pygments.css">
<title>Еще несколько полезных фильтров в Django ORM</title>
</head>
<body>
<main>


<div class="blog-post">

<h1>Еще несколько полезных фильтров в Django ORM</h1>

<p class="meta">

<a href="https://twitter.com/ali_aliev">Ali Aliev</a>

[2016-05-18]
</p>

<p>Показать события, которые будут проходить только в выходные дни:</p>
<div class="highlight"><pre><span class="n">Evens</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">eventStarttime__week_day__in</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">])</span>
</pre></div>
<p>Показать события которые будут проходить только на этой неделе:</p>
<div class="highlight"><pre><span class="n">date</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">()</span>
<span class="n">start_week</span> <span class="o">=</span> <span class="n">date</span> <span class="o">-</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="n">date</span><span class="o">.</span><span class="n">weekday</span><span class="p">())</span>
<span class="n">end_week</span> <span class="o">=</span> <span class="n">start_week</span> <span class="o">+</span> <span class="n">datetime</span><span class="o">.</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">7</span><span class="p">)</span>
<span class="n">Event</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">eventStarttime__range</span><span class="o">=</span><span class="p">[</span><span class="n">start_week</span><span class="p">,</span> <span class="n">end_week</span><span class="p">])</span>
</pre></div>
<p>Показать события, id которых дублируются</p>
<div class="highlight"><pre><span class="n">Event</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">values</span><span class="p">(</span><span class="s">&#39;eventId&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">annotate</span><span class="p">(</span><span class="n">Count</span><span class="p">(</span><span class="s">&#39;eventId&#39;</span><span class="p">))</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">eventId__count__gt</span><span class="o">=</span><span class="mi">1</span><span class="p">)</span>
</pre></div>
<p>Показать события которые будут проходить сегодня</p>
<div class="highlight"><pre><span class="kn">import</span> <span class="nn">datetime</span>
<span class="n">today_min</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">combine</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">(),</span> <span class="n">datetime</span><span class="o">.</span><span class="n">time</span><span class="o">.</span><span class="n">min</span><span class="p">)</span>
<span class="n">today_max</span> <span class="o">=</span> <span class="n">datetime</span><span class="o">.</span><span class="n">datetime</span><span class="o">.</span><span class="n">combine</span><span class="p">(</span><span class="n">datetime</span><span class="o">.</span><span class="n">date</span><span class="o">.</span><span class="n">today</span><span class="p">(),</span> <span class="n">datetime</span><span class="o">.</span><span class="n">time</span><span class="o">.</span><span class="n">max</span><span class="p">)</span>

<span class="n">Event</span><span class="o">.</span><span class="n">objects</span><span class="o">.</span><span class="n">filter</span><span class="p">(</span><span class="n">eventStarttime__range</span><span class="o">=</span><span class="p">[</span><span class="n">today_min</span><span class="p">,</span> <span class="n">today_max</span><span class="p">])</span>
</pre></div>

</div>


</main>
<a href="https://github.com/aliev"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://camo.githubusercontent.com/82b228a3648bf44fc1163ef44c62fcc60081495e/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_left_red_aa0000.png"></a>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-42591955-1', 'auto');
ga('send', 'pageview');

</script>
</body>
</html>
29 changes: 19 additions & 10 deletions index.html
Expand Up @@ -14,7 +14,7 @@

<div class="blog-post">

<h4>[2016-04-20] <a href="./zapuskaem-poleznye-servisy-v-kontejnerah-docker/">Запускаем полезные сервисы в контейнерах docker</a></h4>
<h4>[2016-05-18] <a href="./django-menyaem-yazyk-v-zavisimosti-ot-domena/">Django меняем язык в зависимости от домена</a></h4>


</div>
Expand All @@ -23,7 +23,7 @@ <h4>[2016-04-20] <a href="./zapuskaem-poleznye-servisy-v-kontejnerah-docker/">З

<div class="blog-post">

<h4>[2016-04-17] <a href="./dlite-docker-s-chelovecheskim-licom-v-os-x/">Dlite - Docker с человеческим лицом в OS X</a></h4>
<h4>[2016-05-18] <a href="./eshe-neskolko-poleznyh-filtrov-v-django-orm/">Еще несколько полезных фильтров в Django ORM</a></h4>


</div>
Expand All @@ -32,7 +32,7 @@ <h4>[2016-04-17] <a href="./dlite-docker-s-chelovecheskim-licom-v-os-x/">Dlite -

<div class="blog-post">

<h4>[2016-04-16] <a href="./docker-s-chelovecheskim-licom-v-mac-os/">Docker с человеческим лицом в OS X</a></h4>
<h4>[2016-04-20] <a href="./zapuskaem-poleznye-servisy-v-kontejnerah-docker/">Запускаем полезные сервисы в контейнерах docker</a></h4>


</div>
Expand All @@ -41,7 +41,7 @@ <h4>[2016-04-16] <a href="./docker-s-chelovecheskim-licom-v-mac-os/">Docker с

<div class="blog-post">

<h4>[2016-04-04] <a href="./moj-pervyj-modul-dlya-lektor/">Мой первый модуль для lektor</a></h4>
<h4>[2016-04-17] <a href="./dlite-docker-s-chelovecheskim-licom-v-os-x/">Dlite - Docker с человеческим лицом в OS X</a></h4>


</div>
Expand All @@ -50,7 +50,7 @@ <h4>[2016-04-04] <a href="./moj-pervyj-modul-dlya-lektor/">Мой первый

<div class="blog-post">

<h4>[2016-03-27] <a href="./rabota-s-yelp-api-i-dobavlenie-nedostayushih-dannyh-iz-google-places-api/">Работа с Yelp API и добавление недостающих данных из Google Places API</a></h4>
<h4>[2016-04-16] <a href="./docker-s-chelovecheskim-licom-v-mac-os/">Docker с человеческим лицом в OS X</a></h4>


</div>
Expand All @@ -59,7 +59,7 @@ <h4>[2016-03-27] <a href="./rabota-s-yelp-api-i-dobavlenie-nedostayushih-dannyh-

<div class="blog-post">

<h4>[2015-06-21] <a href="./neskolko-poleznyh-praktik-ispolzovaniya-zaprosov-v-django-orm/">Несколько полезных практик использования запросов в Django ORM</a></h4>
<h4>[2016-04-04] <a href="./moj-pervyj-modul-dlya-lektor/">Мой первый модуль для lektor</a></h4>


</div>
Expand All @@ -68,7 +68,7 @@ <h4>[2015-06-21] <a href="./neskolko-poleznyh-praktik-ispolzovaniya-zaprosov-v-d

<div class="blog-post">

<h4>[2015-06-19] <a href="./dobavlyaem-oshibki-v-formu-minuya-metod-clean/">Добавляем ошибки в форму минуя метод clean</a></h4>
<h4>[2016-03-27] <a href="./rabota-s-yelp-api-i-dobavlenie-nedostayushih-dannyh-iz-google-places-api/">Работа с Yelp API и добавление недостающих данных из Google Places API</a></h4>


</div>
Expand All @@ -77,7 +77,16 @@ <h4>[2015-06-19] <a href="./dobavlyaem-oshibki-v-formu-minuya-metod-clean/">До

<div class="blog-post">

<h4>[2015-06-04] <a href="./prosto-o-django-content-types-framework/">Просто о Django Content Types Framework</a></h4>
<h4>[2015-06-21] <a href="./neskolko-poleznyh-praktik-ispolzovaniya-zaprosov-v-django-orm/">Несколько полезных практик использования запросов в Django ORM</a></h4>


</div>



<div class="blog-post">

<h4>[2015-06-19] <a href="./dobavlyaem-oshibki-v-formu-minuya-metod-clean/">Добавляем ошибки в форму минуя метод clean</a></h4>


</div>
Expand All @@ -86,7 +95,7 @@ <h4>[2015-06-04] <a href="./prosto-o-django-content-types-framework/">Прост

<div class="blog-post">

<h4>[2015-06-03] <a href="./f-vyrazhenie-v-django-orm/">F выражение в Django ORM</a></h4>
<h4>[2015-06-04] <a href="./prosto-o-django-content-types-framework/">Просто о Django Content Types Framework</a></h4>


</div>
Expand All @@ -100,7 +109,7 @@ <h4>[2015-06-03] <a href="./f-vyrazhenie-v-django-orm/">F выражение в

| 1 |

<span class="disabled">Next &raquo;</span>
<a href="./page/2/">Next &raquo;</a>

</div>

Expand Down
49 changes: 49 additions & 0 deletions page/2/index.html
@@ -0,0 +1,49 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="../../static/style.css">
<link rel="stylesheet" href="../../static/font-awesome.min.css">
<link rel="stylesheet" href="../../static/admonition-text.css">
<link rel="stylesheet" href="../../static/pygments.css">
<title>Ali Aliev blog</title>
</head>
<body>
<main>



<div class="blog-post">

<h4>[2015-06-03] <a href="../../f-vyrazhenie-v-django-orm/">F выражение в Django ORM</a></h4>


</div>




<div class="pagination">

<a href="../../">&laquo; Previous</a>

| 2 |

<span class="disabled">Next &raquo;</span>

</div>


</main>
<a href="https://github.com/aliev"><img style="position: absolute; top: 0; left: 0; border: 0;" src="https://camo.githubusercontent.com/82b228a3648bf44fc1163ef44c62fcc60081495e/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f6c6566745f7265645f6161303030302e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_left_red_aa0000.png"></a>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');

ga('create', 'UA-42591955-1', 'auto');
ga('send', 'pageview');

</script>
</body>
</html>

0 comments on commit cf0162b

Please sign in to comment.