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