Exemplo n.º 1
0
def moon_create():
    cset = CalendarSetting.query.get(1)
    if cset.finalized is True:
        flash("The calendar is finalized. You can't add new moons.", "danger")
        return redirect(url_for('calendar.settings'))

    heading = "Create New Moon"
    form = MoonForm()
    form.submit.label.text = "Create Moon"

    if form.validate_on_submit():
        new_moon = Moon(name=form.name.data,
                        description=form.description.data,
                        phase_length=form.phase_length.data,
                        phase_offset=form.phase_offset.data,
                        waxing_color=stretch_color(form.waxing_color.data.hex),
                        waning_color=stretch_color(form.waning_color.data.hex))

        db.session.add(new_moon)
        db.session.commit()

        flash("Moon added.", "success")
        return redirect(url_for("calendar.settings"))

    return render_template("calendar/form.html",
                           form=form,
                           heading=heading,
                           title=page_title("Add Moon"))
Exemplo n.º 2
0
def moon_edit(id):
    heading = "Edit Moon"
    form = MoonForm()
    form.submit.label.text = "Save Moon"

    moon = Moon.query.filter_by(id=id).first_or_404()

    if form.validate_on_submit():
        moon.name = form.name.data
        moon.description = form.description.data
        moon.phase_length = form.phase_length.data
        moon.phase_offset = form.phase_offset.data
        moon.waxing_color = stretch_color(form.waxing_color.data.hex)
        moon.waning_color = stretch_color(form.waning_color.data.hex)
        db.session.commit()

        flash("Moon edited.", "success")
        return redirect(url_for("calendar.settings"))
    elif request.method == "GET":
        form.name.data = moon.name
        form.description.data = moon.description
        form.phase_length.data = moon.phase_length
        form.phase_offset.data = moon.phase_offset
        form.waxing_color.data = moon.waxing_color
        form.waning_color.data = moon.waning_color

    return render_template("calendar/form.html",
                           item=moon,
                           form=form,
                           heading=heading,
                           title=page_title("Edit Moon '%s'" % moon.name))
Exemplo n.º 3
0
def create():
    form = CampaignCreateForm()
    form.dm.choices = gen_dm_choices()
    form.associated_parties.choices = gen_party_choices()
    form.default_participants.choices = gen_participant_choices()

    if form.validate_on_submit():
        associated_parties = Party.query.filter(Party.id.in_(form.associated_parties.data)).all()
        default_members = Character.query.filter(Character.id.in_(form.default_participants.data)).all()

        new_campaign = Campaign(name=form.name.data,
                                dm_id=form.dm.data,
                                description=form.description.data,
                                associated_parties=associated_parties,
                                default_participants=default_members,
                                color=stretch_color(form.color.data.hex))

        success = True
        if form.profile_picture.data:
            success, filename = upload_profile_picture(form.profile_picture.data)

            new_campaign.profile_picture = filename

        if success is False:
            flash("Error while creating campaign.", "error")
        else:
            db.session.add(new_campaign)
            db.session.commit()
            flash("Campaign was created.", "success")
            return redirect(url_for("campaign.index"))

    return render_template("campaign/create.html", form=form, title=page_title("Add Campaign"))
Exemplo n.º 4
0
def moon_edit(id, name=None):
    cset = CalendarSetting.query.get(1)
    if cset.finalized is False:
        if current_user.is_moderator():
            return deny_access(
                no_perm_url,
                "A Moderator can only edit the Calendar after it has been finalized."
            )

    heading = "Edit Moon"
    form = MoonForm()
    form.submit.label.text = "Save Moon"

    moon = Moon.query.filter_by(id=id).first_or_404()

    if form.validate_on_submit():
        moon.name = form.name.data
        moon.description = form.description.data
        moon.phase_length = form.phase_length.data
        moon.phase_offset = form.phase_offset.data
        moon.waxing_color = stretch_color(form.waxing_color.data.hex)
        moon.waning_color = stretch_color(form.waning_color.data.hex)
        db.session.commit()

        flash("Moon edited.", "success")
        return redirect(url_for("calendar.settings"))
    elif request.method == "GET":
        form.name.data = moon.name
        form.description.data = moon.description
        form.phase_length.data = moon.phase_length
        form.phase_offset.data = moon.phase_offset
        form.waxing_color.data = moon.waxing_color
        form.waning_color.data = moon.waning_color

    return render_template("calendar/form.html",
                           item=moon,
                           form=form,
                           heading=heading,
                           title=page_title(f"Edit Moon '{moon.name}'"))
Exemplo n.º 5
0
def category_create():
    heading = "Add Event Category"
    form = CategoryForm()
    form.submit.label.text = "Create Category"

    if form.validate_on_submit():
        new_category = EventCategory(name=form.name.data, color=stretch_color(form.color.data.hex))

        db.session.add(new_category)
        db.session.commit()

        flash("Category created.", "success")
        return redirect(url_for("event.settings"))

    return render_template("event/category.html", form=form, heading=heading, title=page_title(heading))
