14 мая 2010 г.

www.russned.tv

Вот и подошел к  концу первый этап разработки www.russned.tv – это видеохостинг на django. Из названия ясно, что сайт сделан для наших друзей - Русской недели. При разработке использована куча всяких django-приложений:

  • django-cms (с кучищей плагинов)
  • django-profile (понадобиться для регистрации и, поздней, для добавления роликов пользователями)
  • django-ratings
  • django-ajaxcomments
  • + набор собственных приложений, которые теперь переносятся из проекта в проект.

У некоторых роликов есть полная avi-версия.

Django-сообществу возможно, будут интересны следующие куски кода этого проекта:

1. Список последних просмотренных роликов


videos = MyVideo.objects.annotate(last=Max('videoview__when')).order_by('-last')[:limit]


Между прочим, универсальный вариант GROUP BY средствами django ORM’а.

2. Ролики отсортированные по соотношению рейтинга к кол-ву голосов:


videos = MyVideo.objects.extra(select={

        'a_rating''rating_score/rating_votes'

    }).order_by('-a_rating')[:limit]


Это специфика использования djangoratings – кто использовал поймет ;)

3. Ролики с сортировкой по кол-ву комментариев (только откомментированные):


videos = MyVideo.objects.annotate(comments_count=Count('comments')).\

        exclude(comments_count=0).order_by('-comments_count')[:limit]


В основе файл models:


class MyVideo(models.Model):

    ...

    title = models.CharField(_(u'название'), max_length=250, unique=True)

    desc = models.TextField(_(u'описание'), max_length=250, null=True, blank=True)

    category = models.ForeignKey(Category, verbose_name=_(u'категория'), blank=True, null=True)

    tags = TagAutocompleteField()



    rating = RatingField(range=5, weight=1, can_change_vote=True, allow_anonymous=False)



    comments = generic.GenericRelation(Comment, content_type_field="content_type", object_id_field="object_pk")



class VideoView(models.Model):

    video = models.ForeignKey(MyVideo)

    when = models.DateTimeField(auto_now_add=True)

    user = models.ForeignKey(User, null=True, blank=True, editable=False)


Смотрите, качайте, советуйте друзьям! www.russned.tv.

15 комментариев:

Scailer комментирует...

tags = TagAutocompleteField()
а можно по подробнее про этот филд?

Иван Маркеев комментирует...

Да. Это от django-приложения http://code.google.com/p/django-tagging-autocomplete/ - чрезвычайно полезная штука. Виджеты автодополнения как для морды, так и для админки. Установка очень простая: http://code.google.com/p/django-tagging-autocomplete/wiki/ReadMe

Иван Маркеев комментирует...

Кстати, я уже писал о django-tagging-autocomplete: http://markeev.labwr.ru/2010/02/django.html

CheerfulBoy комментирует...

А что за ПГМнутые товарищи? Какие-то православные фильмы.

Иван Маркеев комментирует...

Грубовато как-то... Нормальные ребята, делают полезное дело - занимаются духовным воспитанием и просветительской деятельностью. Опять же, никому не навязываются. Почему ПГМнутые?

CheerfulBoy комментирует...

Не нужно говорить за всех. Уверен, что многие из них только и делают, что навязываются. :)

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

Иван Маркеев комментирует...

Из кого это "из них"? Вы лично знакомы с сотрудниками Русской недели? Балбесов везде хватает, но всех под одну гребенку чесать - преступление против здравого смысла.

alu комментирует...

А сами видеофайлы никак не конвертируете?

Иван Маркеев комментирует...

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

petr-belousov комментирует...

Интересное обсуждение. Вместо разбора технической стороны перешли на ПГМ 8) Классика.

Всем привет!
Петр

Иван Маркеев комментирует...

Да, не корми тролля.;)

Артём Сапегин комментирует...

Было бы очень интересно почитать о ваши собственных приложениях, которые переползают у вас из проекта в проект.

Страница логина на сайте уж очень адская :)

1. Заумное слово «Аутентификация».
2. Микроскопическая кнопка «Войти».
3. И почему «Свойства»?

Иван Маркеев комментирует...

Форма логина из django-profile. Русификацию там адская, но это, опять же, равно мой косяк.
Спасибо за замечания, всё исправлю!

FeNUMe комментирует...

http://www.russned.tv/about/
выдает Page not found (404)

но это фигня по сравнению с тем что продакшн сервер работает в режиме DEBUG = True

Иван Маркеев комментирует...

Грешен, каюсь. Правил ошибку прям на продакшене и забыл отключить.
Кстати, прошел по ссылке в Ваш блог, выкачал книгу по джанго. Спасибо!