예제 #1
0
def add_book():
    get_user()

    if request.method == 'POST':
        name = request.form['name']
        author = request.form['author']
        genre = request.form['genre']
        status = request.form['status']
        rating = request.form.get("star")

        image = None

        if request.files:
            image = request.files['image']
            print(image)

        error = None
        if (rating == None):
            rating = "0"

        book = Book.query.filter_by(owner_id=g.user.id).filter_by(
            name=name).first()

        if g.user is None:
            error = 'Зайдіть на свій аккаунт, щоб додати книгу.'

        elif not name or not status:
            error = 'Empty form.'

        elif book is not None:
            error = 'Книга "{}" вже зареєстрована.'.format(name)

        if error is None:
            cur_book = Book(name=name,
                            owner_id=g.user.id,
                            status=status,
                            rating=rating,
                            author=author,
                            genre=genre)
            db.session.add(cur_book)
            db.session.commit()
            if image:
                s = "images/" + str(cur_book.id)
                storage.child(s).put(image)
                i_url = storage.child(s).get_url(1)
                cur_book.image = i_url
                db.session.commit()
            return redirect(url_for('books'))

        flash(error)

    return render_template('add_book.html')
예제 #2
0
def signup():
    app.logger.debug('Enter signup function')
    sform = SignUpForm()
    if sform.validate_on_submit():
        print('valid signup form')
        username = sform.username.data
        email = sform.email.data
        password = sform.password.data
        repeatpassword = sform.repeatpassword.data
        f = sform.avtar.data
        if password == repeatpassword:
            # cache file
            print('cache file')
            filename = secure_filename(f.filename)
            filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
            f.save(filepath)
            # upload avtar
            print('upload avtar')
            storage.child("Avtars/{}".format(username)).put(filepath)
            avtar_url = storage.child(
                "Avtars/{}".format(username)).get_url(None)

            # create user
            print('create user')
            fuser = auth.create_user_with_email_and_password(email, password)
            #avtar_url=storage.child("Avtar/defaultAvtar.jpg").get_url(None)
            put_data = {
                'password': password,
                'email': email,
                'username': username,
                'id': fuser['idToken'],
                'posts': {},
                'avtar': avtar_url
            }

            db.child('Users').child(username).set(put_data)
            app.logger.debug('Sign up {} success... '.format(username))
            return redirect('home')

    for e in sform.errors:
        print(e)

    return redirect('account')
예제 #3
0
def upload_image():
    get_user()

    if request.method == 'POST':
        avatar = None

        if request.files:
            avatar = request.files['cropped_image']
            print(avatar)

        if avatar:
            s = "avatars/" + str(g.user.id)
            storage.child(s).put(avatar)
            av_url = storage.child(s).get_url(1)
            g.user.avatar = av_url
            db.session.commit()

        return redirect(url_for('my_profile'))

    return redirect(url_for('my_profile'))
예제 #4
0
파일: routes.py 프로젝트: shreyanshp/applog
def upload():

    #check session
    project_name = session.get('project_name')
    print("project_name", project_name)
    if project_name in beta_project:
        pass
    else:
        flash("現在テストユーザーしか使えません")
        return redirect(url_for('project'))

    if request.method == "POST":
        print("check")
        if request.form:
            data = request.form
            screen_id = str(uuid.uuid4())
            screen_name = data["screen_name"]
            screen_category = data["screen_category"]
            image = request.files["screen_image_name"]
            image.filename = screen_id
            log = []

            d = datetime.datetime.now()
            created_at = json.dumps({"unixtime": d.timestamp()})

            screen = {
                "screen_id": screen_id,
                "screen_name": screen_name,
                "screen_category": screen_category,
                "created_at": created_at,
                "log": []
            }

            db.child(project_name + "/" + screen_id).set(screen)
            storage.child("image/" + screen_id).put(image)

            flash("新しいスクリーンが追加されました")

    return render_template("upload.html")
예제 #5
0
def pushpost():
    pform = PostPushForm()
    app.logger.debug('Pushpost request')
    if pform.validate_on_submit():
        username = session['username']
        # recieve post
        app.logger.debug('Valid post push')
        context = pform.context.data

        print('get context:\n{}'.format(context))
        f = pform.photo.data
        filename = secure_filename(f.filename)
        print('get filename:\n{}'.format(filename))

        filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        f.save(filepath
               )  # TODO either implement my put or delete file after upload

        #push post
        new_post = {
            'pic_url': "",
            'context': context,
            'author': username,
            'liker': {},
            'time': datetime.now().strftime('%Y-%m-%d %H:%M')
        }
        post_id = db.child('Posts/').push(new_post)

        storage.child("Posts/{}".format(post_id['name'])).put(filepath)
        pic_url = storage.child("Posts/{}".format(
            post_id['name'])).get_url(None)
        db.child('Posts/{}'.format(post_id['name'])).update(
            {"pic_url": pic_url})

        db.child('Users/{}/posts/{}'.format(username,
                                            post_id['name'])).set(True)

    return redirect(url_for('home'))
