Exemple #1
0
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
Exemple #2
0
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)
Exemple #3
0
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()
Exemple #4
0
 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
Exemple #5
0
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)
Exemple #6
0
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()
Exemple #7
0
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)