Рубрика: Новости

  • Django показывать в админке пользователю только его объекты

    Ещё довольно частая задача, надо чтоб пользователю в админке показывались только его объекты.
    и второй момент, есть у нас в модели поле автор

        author = models.ForeignKey(User, null = True, blank = True , verbose_name=u'Имя')Code language: Python (python)

    и хочу чтоб пользователю в админке это поле не показывалось, но автоматически при сохранении подставлялся request.user

    Реализуется это как всё по Джанговски в пару движений

    в admin.py
    наследуемся от модели admin
    и немногожечrо допиливаем её

    class ListAdmin(admin.ModelAdmin):
        # Добавим всякие фильтра
        list_filter = ('rooms','region','street', 'pub_date')
        #Говорим, чтоб не показывать это поле
        exclude = ('author',)
        # Тут начинается магия, СуперАдмину показываем всё, а пользователю, показываем только его объекты
        def queryset(self, request):
            if request.user.is_superuser:
                return super(ListAdmin, self).queryset(request)
            else:
                return super(ListAdmin, self).queryset(request).filter(author = request.user)
        # Так решим вторую задачу, в поле author подставляем request.user
        def save_model(self, request, obj, form, change):
            if getattr(obj, 'author', None) is None:
                obj.author = request.user
            obj.save()
            
    admin.site.register(Estate,ListAdmin)Code language: Python (python)

    Вот и всё, не забываем создать отдельную группу для пользователей, в которой указать ту часть приложений куда они могут обращаться.

  • Django чётность в шаблоне, разукрашиваем таблицу

    Способов несколько можно через фильтра, с условиями, а можно вот так красиво

    ……..

    {% for estate in profile.Estates %}
        <tr class="{% cycle 'white' 'gray' %}">
            <td>.........</td>Code language: HTML, XML (xml)
  • Django загрузка картинки и создания кропнутой превьюшки ( thumbnail )

    И так господа, продолжаю ковыряться в Django, продолжу тему создания расширенного профиля и создания аватарки разных размеров.

    Напомню, что у нас есть модель профиль и там поле аватарки

     avatar = models.ImageField(verbose_name=u'Путь до аватарки', upload_to = 'users/', null = True, blank = True)Code language: Python (python)

    Теперь предположим, что у нас 2 странички, одна страничка целиком и полностью посвящена Пользователю, например так

    И например вот такая страница где выводится полный список всех пользователей

    разные размеры, разные соотношения сторон, привет верстальщику 😉
    Ну да ладно, блуждая по тырнету наткнулся на сниппет

    На его основе делаю, делаю при сохранении модели создания 2х картинок
    одну звать полностью, у второй есть дописка _thumb.jpg например

    def save(self,size=(276,317), *args, **kwargs):
            super(UserProfile, self).save(*args, **kwargs)
            try:
                # Создаём первое изображение
                filename= self.avatar.path
                image = Image.open(filename)
                image.thumbnail(size, Image.ANTIALIAS)
                image.save(filename)
                #Создаём мелкую картинку, если оно не верных размером кропаем под вёрстку
                size=(104,127)
                pw = self.avatar.width
                ph = self.avatar.height
                nw = size[0]
                nh = size[1]
    
                # only do this if the image needs resizing
                if (pw, ph) != (nw, nh):
                    filename = str(self.avatar.path)
                    image = Image.open(filename)
                    pr = float(pw) / float(ph)
                    nr = float(nw) / float(nh)
    
                    if pr > nr:
                        # photo aspect is wider than destination ratio
                        tw = int(round(nh * pr))
                        image = image.resize((tw, nh), Image.ANTIALIAS)
                        l = int(round(( tw - nw ) / 2.0))
                        image = image.crop((l, 0, l + nw, nh))
                    elif pr < nr:
                        # photo aspect is taller than destination ratio
                        th = int(round(nw / pr))
                        image = image.resize((nw, th), Image.ANTIALIAS)
                        t = int(round(( th - nh ) / 2.0))
                        print((0, t, nw, t + nh))
                        image = image.crop((0, t, nw, t + nh))
                    else:
                        # photo aspect matches the destination ratio
                        image = image.resize(size, Image.ANTIALIAS)
                    file, ext = os.path.splitext(filename)
                    image.save(file + "_thumb.jpg", "JPEG")
            except :
                filename=''Code language: Python (python)

    По итогу создаются 2 картинки, для вывода полного изображения ничего не придумываю просто в шаблоне

    <img src="/media/{{ profile.avatar }}"/>Code language: HTML, XML (xml)

    А для вывода второго изображения описываю свойство дополнительное, примерно вот так

        def avatarTumb(self):
            try:
                filename= self.avatar.path
                file = os.path.basename(filename)
                files, ext = os.path.splitext(file)
                return u'%s_thumb.jpg' % (files)
            except :
                filename=''Code language: Python (python)

    ну и собственно обращаемся вот так

    <img src="/media/users/{{ item.get_profile.avatarTumb }}" />Code language: HTML, XML (xml)

    Свои варианты предлагайте ниже, как показало время это полезно очень, что-то можно сделать более удобно, может где-то я допустил ошибку 😉

  • Удобно парсим HTML левого сайта

    Вставала задача с сайта спортивного офицального получить таблицу результатов.
    1 понятное дело получаем код сайта курлом
    и потом результат скармливаем чудо биботеки PHP Simple HTML DOM Parser

    она ХТМЛ код превращает в ДОМ дерево.
    примеров на просторах тырнетов масса, могу вот эту ссылочку порекомендовать к прочтению с примерами.
    Читать тут

  • Про отпуска и выходные

    Пост куда буду складывать ссылки интересные, накопилось уже много.

    Начну с того что я посетил уже, почитать можно вот вот это

    Кату-Ярык

    http://travel.drom.ru/12833/ — Красноярск -горный Алтай — Кату-Ярык на Camry Gracia 2009й год.

    Мультинские озёра

    http://travel.drom.ru/17283/ — Красноярск — горный Алтай — Мультинские озёра на Toyota Mark II (отчёт 2010 года )

    и немного фотографий с Ергак 2011 года.

     

    А теперь самое вкусное, что в планах, в планах купить что-то полно приводное с рамой, раздаткой, на больших колёсах. для более глубокого изучания Алтай.

    Вот хороший проброс Москва — Алтай — Тыва с хорошими фотографии, вот прямо очень рекомендую к просмотру.

    Часть первая. Дорога Москва — Алтай
    Часть вторая. Горный Алтай.
    Часть третья. Плато Укок

    Часть 4 Тыва http://qzmn.livejournal.com/17622.html

    Ну и куда же без Ильи (nub1an) Вот тоже прямо очень рекомендую к просмотру в обязательном порядке.

    Внедорожная экспедиция Алтай — Саяны 2008.
    Путь из Горного Алтая к Саянам, вдоль границы с Монголией.
    Горный Алтай — Тыва — Хакассия — Красноярский край, 2 000 км.
    Выжженные степи, снежные вершины, горные реки, громадные озера, десяток перевалов высотой более 2 000 м.
    И воздух, кристальной чистоты воздух на просторах в десятки километров.

    Часть первая.
    Часть вторая.

     

     

    После этого я бы хотел посетить Среднюю Азию, Узбекистан Киргизию и т.п.

    Почитать про это всё можно у Ильи

    Узбекистан
    Майские праздники в Средней Азии.
    Пустыня Кызылкум, дно Аральского моря, кладбище кораблей.
    И конечно древние города Великого Шелкового пути – Хива, Бухара, Самарканд.

    Часть первая.
    Часть вторая.

    Центральный Тянь-Шань, Киргизия
    Высокогорье, каньоны, ущелья, перевалы до 4 000 метров.
    Семитысячники в прямой видимости и конечно Иссык-куль.

    Часть первая.
    Часть вторая.

    Пост про масштабы.
    Немного технических данных о поездке.

    Памирский тракт, Таджикистан
    Декабрь 2011 года, путешествие на Land Rover.
    Высокогорный Памир, граница с Афганистаном, дорога в окружении пяти- и шеститысячников.
    Семь перевалов выше 4 000 метров, снежные шапки гор, ущелья и безжизненные озера во льду.

    Часть первая.
    Часть вторая.

     

     

     

    Что ещё добавить, этим летом хочу разведать южное направление, а именно Казахстан, почитать рекомендую вот это

    http://travel.drom.ru/17686/

    ещё http://travel.drom.ru/17397/
    Add1
    http://traschik.livejournal.com/ — На ВАЗе в азию
    http://krsk-kot.livejournal.com/52307.html — вот ещё интересный момент, мне кажется что с ними мы уже встречались

    Пока этого хватит потом ещё буду скидывать 🙂