def handle_uploaded_photo(request, photoset_id, file_path): import uuid from django.core.files import File from django.db.models import Max from tendenci.apps.perms.object_perms import ObjectPermission photo = Image() # use file name to create title; remove extension filename, extension = os.path.splitext(os.path.basename(file_path)) photo.title = filename # clean filename; alphanumeric with dashes filename = re.sub(r'[^a-zA-Z0-9._]+', '-', filename) # truncate; make unique; append extension filename = filename[:70] + '-' + str(uuid.uuid4())[:5] + extension photo.image.save(filename, File(open(file_path, 'rb'))) position_max = Image.objects.filter(photoset=photoset_id).aggregate( Max('position'))['position__max'] or 0 photo.position = position_max + 1 photo.status = True photo.status_detail = 'active' photo.member = request.user photo.safetylevel = 3 photo.is_public = True photo.allow_anonymous_view = True # Can't use update_perms_and_save() here since we don't have a form #photo = update_perms_and_save(request, photo_form, photo) photo.creator = request.user photo.creator_username = request.user.username photo.owner = request.user photo.owner_username = request.user.username photo.allow_user_view = False photo.allow_user_edit = False photo.allow_member_view = False photo.allow_member_edit = False photo.save() assign_files_perms(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([(str(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)) Popen([python_executable(), "manage.py", "precache_photo", str(photo.pk)])
def handle_uploaded_photo(request, photoset_id, file_path): import uuid from django.core.files import File from django.db.models import Max from tendenci.apps.perms.object_perms import ObjectPermission photo = Image() # use file name to create title; remove extension filename, extension = os.path.splitext(os.path.basename(file_path)) photo.title = filename # clean filename; alphanumeric with dashes filename = re.sub(r'[^a-zA-Z0-9._]+', '-', filename) # truncate; make unique; append extension filename = filename[:70] + '-' + unicode(uuid.uuid1())[:5] + extension photo.image.save(filename, File(open(file_path, 'rb'))) position_max = Image.objects.filter( photoset=photoset_id).aggregate(Max('position'))['position__max'] or 0 photo.position = position_max + 1 photo.status = True photo.status_detail = 'active' photo.member = request.user photo.safetylevel = 3 photo.is_public = True photo.allow_anonymous_view = True # Can't use update_perms_and_save() here since we don't have a form #photo = update_perms_and_save(request, photo_form, photo) photo.creator = request.user photo.creator_username = request.user.username photo.owner = request.user photo.owner_username = request.user.username photo.allow_user_view = False photo.allow_user_edit = False photo.allow_member_view = False photo.allow_member_edit = False photo.save() assign_files_perms(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_executable(), "manage.py", "precache_photo", str(photo.pk)])