All streams
Search
Write a publication
Pull to refresh
162
0

Software Engineer

Send message
Спасибо, что ответили за меня.
Напишите развёрнутый пример, пожалуйста. Мне кажется я не до конца понял вашу мысль.
Это решение и есть тупо SQL, просто вне Python-кода. Разделение сущностей и слабая связанность, все дела.
Не люблю Mako именно за это. Слишком много свободы в шаблонах, этим часто злоупотребляют. Вплоть до того, что пихают туда половину бизнес-логики, а то и всю. Логика представления должна оставаться таковой.
Ну это легко поправить. Опять же, в лоб.

{% sql 'get_countries_by_conds', note='get countries by date conditions or ids' %}
    SELECT *
    FROM countries
    {% if ids %}
        WHERE id IN ({{ ids|join(', ') }})
    {% endif %}
    {% if date_from %}
        {% if ids %} AND {% endif %} WHERE creation_date >= {{ date_from }}
    {% endif %}
    {% if date_to %}
        {% if ids or date_from %} AND {% endif %} WHERE creation_date <= {{ date_to }}
    {% endif %}
    ORDER BY creation_date ASC
{% endsql %}


Я бы разнёс conditions по своим блокам.

{% sql 'get_countries', note='get countries' %}
    SELECT *
    FROM countries
    {% if conditions %}
        {{ conditions|join(' AND ') }}
    {% endif %}
    ORDER BY creation_date ASC
{% endsql %}


{% sql 'cond_ids_in_countries' %}
    WHERE id IN ({{ ids|join(', ') }})
{% endsql %}


{% sql 'cond_date_from_countries' %}
    WHERE creation_date >= {{ date_from }}
{% endsql %}


{% sql 'cond_date_to_countries' %}
    WHERE creation_date <= {{ date_to }}
{% endsql %}


def get_countries(ids=None, date_from=None, date_to=None):
    sql_conditions = []
    if ids:
        cond = country_queries.cond_ids_in_countries(ids=ids)
        sql_conditions.append(cond)
    if date_from:
        cond = country_queries.cond_date_from_countries(date_from=date_from)
        sql_conditions.append(cond)
    if date_to:
        cond = country_queries.cond_date_to_countries(date_to=date_to)
        sql_conditions.append(cond)

    return country_queries.get_countries(conditions=sql_conditions)


Ну как-то так. Мысль, думаю, уловили.
Решение в лоб:

{% sql 'get_countries_by_conds', note='get countries by date conditions or ids' %}
    SELECT *
    FROM countries
    {% if ids %}
        WHERE id IN ({{ ids|join(', ') }})
    {% endif %}
    {% if date_from %}
        AND WHERE creation_date >= {{ date_from }}
    {% endif %}
    {% if date_to %}
        AND WHERE creation_date <= {{ date_to }}
    {% endif %}
    ORDER BY creation_date ASC
{% endsql %}


def get_countries(ids=None, date_from=None, date_to=None):
    sql_context = {}
    if ids:
        sql_context['ids'] = ids
    if date_from:
        sql_context['date_from'] = date_from  # + date format 'YYYY-MM-DD'
    if date_to:
        sql_context['date_to'] = date_to  # + date format 'YYYY-MM-DD'

    return country_queries.get_countries_by_conds(**sql_context)
Это не новый дизайн, это точно такая же админка с обновлёнными стилями.
Спасибо за интересный цикл, надеюсь на продолжение.

Что вы думаете о Luminus? (http://www.luminusweb.net/docs) По факту это просто рекомендованный набор библиотек и это упрощает поиски для людей, которые плохо знакомы с экосистемой Clojure (как я). С другой стороны, когда делаешь свои первые робкие шаги, на тебя наваливается куча всего нового и в этом случае, может, имеет смысл начать прям с нуля? То есть Ring, Compojure, Buddy по отдельности, Что посоветуете?
Как-то очень сложно. Что реально хочется видеть в питоне, так это простые инструменты вроде github.com/yogthos/migratus для миграций. А получается какой-то трешак, лишь бы к SQL не прикасаться.
Недавно рассказывал и об этом тоже на ITWeekend в Киеве. Так как по теме, оставлю слайды speakerdeck.com/semirook/api-centric-web-development-with-tornado-or-the-great-refactoring-story
Микросервисы — частный случай SOA. На самом деле такой же маркетологический buzzword как bigdata.
В простом случае достаточно поиграться с магическими константами :) Elastic из коробки много чего умеет и неплохо справляется.

    'query': {
        'fuzzy_like_this': {
            'fields': ["name", "brand"],
            'like_text': query,
            'fuzziness': '0.5',
            'prefix_length': '1'
        }
    }
Делал сложные фильтры на много тысяч товаров с помощью Elasticsearch, заодно получил возможность полнотекстового поиска по названию, описанию и составу, учитывая опечатки.

Ну а Postgres — это стандарт, зря вы так.
Почему запись из-под Винды, а сама React в виртуалке? Это ж несерьёзно.
С солидным опозданием, но бета должна выйти весной-летом. Ритм у них упал, разработчики по контракту поразбегались, но надежда есть.
Вы очень вовремя, спасибо за библиотеку. Прям сейчас ковыряю и со старта возникло несколько вопросов:

1. Чтоб завести в require.js пришлось немного похачить wsrpc.js (не видел Q и работал в глобальной области видимости)

2. С запросами к серверу всё понятно, а вот наоборот — не очень. В документации примера не нашёл, поэтому на данный момент всё, что я придумал — это делать запрос к серверу, который инициализирует PeriodicCallback, а на клиенте уже слушать ответы через addRoute. Можно как-то более изящно решить этот вопрос?

Реализую свой stock board — ждите pull-реквестов :)
piumosso разработал нечто схожее (http://futurecolors.ru/belonika/), можете пообщаться на счёт логики и производительности.
Я даже не знаю что сказать про весь этот код. Если это одноразовый код, который никогда не увидит мир — ок, задача решена.
Web-вариант Dash, точно. Ну ок, если у вас не мак.

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity