class Meta: verbose_name = u"Изображение" verbose_name_plural = u"Изображения" app_label = "core" class DefaultGeneralPhotoForm(forms.ModelForm): class Meta: model = Photo fields = ('title','description','image', 'tags') widgets = { 'description':forms.Textarea(attrs={'cols':'80','rows':'5'}), 'tags':admin_widgets.FilteredSelectMultiple(u'метки', 0), 'image':admin_widgets.AdminFileWidget(attrs={}) } class Media: js = ('/media/js/admin_jsi18n.js',) register_type(Photo) register_help( ContextHelpNote( u'Photo', u'Фото', u'Объект на основе изображения. В качестве изображения желательно использовать растровые изображения популярных форматов (png, jpg, gif), так как другие форматы изображений могут не распознаваться браузерами пользователей. Желательно, чтобы размещаемые изображения не превышали 0,5 Мб. Недопустимо размещение изображений больше 1 Мб или в несжатых форматах (bmp и т.п.) на часто посещаемых страницах. Помните, что размещая объемные ресурсы на часто посещаяемых страницах, Вы мешаете работе пользователей и тратите их время и интернет трафик, и что размещая множество изображений на странице, Вы делаете ее нечитаемой.') )
def __init__(self, *args, **kwrds): super(DefaultGeneralPageForm, self).__init__(*args, **kwrds) self.fields['text'].widget.is_new = not bool(kwrds['instance'].id) class Meta: model = Page fields = ('title', 'description', 'text', 'tags') widgets = { 'text': TinyMCEWidget(), 'description': forms.Textarea(attrs={ 'cols': '80', 'rows': '5' }), 'tags': admin_widgets.FilteredSelectMultiple(u'метки', 0) } class Media: js = ('/media/js/admin_jsi18n.js', ) register_type(Page) register_workspace( Page, u"Объявление", u"/news/announcements/", u'Короткие текстовые объявления. Отображаются в блоке «Объявления».') register_help( ContextHelpNote( u'Page', u'Страница', u'Страница - основной объект портала. Страница одновременно является и странице, и папкой, в которой могут содержаться объекты. Таким образом весь портал представляет собой дерево (иерархию) страниц. Вложенные в страницу фото, будут отображаться в блоке фото страницы (если выбран шаблон - по умолчанию). Помните, что размещая объемные ресурсы на часто посещаяемых страницах, Вы мешаете работе пользователей и тратите их время и интернет трафик, и что размещая множество изображений на странице, Вы делаете ее нечитаемой.' ))
verbose_name = u"Видеофайл" verbose_name_plural = u"Видеофайлы" app_label = "core" class DefaultGeneralVideoFileForm(forms.ModelForm): class Meta: model = VideoFile fields = ('title','description','path', 'preview', 'tags') widgets = { 'preview':admin_widgets.AdminFileWidget(attrs={}), 'path':admin_widgets.AdminFileWidget(attrs={}), 'description':forms.Textarea(attrs={'cols':'80','rows':'5'}), 'tags':admin_widgets.FilteredSelectMultiple(u'метки', 0) } class Media: js = ('/media/js/admin_jsi18n.js',) post_save.connect(handle_video_info, sender=VideoFile) register_type(VideoFile, base=File) register_help( ContextHelpNote( u'VideoFile', u'Видеофайл', u'Объект на основе видеороика. Позволяет просматривать запись с портала и скачивать ее к себе на компьютер. Комментирование и оценка видеофайла доступна по умолчанию. Все опубликованные видеоролики попадают в раздел телевидения ТюмГНГУ.') )
'tags': admin_widgets.FilteredSelectMultiple(u'метки', 0) } class Media: js = ('/media/js/admin_jsi18n.js', ) register_type(News, base=Page) register_workspace( News, u"Новость", u"/news/university/", u'Новости отображаются на главной странице или на страницах институтов, в зависимости от состояния и присвоенных меток.' ) register_help( ContextHelpNote( u'News', u'Новость', u'Страница специально выделенная для хранения новостных сообщений (новостью являтся уже произошедшее событие). Все новостные сообщения должны создаваться из рабочей зоны пользователя, иначе они не будут попадать в автоматически собираемые летны новостей. Важно помнить, что агрегация новостей в ленты подразделений происходит по меткам (тегам).', u'http://www.tsogu.ru/video-spravka/razmeshchenie-novostej/')) register_help( ContextHelpNote( u'News_tags', u'Метки', u'Метки небходимы для агрегации новостей в новостные ленты подразделений' )) register_help( ContextHelpNote( u'category', u'Категория', u'Категория новости в действующей версии сайта используется только в качестве дополнительного текствового описания к новости. Агрегация новостей осуществляется не по категории, как это было ранее, а то меткам (тегам).' ))
model = File fields = ('title','description','path', 'tags') widgets = { 'path':admin_widgets.AdminFileWidget(attrs={}), 'description':forms.Textarea(attrs={'cols':'80','rows':'5'}), 'tags':admin_widgets.FilteredSelectMultiple(u'метки', 0) } class Media: js = ('/media/js/admin_jsi18n.js',) register_type(File) register_help( ContextHelpNote( u'File', u'Файл', u'Объект на основе файла произвольного типа. Загруженный файл можно скачать.' )) register_help( ContextHelpNote( u'path', u'Путь к файлу', u'Указывается путь к файлу на Вашем компьютере, который будет загружен на портал.' ))
def get_link_absolute_url(self): # if int(self.link_type) == 1: return self.url class Meta: verbose_name = u"Ссылка" verbose_name_plural = u"Ссылки" app_label = "core" class DefaultGeneralLinkForm(forms.ModelForm): class Meta: model = Link fields = ('title', 'description', 'url', 'link_type') widgets = { 'description': forms.Textarea(attrs={ 'cols': '80', 'rows': '5' }), } register_type(Link) register_help(ContextHelpNote(u'Link_url', u'Ссылка', u'Адрес ссылки.')) register_help( ContextHelpNote(u'Link', u'Ссылка', u'Ссылка на внешний или внутренний ресурс.'))
print "POST_SAVE AudioFile exception", str(E) class AudioFile(File): length = models.IntegerField(u"Длительность трека", blank=True, default=0) def save(self, **kwargs): super(AudioFile, self).save(**kwargs) def mediainfo(self): mi = {} mi['length'] = "%02d:%02d"%(self.length//60, self.length%60) return mi class Meta: verbose_name = u"Аудиофайл" verbose_name_plural = u"Аудиофайлы" app_label = "core" post_save.connect(handle_audio_info, sender=AudioFile) register_type(AudioFile, base=File) register_help( ContextHelpNote( u'AudioFile', u'Аудиофайл', u'Объект на основе файла формата mp3. Позволяет прослушивать запись с портала и скачивать ее к себе на компьютер. Комментирование и оценка аудиофайла доступно по умолчанию.') # u'http://www.tsogu.ru/video-spravka/razmeshchenie-novostej/') )