예제 #6
0
def profile():
    avatar="/static/avatar.jpg"
    user = User.query.filter_by(username=current_user.username).first_or_404()
    posts = user.posts.order_by(Post.timestamp.desc())
    # Made the profile a variable, so you can change your profile picture when you want.

    user_information = {
        "user_name": "Jon Doe",
        "profile_picture": "https://pbs.twimg.com/profile_images/502988973052932096/nvkFAZdJ_400x400.jpeg",
        "bio": "This is my bio",
        "posts": {
            1: {
                "body": "text",
                "image": "https://static01.nyt.com/images/2012/05/07/nyregion/PACKER2/PACKER2-jumbo.jpg"
            },
            2: {
                "body": "text2",
                "image": "http://www.nycago.org/Organs/Bkln/img/PackerInstInt1902.jpg"
            }
        }
    }

    if request.method == 'POST':
        picture = request.files['picture']
        temp = tempfile.NamedTemporaryFile(delete=False)
        picture.save(temp.name)
        storage.child("images/test.jpg").put(temp.name)
        os.remove(temp.name)
        link = storage.child("images/test.jpg").get_url(None)
        avatar=link
        return render_template('profile.html', avatar=link, link=link, user_information=user_information)

    else:
        avatar="/static/avatar.jpg"
        samplebio="samplebio"
        return render_template("profile.html", avatar=avatar, user_information=user_information, samplebio=samplebio, user=user)
예제 #7
0
파일: routes.py 프로젝트: shreyanshp/applog
def screen():

    #check session
    project_name = session.get('project_name')
    if project_name in beta_project:
        pass
    else:
        flash("現在テストユーザーしか使えません")
        return redirect(url_for('project'))

    searchbar = request.args.get('searchbar', '')

    if searchbar == "":
        try:
            data = db.child(project_name).get()
            if data.each() is None:
                render_all_screen_sorted = ""

            else:
                render_all_screens = []
                for screen in data.each():
                    render_screen = {
                        "screen_id":
                        screen.val()["screen_id"],
                        "screen_name":
                        screen.val()["screen_name"],
                        "created_at":
                        screen.val()["created_at"],
                        "screen_image_name":
                        storage.child("image/" +
                                      screen.val()["screen_id"]).get_url(None)
                    }
                    render_all_screens.append(render_screen)

                render_all_screen_sorted = sorted(
                    render_all_screens,
                    key=lambda x: x['created_at'],
                    reverse=True)

        except ConnectionError:
            abort(404)
            flash("Unexpected error contact Yuki")
    else:
        print(searchbar)
        try:
            data = db.child(project_name).get()
            if data.each() is None:
                render_all_screen_sorted = ""

            else:
                render_all_screens = []
                for screen in data.each():
                    if re.search(searchbar,
                                 screen.val()["screen_name"], re.IGNORECASE):
                        render_screen = {
                            "screen_id":
                            screen.val()["screen_id"],
                            "screen_name":
                            screen.val()["screen_name"],
                            "created_at":
                            screen.val()["created_at"],
                            "screen_image_name":
                            storage.child("image/" +
                                          screen.val()["screen_id"]).get_url(
                                              None)
                        }
                        render_all_screens.append(render_screen)

                render_all_screen_sorted = sorted(
                    render_all_screens,
                    key=lambda x: x['created_at'],
                    reverse=True)

        except ConnectionError:
            abort(404)
            flash("Unexpected error contact Yuki")

    return render_template("screen.html", screens=render_all_screen_sorted)
예제 #8
0
파일: routes.py 프로젝트: shreyanshp/applog
def log(screen_id):

    #no check session
    project_name = session.get('project_name')
    if project_name is None:
        return redirect(url_for('signin', screen_id=screen_id))

    # check if other screen
    if screen_id == "project":
        return redirect(url_for('project'))
    elif screen_id == "screen":
        return redirect(url_for('screen'))
    elif screen_id == "upload":
        return redirect(url_for('upload'))

    if request.method == "POST":
        data = request.get_json()
        screen_id = data.pop("screen_id")

        d = datetime.datetime.now()
        data["created_at"] = json.dumps({"unixtime": d.timestamp()})

        db.child(project_name + "/" + screen_id + "/log").push(data)
        return Response(response=json.dumps(data), status=200)
        #redirect(request.url)

    render_logs = []
    data = db.child(project_name + "/" + screen_id + "/log").get().val()
    if data is None:
        logs = []
    else:
        logs = db.child(project_name + "/" + screen_id + "/log").get()

        for log in logs.each():
            key = log.key()
            val = log.val()
            val["log_id"] = key

            if "log_cursor" not in val:
                val["log_cursor"] = {"x": 430, "y": 150}

            render_logs.append(val)

    image = storage.child("image/" + screen_id).get_url(None)

    render_logs_sorted = sorted(render_logs, key=lambda x: x['created_at'])

    count = 0
    render_logs_sorted_with_id = []
    for log in render_logs_sorted:
        count = count + 1
        log["log_num"] = count
        render_logs_sorted_with_id.append(log)

    #get screen name and add it to the log
    screen_data = db.child(project_name + "/" + screen_id).get().val()
    if screen_data is None:
        flash("You jumped into a different project please sign in again")
        session.pop('project_name', None)
        return redirect(url_for('project'))
    screen_name = screen_data["screen_name"]

    return render_template('log.html',
                           logs=render_logs_sorted_with_id,
                           image=image,
                           screen_id=screen_id,
                           screen_name=screen_name)