Exemplo n.º 6
0
def edit(id):
    campaign = Campaign.query.filter_by(id=id).first_or_404()
    is_admin = current_user.has_admin_role()
    is_dm = current_user.is_dm_of(campaign)

    form = CampaignEditForm()
    form.default_participants.choices = gen_participant_choices()

    if not is_admin:
        del form.dm
    else:
        form.dm.choices = gen_dm_choices()

    if not is_dm:
        del form.dm_notes

    if form.validate_on_submit():
        campaign.name = form.name.data
        campaign.description = form.description.data
        campaign.default_participants = Character.query.filter(Character.id.in_(form.default_participants.data)).all()
        campaign.color = stretch_color(form.color.data.hex)

        if is_admin:
            campaign.dm_id = form.dm.data
        if is_dm:
            campaign.dm_notes = form.dm_notes.data

        db.session.commit()
        flash("Campaign was changed.", "success")
        return redirect(url_for("campaign.view", id=id))

    elif request.method == "GET":
        form.name.data = campaign.name
        form.description.data = campaign.description
        form.color.data = campaign.color

        participants = []
        for p in campaign.default_participants:
            participants.append(p.id)
        form.default_participants.data = participants

        if is_admin:
            form.dm.data = campaign.dm_id

        if is_dm:
            form.dm_notes.data = campaign.dm_notes

    return render_template("campaign/edit.html", form=form, campaign=campaign, title=page_title("Edit Campaign '%s'" % campaign.name))
Exemplo n.º 7
0
def category_edit(id, name=None):
    form = CategoryForm()
    form.submit.label.text = "Edit Category"

    category = EventCategory.query.filter_by(id=id).first_or_404()
    heading = f"Edit Event Category '{category.name}'"

    if form.validate_on_submit():
        category.name = form.name.data
        category.color = stretch_color(form.color.data.hex)

        db.session.commit()

        flash("Event category edited.", "success")
        return redirect(url_for("event.settings"))
    elif request.method == "GET":
        form.name.data = category.name
        form.color.data = category.color

    return render_template("event/category.html", category=category, form=form, heading=heading,
                           title=page_title(heading))
Exemplo n.º 8
0
def edit(id, name=None):  # noqa: C901
    campaign = Campaign.query.filter_by(id=id).first_or_404()

    if not campaign.is_editable_by_user():
        return deny_access(no_perm_url)

    is_admin = current_user.is_admin()
    is_dm = current_user.is_dm_of(campaign)

    form = CampaignEditForm()
    form.associated_parties.choices = gen_party_choices()
    form.default_participants.choices = gen_participant_choices(ensure=campaign.default_participants)

    if not is_admin:
        del form.dm
    else:
        form.dm.choices = gen_dm_choices()

    if not is_dm:
        del form.dm_notes

    if form.validate_on_submit():
        campaign.name = form.name.data
        campaign.description = form.description.data
        campaign.associated_parties = Party.query.filter(Party.id.in_(form.associated_parties.data)).all()
        campaign.default_participants = Character.query.filter(Character.id.in_(form.default_participants.data)).all()
        campaign.color = stretch_color(form.color.data.hex)

        if is_admin:
            campaign.dm_id = form.dm.data
        if is_dm:
            campaign.dm_notes = form.dm_notes.data

        success = True
        if form.profile_picture.data:
            success, filename = upload_profile_picture(form.profile_picture.data)

            if success and campaign.profile_picture:
                delete_profile_picture(campaign.profile_picture)

            campaign.profile_picture = filename

        if success is False:
            flash("Error while editing campaign.", "error")
        else:
            db.session.commit()
            flash("Campaign was edited.", "success")

        return redirect(campaign.view_url())
    elif request.method == "GET":
        form.name.data = campaign.name
        form.description.data = campaign.description
        form.color.data = campaign.color

        form.associated_parties.data = [p.id for p in campaign.associated_parties]

        participants = []
        for p in campaign.default_participants:
            participants.append(p.id)
        form.default_participants.data = participants

        if is_admin:
            form.dm.data = campaign.dm_id

        if is_dm:
            form.dm_notes.data = campaign.dm_notes

    return render_template("campaign/edit.html", form=form, campaign=campaign,
                           title=page_title(f"Edit Campaign '{campaign.name}'"))
Exemplo n.º 9
0
def create():
    form = CampaignCreateForm()
    form.dm.choices = gen_dm_choices()
    form.default_participants.choices = gen_participant_choices()

    if form.validate_on_submit():
        default_members = Character.query.filter(Character.id.in_(form.default_participants.data)).all()

        new_campaign = Campaign(name=form.name.data, dm_id=form.dm.data, description=form.description.data, default_participants=default_members, color=stretch_color(form.color.data.hex))

        db.session.add(new_campaign)
        db.session.commit()

        flash("Campaign was created.", "success")
        #return redirect(url_for("campaign.view", id=new_campaign.id))
        return redirect(url_for("campaign.index"))

    return render_template("campaign/create.html", form=form, title=page_title("Add Campaign"))
Exemplo n.º 10
0
    def test_stretch_color(self, app, client):
        from app.helpers import stretch_color

        self.assertEqual(stretch_color("#fff"), "#ffffff")
        self.assertEqual(stretch_color("#abc"), "#aabbcc")
        self.assertEqual(stretch_color("abc"), "abc")