def project_new(): """プロジェクト: 新規作成""" basic_form = ProjectBasicForm(request.form) if basic_form.validate_on_submit(): project_ = converter.project_form_to_api_project(basic_form) project_api = sw.ProjectApi(g.api) project_ = project_api.projects_post(project_) flash('プロジェクトを登録しました', category='info') return redirect_(url_for('creator.project_edit_basic', project_id=project_.id)) utils.flash_errors(basic_form) return render_template('creator_project_new.html', basic_form=basic_form)
def project_edit_detail(project_id): """プロジェクト(詳細): 編集""" detail_form = ProjectDetailForm(request.form) project_api = sw.ProjectApi(g.api) if detail_form.validate_on_submit(): project_ = converter.project_detail_form_to_api_project(detail_form=detail_form) project_api.projects_project_id_put(project_id=project_id, project=project_) flash('プロジェクト(詳細情報)を更新しました', category='info') utils.flash_errors(detail_form) project_ = project_api.projects_project_id_get(project_id=project_id) detail_form = converter.api_project_to_project_detail_form(project_) return render_template('creator_project_edit_detail.html', title="Edit Project", project=project_, detail_form=detail_form, image_form=ImageForm(), media_form=MediaForm())
def project_edit_item_question(project_id, item_id): question_form = ProjectItemQuestionForm(request.form) if question_form.validate_on_submit(): project_api = sw.ProjectApi(g.api) question = converter.item_question_form_to_api_item_question(question_form=question_form) if question.id: project_api.projects_project_id_items_item_id_questions_question_id_put(project_id=project_id, item_id=item_id, question_id=question.id, project_item_question=question) flash('アイテム質問を更新しました', category='info') else: project_api.projects_project_id_items_item_id_questions_post(project_id=project_id, item_id=item_id, project_item_question=question) flash('アイテム質問を追加しました', category='info') utils.flash_errors(question_form) return redirect_(url_for('creator.project_edit_item', project_id=project_id, item_id=item_id))
def project_edit_basic(project_id): """プロジェクト(基本情報): 編集""" basic_form = ProjectBasicForm(request.form) project_api = sw.ProjectApi(g.api) if 'image' in request.files and request.files['image'].filename: image = request.files['image'] if image.content_length < 1048577: # 画像は1MB制限 file_path = utils.upload_file_to_s3(prefix='project', file=image) project_ = sw.Project() project_.image = file_path project_api.projects_project_id_put(project_id=project_id, project=project_) else: flash('画像は1MB以下にしてください', category='error') elif basic_form.validate_on_submit(): project_ = converter.project_form_to_api_project(basic_form) project_api.projects_project_id_put(project_id=project_id, project=project_) flash('プロジェクト(基本情報)を更新しました', category='info') utils.flash_errors(basic_form) project_ = project_api.projects_project_id_get(project_id=project_id) basic_form = converter.api_project_to_project_form(project_) return render_template('creator_project_edit_basic.html', title="Edit Project", project=project_, basic_form=basic_form)
def project_edit_item(project_id): """プロジェクト(アイテム): 編集""" item_id = int(request.args.get('item_id')) if 'item_id' in request.args else None item_form = ProjectItemForm(request.form) project_api = sw.ProjectApi(g.api) if 'image' in request.files and request.files['image'].filename: image = request.files['image'] if image.content_length < 1048577: # 画像は1MB制限 file_path = utils.upload_file_to_s3(prefix='item', file=image) item = sw.ProjectItem() item.image = file_path project_api.projects_project_id_items_item_id_put(project_id=project_id, item_id=item_id, project_item=item) else: flash('画像は1MB以下にしてください', category='error') elif item_form.validate_on_submit(): item = converter.item_form_to_api_item(item_form) if item_id: project_api.projects_project_id_items_item_id_put(project_id=project_id, item_id=item_id, project_item=item) flash('アイテムを更新しました', category='info') else: project_api.projects_project_id_items_post(project_id=project_id, project_item=item) flash('アイテムを追加しました', category='info') return redirect_(url_for('creator.project_edit_item', project_id=project_id)) utils.flash_errors(item_form) project_api = sw.ProjectApi(g.api) project_ = project_api.projects_project_id_get(project_id=project_id) if not project_.id: return abort(404) items = project_api.projects_project_id_items_get(project_id=project_id) item_form = ProjectItemForm() questions_ = None if item_id: item_ = project_api.projects_project_id_items_item_id_get(project_id=project_id, item_id=item_id) item_form = converter.api_item_to_project_item_form(item_) questions_ = project_api.projects_project_id_items_item_id_questions_get(project_id=project_id, item_id=item_id) return render_template('creator_project_edit_item.html', title="Edit Project", item_id=item_id, project=project_, items=items, item_form=item_form, questions=questions_, question_form=ProjectItemQuestionForm(), form=DeleteForm())
def project_report(project_id): """プロジェクト: 活動報告""" report_id = int(request.args.get('report_id')) if 'report_id' in request.args else None report_form = ProjectReportForm(request.form) if report_form.validate_on_submit(): project_api = sw.ProjectApi(g.api) report_ = converter.report_form_to_api_report(report_form) if report_id: project_api.projects_project_id_reports_report_id_put(project_id=project_id, report_id=report_id, project_report=report_) flash('レポートを更新しました', category='info') else: project_api.projects_project_id_reports_post(project_id=project_id, project_report=report_) flash('レポートを追加しました', category='info') return redirect_(url_for('creator.project', project_id=project_id)) utils.flash_errors(report_form) project_api = sw.ProjectApi(api_client=g.api) project_ = project_api.projects_project_id_get(project_id=project_id) if report_id: report = project_api.projects_project_id_reports_report_id_get(project_id=project_id, report_id=report_id) report_form = converter.api_report_to_report_form(report) return render_template('creator_project_report.html', project=project_, form=report_form, report_id=report_id, form_image=ImageForm(), form_media=MediaForm())
def project_edit_faq(project_id): """プロジェクト(FAQ): 編集""" faq_id = int(request.args.get('faq_id')) if 'faq_id' in request.args else None faq_form = ProjectFaqForm(request.form) project_api = sw.ProjectApi(g.api) if faq_form.validate_on_submit(): faq = converter.project_faq_form_to_api_project_faq(faq_form=faq_form) if faq_id: project_api.projects_project_id_faqs_faq_id_put(project_id=project_id, faq_id=faq_id, project_faq=faq) flash('FAQを更新しました', category='info') else: project_api.projects_project_id_faqs_post(project_id=project_id, project_faq=faq) flash('FAQを追加しました', category='info') return redirect_(url_for('creator.project_edit_faq', project_id=project_id)) utils.flash_errors(faq_form) project_ = project_api.projects_project_id_get(project_id=project_id) project_faqs = project_api.projects_project_id_faqs_get(project_id=project_id) if faq_id: faq = project_api.projects_project_id_faqs_faq_id_get(project_id=project_id, faq_id=faq_id) faq_form = converter.api_project_faq_to_project_faq_form(faq) return render_template('creator_project_edit_faq.html', title="Edit Project", project=project_, project_faqs=project_faqs, faq_id=faq_id, faq_form=faq_form, form=DeleteForm())
def profile_edit() -> Response: """プロフィール編集""" my_api = sw.MyApi(api_client=g.api) profile_ = my_api.my_profile_get() basic_form = ProfileBasicForm(request.form) mail_form = MailMagazineForm(request.form) creator_form = CreatorProfileForm(request.form) password_form = CreatorPasswordForm(request.form) if request.method == 'POST': if basic_form.basic_submit.data and basic_form.validate_on_submit(): profile_.nickname = basic_form.nickname.data profile_.introduction = basic_form.profile.data my_api.my_profile_put(user=profile_) flash('プロフィールを更新しました', category='info') elif mail_form.mail_submit.data and mail_form.validate_on_submit(): for category in ['news', 'project', 'favorite']: mail_magazine = sw.MailMagazine() mail_magazine.category = category mail_magazine.checked = mail_form[category].data my_api.my_email_put(mail_magazine=mail_magazine) flash('メルマガ設定を更新しました', category='info') elif creator_form.creator_submit.data and creator_form.validate_on_submit( ): profile_.email = creator_form.email.data profile_.facebook = creator_form.facebook.data profile_.twitter = creator_form.twitter.data profile_.link = creator_form.link.data try: my_api.my_profile_put(user=profile_) flash('クリエイター情報を更新しました', category='info') except ApiException as ex: current_app.logger.warning('creator profile error: %s', ex) flash('クリエイター情報の更新に失敗しました', category='error') elif password_form.password_submit.data and password_form.validate_on_submit( ): # TODO パスワードの更新 print(password_form.data) flash('パスワードを更新しました', category='info') utils.flash_errors(basic_form) utils.flash_errors(mail_form) utils.flash_errors(creator_form) utils.flash_errors(password_form) return redirect_(url_for('front.profile_edit')) else: if 'profile_image' in session and utils.profile_tmp_image_is_not_exists( session['profile_image']): utils.delete_profile_tmp_image(session['profile_image']) session.pop('profile_image') profile_ = my_api.my_profile_get() basic_form.nickname.data = profile_.nickname basic_form.profile.data = profile_.introduction emails_ = my_api.my_email_get() for email in emails_: mail_form[email.category].data = email.checked creator_form.email.data = profile_.email creator_form.facebook.data = profile_.facebook creator_form.twitter.data = profile_.twitter creator_form.link.data = profile_.link return render_template('profile_edit.html', profile=profile_, image_form=ImageForm(), basic_form=basic_form, mail_form=mail_form, creator_form=creator_form, password_form=password_form)