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')
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')
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'))
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")
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'))
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)
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)
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)