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