def handle_file_preview(message): payload = message['payload'] token = payload['token'] api_init(token) env_dir = get_env_dir() file_id = payload['fileId'] env_options = { 'env_dir': env_dir, } env = setup_environment(message, env_options) print(f'> make capture {file_id}') print('env:', env) script = get_script_path('capture.py') params = { **payload, 'filename': env['file_local'][file_id], 'outputDir': env_dir, } result = rhino_run(script, params) previews = zip(payload['previews'], result['previews']) for preview, preview_file in previews: suffix = preview['viewport'] obj = f'preview/{file_id}-{suffix}.png' s3_upload('sisu', obj, preview_file) print(f'> upload to s3 {obj}', preview_file) return result
def EditProfile(request): context = {} username = request.user.username context['username'] = username user = get_object_or_404(User, username=username) if request.method == "GET": profile = user.profile_owner.all()[0] #profile = user.profile.all()[0] context['form'] = EditProfileForm(instance=profile) return render(request, 'editprofile.html', context) profile = Profile.objects.select_for_update().get(user=request.user) form = EditProfileForm(request.POST, request.FILES, instance=profile) # hren context['form'] = form if not form.is_valid(): return render(request, 'editprofile.html', context) form.save() # upload picture to s3 if form.cleaned_data['picture']: url = s3_upload(form.cleaned_data['picture'], profile.id) profile.pictureUrl = url profile.save() # print url return redirect( reverse('viewProfile') + '?username=' + request.user.username)
def comment_request_impl(args): try: author = user_from_token(args['token']) post = post_from_id(author, args['post_id']) comment = Comment(args['content']) post.comments.append(comment) author.comments.append(comment) post.add_hot(5, None) if args.has_key("picture") and args['picture'] is not None: output = s3_upload(args['picture']) url = 'https://{}.s3.amazonaws.com/{}'.format(os.environ['S3_BUCKET_NAME'], output) comment.pic = url db.session.commit() #send notification to author send_notification_for_user_commenting_on_post(device_token=post.user.device_token, user_id=author.id, user_pic=author.pic, comment_id=comment.id, nickname=author.nickname, post_id=post.id, platform=post.user.platform) return Response(True, "Comment Succeded", CommentSchema().dumps(comment).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def process_form(self, wtf, **kwargs): key = wtf.s_key.data.strip() if key == "new": return msg.err('Picture key cannot be "new".') if not key: return msg.err('Picture key name is required.') details = s3_upload(wtf.file) result = database.upsert_articlePicture(key, wtf, details) return result
def edit_profile(request): context = {} profile = get_profile(request) # Get user's profile form try: if request.method == 'GET': form = ProfileForm(instance=profile) context['form'] = form context['profile'] = profile context['threads'] = profile.threads.all() return render(request, 'edit-profile.html', context) db_update_time = profile.update_time # Copy timestamp to check after form is bound form = ProfileForm(request.POST, request.FILES, instance=profile) if not form.is_valid(): context['profile'] = profile context['form'] = form return render(request, 'edit-profile.html', context) # if update times do not match, someone else updated DB record while were editing if db_update_time != form.cleaned_data['update_time']: # refetch from DB and try again. profile = UserProfile.objects.get(user=User.objects.filter(id__exact=id)[0]) form = ProfileForm(instance=profile) context['message'] = 'Another user has modified this record. Re-enter your changes.' context['form'] = form context['profile'] = profile return render(request, 'edit-profile.html', context) # Set update info to current time and user, and save it! profile.update_time = datetime.datetime.now() if form.cleaned_data['picture']: url = s3_upload(form.cleaned_data['picture'], profile.id) form.picture = url form.save() # form = EditForm(instance=entry) context['message'] = 'Entry updated.' context['entry'] = profile context['form'] = form return redirect(reverse('home')) except UserProfile.DoesNotExist: return redirect(reverse('home')) return render(request, 'edit-profile.html', context)
def update_user_request_impl(args): try: user = user_from_token(args['token']) #name if args.has_key("picture") and args['picture'] is not None: user.name = args['name'] #friends if args.has_key("friends") and args['friends'] is not None: user.friends = args['friends'] #email if args.has_key("email") and args['email'] is not None: user.email = args['email'] #gender if args.has_key("gender") and args['gender'] is not None: user.gender = args['gender'] #device_token if args.has_key("device_token") and args['device_token'] is not None: user.device_token = args['device_token'] #platform if args.has_key("platform") and args['platform'] is not None: user.platform = args['platform'] #nickname if args.has_key("nickname") and args['nickname'] is not None: user.nickname = args['nickname'] #birthday if args.has_key("birthday") and args['birthday'] is not None: user.birthday = dateutil.parser.paser(args['birthday']) #picture if args.has_key("picture") and args['picture'] is not None: output = s3_upload(args['picture']) url = 'https://{}.s3.amazonaws.com/{}'.format(os.environ['S3_BUCKET_NAME'], output) user.pic = url db.session.commit() return Response(True,"User Updated.", MyselfSchema().dumps(user).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def post_request_impl(args): try: poster = user_from_token(args['token']) group = group_from_id(args['group_id']) user_is_a_approved_subscriber(poster, group) new_post = Post(args['content'], args['anon']) if args.has_key("picture") and args['picture'] is not None: output = s3_upload(args['picture']) url = 'https://{}.s3.amazonaws.com/{}'.format(os.environ['S3_BUCKET_NAME'], output) new_post.pic = url group.posts.append(new_post) poster.posts.append(new_post) db.session.add(new_post) db.session.commit() #notifications if new_post.anon == 1: post_auth_request_notification.delay(new_post) return Response(True, "Posted Successfully", PostSchema().dumps(new_post).data).output() except Exception as exception: return Response(False, str(exception), None).output()
def upload_page(): form = UploadForm() if form.validate_on_submit(): output = s3_upload(form.example) flash("{src} uploaded to S3 as {dst}".format(src=form.example.data.filename, dst=output)) return render_template("example.html", form=form)