Вот и подошел к концу первый этап разработки 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.
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
ОтветитьУдалитьА что за ПГМнутые товарищи? Какие-то православные фильмы.
ОтветитьУдалитьГрубовато как-то... Нормальные ребята, делают полезное дело - занимаются духовным воспитанием и просветительской деятельностью. Опять же, никому не навязываются. Почему ПГМнутые?
ОтветитьУдалитьНе нужно говорить за всех. Уверен, что многие из них только и делают, что навязываются. :)
ОтветитьУдалитьДа я просто из тех, кто считает религию душевной болезнью.
Из кого это "из них"? Вы лично знакомы с сотрудниками Русской недели? Балбесов везде хватает, но всех под одну гребенку чесать - преступление против здравого смысла.
ОтветитьУдалитьА сами видеофайлы никак не конвертируете?
ОтветитьУдалитьПока нет, но когда добавим загрузку роликов пользователям, придется добавлять конвертирование...
ОтветитьУдалитьИнтересное обсуждение. Вместо разбора технической стороны перешли на ПГМ 8) Классика.
ОтветитьУдалитьВсем привет!
Петр
Да, не корми тролля.;)
ОтветитьУдалитьБыло бы очень интересно почитать о ваши собственных приложениях, которые переползают у вас из проекта в проект.
ОтветитьУдалитьСтраница логина на сайте уж очень адская :)
1. Заумное слово «Аутентификация».
2. Микроскопическая кнопка «Войти».
3. И почему «Свойства»?
Форма логина из django-profile. Русификацию там адская, но это, опять же, равно мой косяк.
ОтветитьУдалитьСпасибо за замечания, всё исправлю!
http://www.russned.tv/about/
ОтветитьУдалитьвыдает Page not found (404)
но это фигня по сравнению с тем что продакшн сервер работает в режиме DEBUG = True
Грешен, каюсь. Правил ошибку прям на продакшене и забыл отключить.
ОтветитьУдалитьКстати, прошел по ссылке в Ваш блог, выкачал книгу по джанго. Спасибо!