def tinymce_fb(request, template_name="files/templates/tinymce_fb.html"): """ Get a list of files (images) for tinymce file browser. """ query = u'' try: page_num = int(request.GET.get('page', 1)) except: page_num = 1 form = FileSearchMinForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q', '') filters = get_query_filters(request.user, 'files.view_file') files = File.objects.filter(filters).distinct().order_by('-create_dt') type = request.GET.get('type', '') if type == 'image': files = files.filter(f_type='image') elif type == 'media': files = files.filter(f_type='video') if query: files = files.filter(Q(file__icontains=query)| Q(name__icontains=query)) paginator = Paginator(files, 10) files = paginator.page(page_num) return render_to_response( template_name, { "files": files, 'page_num': page_num, 'page_range': paginator.page_range, 'csrf_token': csrf_get_token(request), 'can_upload_file': has_perm(request.user, 'files.add_file') }, context_instance=RequestContext(request))
def tinymce_fb(request, template_name="files/templates/tinymce_fb.html"): """ Get a list of files (images) for tinymce file browser. """ query = u'' try: page_num = int(request.GET.get('page', 1)) except: page_num = 1 form = FileSearchMinForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q', '') filters = get_query_filters(request.user, 'files.view_file') files = File.objects.filter(filters).distinct().order_by('-create_dt') type = request.GET.get('type', '') if type == 'image': files = files.filter(f_type='image') elif type == 'media': files = files.filter(f_type='video') if query: files = files.filter( Q(file__icontains=query) | Q(name__icontains=query)) paginator = Paginator(files, 10) files = paginator.page(page_num) return render_to_response( template_name, { "files": files, 'page_num': page_num, 'page_range': paginator.page_range, 'csrf_token': csrf_get_token(request), 'can_upload_file': has_perm(request.user, 'files.add_file') }, context_instance=RequestContext(request))
def tinymce_fb(request, template_name="files/templates/tinymce_fb.html"): """ Get a list of files (images) for tinymce file browser. """ query = u'' try: page_num = int(request.GET.get('page', 1)) except: page_num = 1 form = FileSearchMinForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q', '') #filters = get_query_filters(request.user, 'files.view_file') files = File.objects.all() if not request.user.is_superuser: # non-admin: show only those images uploaded by this user files = files.filter(Q(creator=request.user) | Q(owner=request.user)) files = files.order_by('-create_dt') type = request.GET.get('type', '') if type == 'image': files = files.filter(f_type='image') elif type == 'media': files = files.filter(f_type='video') if query: files = files.filter( Q(file__icontains=query) | Q(name__icontains=query)) paginator = Paginator(files, 10) files = paginator.page(page_num) return render_to_resp(request=request, template_name=template_name, context={ "files": files, 'q': query, 'page_num': page_num, 'page_range': paginator.page_range, 'csrf_token': csrf_get_token(request), 'can_upload_file': has_perm(request.user, 'files.add_file') })
def tinymce(request, template_name="files/templates/tinymce.html"): """ TinyMCE Insert/Edit images [Window] Passes in a list of files associated w/ "this" object Examples of "this": Articles, Pages, Releases module """ from django.contrib.contenttypes.models import ContentType params = {'app_label': 0, 'model': 0, 'instance_id': 0} files = File.objects.none() # EmptyQuerySet all_files = File.objects.order_by('-create_dt') paginator = Paginator(all_files, 10) all_media = paginator.page(1) # if all required parameters are in the GET.keys() list if not set(params.keys()) - set(request.GET.keys()): for item in params: params[item] = request.GET[item] try: # get content type contenttype = ContentType.objects.get(app_label=params['app_label'], model=params['model']) instance_id = params['instance_id'] if instance_id == 'undefined': instance_id = 0 files = File.objects.filter( content_type=contenttype, object_id=instance_id ) for media_file in files: file, ext = os.path.splitext(media_file.file.url) media_file.file.url_thumbnail = '%s_thumbnail%s' % (file, ext) media_file.file.url_medium = '%s_medium%s' % (file, ext) media_file.file.url_large = '%s_large%s' % (file, ext) except ContentType.DoesNotExist: raise Http404 return render_to_response( template_name, { "media": files, "all_media": all_media, 'csrf_token': csrf_get_token(request), }, context_instance=RequestContext(request))
def tinymce(request, template_name="files/templates/tinymce.html"): """ TinyMCE Insert/Edit images [Window] Passes in a list of files associated w/ "this" object Examples of "this": Articles, Pages, Releases module """ from django.contrib.contenttypes.models import ContentType params = {'app_label': 0, 'model': 0, 'instance_id': 0} files = File.objects.none() # EmptyQuerySet all_files = File.objects.order_by('-create_dt') paginator = Paginator(all_files, 10) all_media = paginator.page(1) # if all required parameters are in the GET.keys() list if not set(params.keys()) - set(request.GET.keys()): for item in params: params[item] = request.GET[item] try: # get content type contenttype = ContentType.objects.get(app_label=params['app_label'], model=params['model']) instance_id = params['instance_id'] if instance_id == 'undefined': instance_id = 0 files = File.objects.filter( content_type=contenttype, object_id=instance_id ) for media_file in files: file, ext = os.path.splitext(media_file.file.url) media_file.file.url_thumbnail = '%s_thumbnail%s' % (file, ext) media_file.file.url_medium = '%s_medium%s' % (file, ext) media_file.file.url_large = '%s_large%s' % (file, ext) except ContentType.DoesNotExist: raise Http404 return render_to_response( template_name, { "media": files, "all_media": all_media, 'csrf_token': csrf_get_token(request), }, context_instance=RequestContext(request))
def photos_batch_add(request, photoset_id=0): """ params: request, photoset_id returns: HttpResponse """ from tendenci.libs.uploader import uploader # photoset permission required to add photos if not has_perm(request.user, 'photos.add_photoset'): raise Http403 if request.method == 'POST': def callback(file_path, uuid, request=request, photoset_id=photoset_id): handle_uploaded_photo(request, photoset_id, file_path) return uploader.post(request, callback) else: if not photoset_id: HttpResponseRedirect(reverse('photoset_latest')) photo_set = get_object_or_404(PhotoSet, id=photoset_id) photo_limit = get_setting('module', 'photos', 'photolimit') try: photo_limit = int(photo_limit) except ValueError: # default limit for photo set images 150 photo_limit = 150 image_slot_left = photo_limit - photo_set.image_set.count() # show the upload UI return render_to_resp(request=request, template_name='photos/batch-add.html', context={ "photoset_id": photoset_id, "photo_set": photo_set, "csrf_token": csrf_get_token(request), "image_slot_left": image_slot_left, })
def tinymce_fb(request, template_name="files/templates/tinymce_fb.html"): """ Get a list of files (images) for tinymce file browser. """ query = u'' try: page_num = int(request.GET.get('page', 1)) except: page_num = 1 form = FileSearchMinForm(request.GET) if form.is_valid(): query = form.cleaned_data.get('q', '') #filters = get_query_filters(request.user, 'files.view_file') files = File.objects.all() if not request.user.is_superuser: # non-admin: show only those images uploaded by this user files = files.filter(Q(creator=request.user) | Q(owner=request.user)) files = files.order_by('-create_dt') type = request.GET.get('type', '') if type == 'image': files = files.filter(f_type='image') elif type == 'media': files = files.filter(f_type='video') if query: files = files.filter(Q(file__icontains=query)| Q(name__icontains=query)) paginator = Paginator(files, 10) files = paginator.page(page_num) return render_to_resp( request=request, template_name=template_name, context={ "files": files, 'q': query, 'page_num': page_num, 'page_range': paginator.page_range, 'csrf_token': csrf_get_token(request), 'can_upload_file': has_perm(request.user, 'files.add_file') })
def photos_batch_add(request, photoset_id=0): """ params: request, photoset_id returns: HttpResponse """ from tendenci.libs.uploader import uploader # photoset permission required to add photos if not has_perm(request.user, 'photos.add_photoset'): raise Http403 if request.method == 'POST': def callback(file_path, uuid, request=request, photoset_id=photoset_id): handle_uploaded_photo(request, photoset_id, file_path) return uploader.post(request, callback) else: if not photoset_id: HttpResponseRedirect(reverse('photoset_latest')) photo_set = get_object_or_404(PhotoSet, id=photoset_id) photo_limit = get_setting('module', 'photos', 'photolimit') try: photo_limit = int(photo_limit) except ValueError: # default limit for photo set images 150 photo_limit = 150 image_slot_left = photo_limit - photo_set.image_set.count() # show the upload UI return render_to_response('photos/batch-add.html', { "photoset_id": photoset_id, "photo_set": photo_set, "csrf_token": csrf_get_token(request), "image_slot_left": image_slot_left, }, context_instance=RequestContext(request))
def photos_batch_add(request, photoset_id=0): """ params: request, photoset_id returns: HttpResponse on flash request: photoset_id is passed via request.POST and received as type unicode; i convert to type integer on http request: photoset_id is passed via url """ import uuid from tendenci.core.perms.object_perms import ObjectPermission # photoset permission required to add photos if not has_perm(request.user, 'photos.add_photoset'): raise Http403 if request.method == 'POST': for field_name in request.FILES: uploaded_file = request.FILES[field_name] # use file to create title; remove extension filename, extension = os.path.splitext(uploaded_file.name) request.POST.update({'title': filename, }) # clean filename; alphanumeric with dashes filename = re.sub(r'[^a-zA-Z0-9._]+', '-', filename) # truncate; make unique; append extension request.FILES[field_name].name = \ filename[:70] + '-' + unicode(uuid.uuid1())[:5] + extension # photoset_id set in swfupload photoset_id = int(request.POST["photoset_id"]) request.POST.update({ 'owner': request.user.id, 'owner_username': unicode(request.user), 'creator_username': unicode(request.user), 'status': True, 'status_detail': 'active', }) photo_form = PhotoUploadForm(request.POST, request.FILES, user=request.user) if photo_form.is_valid(): # save photo photo = photo_form.save(commit=False) photo.creator = request.user photo.member = request.user photo.safetylevel = 3 photo.allow_anonymous_view = True photo.position = 0 # update all permissions and save the model photo = update_perms_and_save(request, photo_form, photo) EventLog.objects.log(**{ 'event_id': 990100, 'event_data': '%s (%d) added by %s' % (photo._meta.object_name, photo.pk, request.user), 'description': '%s added' % photo._meta.object_name, 'user': request.user, 'request': request, 'instance': photo, }) # add to photo set if photo set is specified if photoset_id: photo_set = get_object_or_404(PhotoSet, id=photoset_id) photo_set.image_set.add(photo) privacy = get_privacy_settings(photo_set) # photo privacy = album privacy for k, v in privacy.items(): setattr(photo, k, v) photo.save() # photo group perms = album group perms group_perms = photo_set.perms.filter(group__isnull=False).values_list('group', 'codename') group_perms = tuple([(unicode(g), c.split('_')[0]) for g, c in group_perms]) ObjectPermission.objects.assign_group(group_perms, photo) # serialize queryset data = serializers.serialize("json", Image.objects.filter(id=photo.id)) cache_image = Popen(["python", "manage.py", "precache_photo", str(photo.pk)]) # returning a response of "ok" (flash likes this) # response is for flash, not humans return HttpResponse(data, mimetype="text/plain") else: return HttpResponse("photo is not valid", mimetype="text/plain") else: if not photoset_id: HttpResponseRedirect(reverse('photoset_latest')) photo_set = get_object_or_404(PhotoSet, id=photoset_id) # current limit for photo set images is hard coded to 50 image_slot_left = 150 - photo_set.image_set.count() # show the upload UI return render_to_response('photos/batch-add.html', { "photoset_id": photoset_id, "photo_set": photo_set, "csrf_token": csrf_get_token(request), "image_slot_left": image_slot_left, }, context_instance=RequestContext(request))
def photos_batch_add(request, photoset_id=0): """ params: request, photoset_id returns: HttpResponse on flash request: photoset_id is passed via request.POST and received as type unicode; i convert to type integer on http request: photoset_id is passed via url """ import uuid from django.db.models import Max from tendenci.core.perms.object_perms import ObjectPermission # photoset permission required to add photos if not has_perm(request.user, 'photos.add_photoset'): raise Http403 if request.method == 'POST': for field_name in request.FILES: uploaded_file = request.FILES[field_name] # use file to create title; remove extension filename, extension = os.path.splitext(uploaded_file.name) request.POST.update({ 'title': filename, }) # clean filename; alphanumeric with dashes filename = re.sub(r'[^a-zA-Z0-9._]+', '-', filename) # truncate; make unique; append extension request.FILES[field_name].name = \ filename[:70] + '-' + unicode(uuid.uuid1())[:5] + extension # photoset_id set in swfupload photoset_id = int(request.POST["photoset_id"]) request.POST.update({ 'owner': request.user.id, 'owner_username': unicode(request.user), 'creator_username': unicode(request.user), 'status': True, 'status_detail': 'active', }) photo_form = PhotoUploadForm(request.POST, request.FILES, user=request.user) if photo_form.is_valid(): # save photo photo = photo_form.save(commit=False) photo.creator = request.user photo.member = request.user photo.safetylevel = 3 photo.allow_anonymous_view = True position_max = Image.objects.filter( photoset=photoset_id).aggregate( Max('position'))['position__max'] or 0 photo.position = position_max + 1 # update all permissions and save the model photo = update_perms_and_save(request, photo_form, photo) EventLog.objects.log( **{ 'event_id': 990100, 'event_data': '%s (%d) added by %s' % (photo._meta.object_name, photo.pk, request.user), 'description': '%s added' % photo._meta.object_name, 'user': request.user, 'request': request, 'instance': photo, }) # add to photo set if photo set is specified if photoset_id: photo_set = get_object_or_404(PhotoSet, id=photoset_id) photo_set.image_set.add(photo) privacy = get_privacy_settings(photo_set) # photo privacy = album privacy for k, v in privacy.items(): setattr(photo, k, v) photo.save() # photo group perms = album group perms group_perms = photo_set.perms.filter( group__isnull=False).values_list('group', 'codename') group_perms = tuple([(unicode(g), c.split('_')[0]) for g, c in group_perms]) ObjectPermission.objects.assign_group(group_perms, photo) # serialize queryset data = serializers.serialize("json", Image.objects.filter(id=photo.id)) cache_image = Popen( ["python", "manage.py", "precache_photo", str(photo.pk)]) # returning a response of "ok" (flash likes this) # response is for flash, not humans return HttpResponse(data, mimetype="text/plain") else: return HttpResponse("photo is not valid", mimetype="text/plain") else: if not photoset_id: HttpResponseRedirect(reverse('photoset_latest')) photo_set = get_object_or_404(PhotoSet, id=photoset_id) # current limit for photo set images is hard coded to 50 image_slot_left = 150 - photo_set.image_set.count() # show the upload UI return render_to_response('photos/batch-add.html', { "photoset_id": photoset_id, "photo_set": photo_set, "csrf_token": csrf_get_token(request), "image_slot_left": image_slot_left, }, context_instance=RequestContext(request))