Changeset f38625e
- Timestamp:
- 11/03/11 18:04:29 (20 months ago)
- Branches:
- master, crem, crem2, dev, dev2, diadems, forma, generic, instru_search, lam, nlivemulti, production, release/1.4.4, security, social, storage, test, video
- Children:
- dd46083
- Parents:
- d407f46
- git-author:
- yomguy <yomguy@…> (11/03/11 18:04:29)
- git-committer:
- yomguy <yomguy@…> (11/03/11 18:04:29)
- Location:
- telemeta
- Files:
-
- 2 added
- 6 edited
-
admin.py (modified) (2 diffs)
-
models/media.py (modified) (3 diffs)
-
templates/telemeta/mediaitem_related_edit.html (added)
-
templates/telemeta_default/mediaitem_detail.html (modified) (1 diff)
-
templates/telemeta_default/mediaitem_related_edit.html (added)
-
templatetags/telemeta_utils.py (modified) (2 diffs)
-
urls.py (modified) (1 diff)
-
web/base.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
telemeta/admin.py
r3aa1a85 rf38625e 14 14 exclude = ('copied_from_item', ) 15 15 16 class MediaItemRelatedFileAdmin(admin.ModelAdmin): 17 search_fields = ['title', 'code'] 18 ordering = ['code'] 19 16 20 class MediaPartAdmin(admin.ModelAdmin): 17 21 search_fields = ['title', 'item__code'] … … 49 53 admin.site.register(MediaItem, MediaItemAdmin) 50 54 admin.site.register(MediaPart, MediaPartAdmin) 55 admin.site.register(MediaItemRelatedFile, MediaItemRelatedFileAdmin) 51 56 52 57 admin.site.register(Instrument, InstrumentAdmin) -
telemeta/models/media.py
r86d17e9 rf38625e 43 43 from telemeta.util.unaccent import unaccent_icmp 44 44 import re 45 import mimetypes 45 46 from telemeta.models.location import LocationRelation, Location 46 47 from telemeta.models.system import Revision … … 320 321 else: 321 322 title = unicode(self.collection) 322 323 323 if self.track: 324 324 title += ' ' + self.track 325 326 325 return title 327 326 328 329 327 class MediaItemForm(ModelForm): 330 328 class Meta: 331 329 model = MediaItem 330 def clean_code(self): 331 return self.cleaned_data['code'] or None 332 333 334 class MediaItemRelatedFile(MediaResource): 335 "Item related attached file" 336 337 element_type = 'media' 338 339 item = ForeignKey('MediaItem', related_name="related", verbose_name=_('item')) 340 code = CharField(_('code'), unique=True, blank=True) 341 title = CharField(_('title')) 342 date = DateTimeField(_('date'), auto_now=True) 343 description = TextField(_('description')) 344 author = ForeignKey(User, related_name="related", verbose_name=_('author')) 345 mime_type = CharField(_('mime_type'), blank=True) 346 file = FileField(_('file'), upload_to='items/%Y/%m/%d', db_column="filename") 347 348 @property 349 def public_id(self): 350 if self.code: 351 return self.code 352 return self.id 353 354 def is_image(self): 355 return 'image' in self.mime_type 356 357 def save(self, force_insert=False, force_update=False): 358 super(MediaItemRelatedFile, self).save(force_insert, force_update) 359 360 def set_mime_type(self): 361 if self.file: 362 self.mime_type = mimetypes.guess_type(self.file.path)[0] 363 364 def __unicode__(self): 365 if self.title and not re.match('^ *N *$', self.title): 366 title = self.title 367 else: 368 title = unicode(self.item) 369 return title 370 371 class Meta(MetaCore): 372 db_table = 'media_item_related_file' 373 374 class MediaItemRelatedFileForm(ModelForm): 375 class Meta: 376 model = MediaItemRelatedFile 332 377 def clean_code(self): 333 378 return self.cleaned_data['code'] or None … … 465 510 class Meta(MetaCore): 466 511 db_table = 'media_transcoding' 467 468 512 513 469 514 class Search(ModelCore): 470 515 "Keywork search" -
telemeta/templates/telemeta_default/mediaitem_detail.html
re08e04b rf38625e 273 273 </div> <!-- with-rightcol --> 274 274 275 <div class="infos"> 276 {% block related_files %} 277 <div> 278 <h4><a href="#">{% trans "Related files" %}</a></h4> 279 {% if related_files %} 280 <div class="instruments"> 281 <table class="instruments"> 282 <thead> 283 <tr> 284 <td>{% field_label "MediaItemRelatedFile" "file" %}</td> 285 <td>{% field_label "MediaItemRelatedFile" "title" %}</td> 286 <td>{% field_label "MediaItemRelatedFile" "mime type" %}</td> 287 <td>{% field_label "MediaItemRelatedFile" "author" %}</td> 288 <td>{% field_label "MediaItemRelatedFile" "preview" %}</td> 289 </tr> 290 </thead> 291 <tbody> 292 {% for file in related_files %} 293 <tr> 294 <td><a href="{% url telemeta-item-related-file item.public_id file.id %}">{% if file.file %}{{ file.file|get_filename }}{% endif %}</a></td> 295 <td>{{ file.title }}</td> 296 <td>{{ file.mime_type }}</td> 297 <td>{{ file.author }}</td> 298 <td>{% if file.is_image %}<a href="{% url telemeta-item-related-file item.public_id file.id %}"><img src="{% url telemeta-item-related-file item.public_id file.id %}" style="width: 400px;" /></a>{% else %}<a href="{% url telemeta-item-related-file item.public_id file.id %}">link</a>{% endif %}</td> 299 </tr> 300 {% endfor %} 301 </tbody> 302 </table> 303 {% if user.is_authenticated and perms.telemeta.change_mediaitem %} 304 <a href="{% url telemeta-item-related_edit item.public_id %}" class="component_icon button icon_edit">{% trans "Edit"%} {% trans "related"%}</a> 305 {% endif %} 306 </div> 307 {% endif %} 308 </div> 309 {% endblock related_files %} 310 </div> 311 275 312 {% endblock %} 276 313 -
telemeta/templatetags/telemeta_utils.py
ra362edf rf38625e 13 13 from django import db 14 14 import re 15 import os 15 16 import datetime 16 17 from django.conf import settings … … 320 321 else: 321 322 return '' 323 324 @register.filter 325 def get_filename(file): 326 return file.path.split(os.sep)[-1] -
telemeta/urls.py
r70ef00a rf38625e 114 114 dict(template='telemeta/mediaitem_keywords_edit.html'), name="telemeta-item-keywords_edit"), 115 115 url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/delete/$', item_view.item_delete, name="telemeta-item-delete"), 116 116 url(r'^items/(?P<item_public_id>[A-Za-z0-9._-]+)/related/(?P<file_id>[A-Za-z0-9._-]+)$', item_view.related_file_stream, name="telemeta-item-related-file"), 117 url(r'^items/(?P<public_id>[A-Za-z0-9._-]+)/related_edit/$', item_view.related_file_edit, dict(template='telemeta/mediaitem_related_edit.html'), name="telemeta-item-related_edit"), 117 118 # Markers 118 119 url(r'^markers/(?P<marker_id>[A-Za-z0-9]+)/$', item_view.item_detail, name="telemeta-item-detail-marker"), -
telemeta/web/base.py
r54fe61a rf38625e 506 506 public_access = get_public_access(item.public_access, str(item.recorded_from_date).split('-')[0], 507 507 str(item.recorded_to_date).split('-')[0]) 508 508 509 related_files = MediaItemRelatedFile.objects.filter(item=item) 510 for file in related_files: 511 if not file.mime_type: 512 file.set_mime_type() 513 file.save() 514 509 515 return render(request, template, 510 516 {'item': item, 'export_formats': formats, … … 513 519 'previous' : previous, 'next' : next, 'marker': marker_id, 'playlists' : playlists, 514 520 'public_access': public_access, 'width': width, 'height': height, 521 'related_files': related_files, 515 522 }) 516 523 … … 562 569 'previous' : previous, 'next' : next, 563 570 }) 571 572 def related_file_stream(self, request, item_public_id, file_id): 573 item = MediaItem.objects.get(public_id=item_public_id) 574 file = MediaItemRelatedFile.objects.get(item=item, id=file_id) 575 response = HttpResponse(stream_from_file(file.file.path), mimetype=file.mime_type) 576 # response['Content-Disposition'] = 'attachment' 577 return response 578 579 @method_decorator(permission_required('telemeta.change_mediaitem')) 580 def related_file_edit(self, request, public_id, template): 581 item = MediaItem.objects.get(public_id=public_id) 582 MediaItemRelatedFileFormSet = inlineformset_factory(MediaItem, MediaItemRelatedFile, form=MediaItemRelatedFileForm) 583 if request.method == 'POST': 584 formset = MediaItemRelatedFileFormSet(data=request.POST, files=request.FILES, instance=item) 585 if formset.is_valid(): 586 formset.save() 587 return HttpResponseRedirect('/items/'+public_id) 588 else: 589 formset = MediaItemRelatedFileFormSet(instance=item) 590 591 return render(request, template, {'item': item, 'formset': formset,}) 564 592 565 593 @method_decorator(permission_required('telemeta.add_mediaitem')) … … 711 739 response = HttpResponse(self.cache_data.read_stream_bin(image_file), mimetype=mime_type) 712 740 return response 713 741 714 742 def list_export_extensions(self): 715 743 "Return the recognized item export file extensions, as a list"
Note: See TracChangeset
for help on using the changeset viewer.
