def register_user(): """포토로그 사용자 등록을 위한 함수""" form = RegisterForm(request.form) if form.validate(): username = form.username.data email = form.email.data password = form.password.data try: user = User(username, email, generate_password_hash(password)) dao.add(user) dao.commit() Log.debug(user) except Exception as e: error = "DB error occurs : " + str(e) Log.error(error) dao.rollback() raise e else: # 성공적으로 사용자 등록이 되면, 로그인 화면으로 이동. return redirect(url_for('.login', regist_username=username)) else: return render_template('regist.html', form=form)
def upload_photo(): """ Form으로 파일과 변수들을 DB에 저장하는 함수. """ form = PhotoUploadForm(request.form) # HTTP POST로 요청이 오면 사용자 정보를 등록 if form.validate(): #: Session에 저장된 사용자 정보를 셋팅 user_id = session['user_info'].id username = session['user_info'].username #: Form으로 넘어온 변수들의 값을 셋팅함 tag = form.tag.data comment =form.comment.data lat = form.lat.data lng = form.lng.data upload_date = datetime.today() try: #: Exif에서 전달받은 data 형식을 파이썬 date 객체로 변환 taken_date = datetime.strptime(form.taken_date.data, "%Y:%m:%d %H:%M:%S") except : #: date 포맷 예외 발생: exif가 없거나, #: 사진찍은 시간이 없는 경우에는 현재시간으로 대체 taken_date = datetime.today() #: 업로드되는 파일정보 값들을 셋팅한다. upload_photo = request.files['photo'] filename = None filesize = 0 filename_orig = upload_photo.filename try: #: 파일 확장자 검사 : 현재 jpg, jpeg만 가능 if upload_photo and __allowed_file(upload_photo.filename): ext = (upload_photo.filename).rsplit('.', 1)[1] #: 업로드 폴더 위치는 얻는다. upload_folder = \ os.path.join(current_app.root_path, current_app.config['UPLOAD_FOLDER']) #: 유일하고 안전한 파일명을 얻는다. filename = \ secure_filename(username + '_' + unicode(uuid.uuid4()) + "." + ext) upload_photo.save(os.path.join(upload_folder, filename)) filesize = \ os.stat(upload_folder + filename).st_size #: 썸네일을 만든다. make_thumbnails(filename) else: raise Exception("File upload error : illegal file.") except Exception as e: Log.error(str(e)) raise e try : #: 사진에 대한 정보 DB에 저장 photo = Photo(user_id, tag, comment, filename_orig, filename, filesize, lat, lng, upload_date, taken_date) dao.add(photo) dao.commit() except Exception as e: dao.rollback() Log.error("Upload DB error : " + str(e)) raise e return redirect(url_for('.show_all')) else: return render_template('upload.html', form=form)