def import_path(path, parent_category=None): category_name = os.path.basename(path) if not category_name: path = os.path.dirname(path) category_name = os.path.basename(path) if parent_category and parent_category.parent: parent_category = parent_category.parent try: category = Category.objects.filter(title=category_name, parent=parent_category)[0] except IndexError: category = Category(title=category_name, parent=parent_category) category.save() for item in os.listdir(path): subpath = os.path.join(path, item) if os.path.isdir(subpath): import_path(subpath, parent_category=category) elif item.startswith('.'): # ignore . files pass else: content = ContentFile(open(subpath).read()) media_file = MediaFile() media_file.save() media_file.categories.add(category) media_file.file.save(media_file.file.storage.get_valid_name(item), content)
def _saveSplash(self, vidFile, thumbURL, mediaPath): thumbMediaPath = os.path.join(mediaPath, '%s.jpg' % vidFile) thumbRealPath = os.path.join(settings.MEDIA_ROOT, thumbMediaPath) subprocess.call(['wget', '-O', thumbRealPath, thumbURL]) try: mf = MediaFile.objects.get(file=thumbMediaPath) except MediaFile.DoesNotExist: mf = MediaFile(file=thumbMediaPath) mf.save()
def _processDownloadedFile(self, vidFile, title, desc, mediaPath): orig = os.path.join(self.tmp, vidFile) new = os.path.join(settings.MEDIA_ROOT, mediaPath, vidFile) subprocess.call(['yamdi', '-i', orig, '-o', new]) try: mf = MediaFile.objects.get(file=os.path.join(mediaPath, vidFile)) except MediaFile.DoesNotExist: mf = MediaFile(file=os.path.join(mediaPath, vidFile)) mf.save() tr = mf.get_translation() if tr == None: tr = MediaFileTranslation(parent=mf, language_code='cs') tr.caption = mark_safe(title) tr.description = mark_safe(desc) tr.save()
def bulk_upload(request): from django.core.urlresolvers import reverse from os import path if request.method == 'POST' and 'data' in request.FILES: category = None if request.POST.get('category'): category = Category.objects.get( pk=int(request.POST.get('category'))) from django.template.defaultfilters import slugify from django.core.files.base import ContentFile for uploaded_file in request.FILES.getlist('data'): fname, ext = path.splitext(uploaded_file.name) target_fname = slugify(fname) + ext.lower() mf = MediaFile() mf.file.save(target_fname, uploaded_file) mf.save() if category: mf.categories.add(category) mt = MediaFileTranslation() mt.parent = mf mt.caption = fname.replace('_', ' ') mt.save() messages.info( request, _("%d files imported") % len(request.FILES.getlist('data'))) else: messages.error(request, _("No input file given")) return HttpResponseRedirect( reverse('admin:medialibrary_mediafile_changelist'))
def MediaFileFactory(filename='filename.jpg', url='media_url'): media_file = MediaFile() media_file.file = Mock() media_file.file.name = filename media_file.file.url = url return media_file