Skip to content

Commit 6ce6447

Browse files
committed
#1281 wip draftPlan.users.extend(managers)
1 parent 73b2169 commit 6ce6447

File tree

6 files changed

+128
-3
lines changed

6 files changed

+128
-3
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
"""feature_can_assign_users_to_plans settings
2+
3+
Revision ID: c4c7bbe1acdc
4+
Revises: ac23e0d75b27
5+
Create Date: 2024-02-26 09:06:42.508631
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
11+
12+
# revision identifiers, used by Alembic.
13+
revision = "c4c7bbe1acdc"
14+
down_revision = "ac23e0d75b27"
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade():
20+
with op.batch_alter_table("setting", schema=None) as batch_op:
21+
batch_op.add_column(
22+
sa.Column(
23+
"feature_can_assign_users_to_plans",
24+
sa.Boolean(),
25+
nullable=True,
26+
default=False,
27+
)
28+
)
29+
30+
31+
def downgrade():
32+
pass

subscribie/blueprints/admin/__init__.py

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -688,7 +688,7 @@ def add_plan():
688688
managers.append(user)
689689

690690
draftPlan = Plan()
691-
draftPlan.managers.extend(managers)
691+
draftPlan.users.extend(managers)
692692
database.session.add(draftPlan)
693693
plan_requirements = PlanRequirements()
694694
draftPlan.requirements = plan_requirements
@@ -915,7 +915,11 @@ def user_assign_to_plans(user_id):
915915
return redirect(url_for("admin.assign_managers_to_plan"))
916916

917917
plans = Plan.query.execution_options(include_archived=True).all()
918-
user = User.query.execution_options(include_archived=True).where(User.id == user_id).first()
918+
user = (
919+
User.query.execution_options(include_archived=True)
920+
.where(User.id == user_id)
921+
.first()
922+
)
919923

920924
return render_template(
921925
"admin/user_assign_plan.html",
@@ -2230,6 +2234,34 @@ def donations_enabled_settings():
22302234
return render_template("admin/settings/donations_enabled.html", settings=settings)
22312235

22322236

2237+
@admin.route("/assign-users-to-plans-feature-toggle", methods=["GET", "POST"])
2238+
@login_required
2239+
def feature_assign_users_to_plans_enable_disable():
2240+
settings = Setting.query.first() # Get current shop settings
2241+
if settings.feature_can_assign_users_to_plans is None:
2242+
settings.feature_can_assign_users_to_plans = False
2243+
database.session.commit()
2244+
2245+
if request.method == "POST":
2246+
if int(request.form.get("feature_can_assign_users_to_plans", 0)) == 1:
2247+
settings.feature_can_assign_users_to_plans = 1
2248+
effect = "enabled"
2249+
else:
2250+
settings.feature_can_assign_users_to_plans = 0
2251+
effect = "disabled"
2252+
flash(f"Assign managers to plan feature has been {effect}")
2253+
database.session.commit()
2254+
return redirect(
2255+
url_for(
2256+
"admin.feature_assign_users_to_plans_enable_disable", settings=settings
2257+
)
2258+
)
2259+
return render_template(
2260+
"admin/settings/feature_assign_users_to_plans_enable_disable.html",
2261+
settings=settings,
2262+
)
2263+
2264+
22332265
@admin.route("/api-keys", methods=["GET", "POST"])
22342266
@login_required
22352267
def show_api_keys():

subscribie/blueprints/admin/templates/admin/dashboard.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -544,6 +544,10 @@ <h3 class="card-title">Templates</h3>
544544
href="{{ url_for('admin.change_thank_you_url') }}">
545545
Change Thank You Page/Payment Successful Page URL
546546
</a>
547+
<a class="btn btn-success btn-block"
548+
href="{{ url_for('admin.feature_assign_users_to_plans_enable_disable') }}">
549+
Assign Manager(s) to plans feature (enable/disable)
550+
</a>
547551

548552
</div>
549553

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
{% extends "admin/layout.html" %}
2+
{% block title %} {{ _('Assign Manager(s) to plans feature enable/disable') }} {% endblock %}
3+
4+
{% block body %}
5+
6+
<h2 class="text-center text-dark mb-3">{{ _('Assign Manager(s) to plans feature enable/disable') }}</h2>
7+
8+
<div class="container">
9+
<ul class="breadcrumb">
10+
<li class="breadcrumb-item"><a href="/">Shop</a></li>
11+
<li class="breadcrumb-item"><a href="{{ url_for('admin.dashboard') }}">Manage My Shop</a></li>
12+
<li class="breadcrumb-item active" aria-current="page">{{ _('Assign Manager(s) to plans feature enable/disable') }}</li>
13+
</ul>
14+
</div>
15+
16+
<main>
17+
<div class="section">
18+
<div class="container">
19+
20+
<div class="row row-cols-1 row-cols-md-2">
21+
<div class="col-md-7">
22+
<h2>{{ _('Assign Manager(s) to plans feature') }}</h2>
23+
<p>{{ _('Enable this feature to allow you to assign admins to manage plans. If you have a lot of plans/subscribers, this makes it easier to divide the work of managing groups of subscribers. This is especially useful for large clubs and membership organisations where you might not know all of the subscribers in your organisaton, but other coworkers know and manage them.') }}</p>
24+
25+
<form action="" method="POST" action="/">
26+
<div class="form-group">
27+
<div class="form-check">
28+
<input class="form-check-input" type="radio" name="feature_can_assign_users_to_plans" value="1" id="yes" {% if settings.feature_can_assign_users_to_plans is sameas True %}checked {% endif %}>
29+
<label class="form-check-label" for="yes">
30+
{{ _('Enable') }}
31+
</label>
32+
</div>
33+
<br />
34+
<div class="form-check">
35+
<input class="form-check-input" type="radio" name="feature_can_assign_users_to_plans" value="0" id="no" {% if settings.feature_can_assign_users_to_plans is sameas False %}checked {% endif %}>
36+
<label class="form-check-label" for="no">
37+
{{ _('Disable') }}
38+
</label>
39+
</div>
40+
</div>
41+
<br />
42+
<button type="submit" class="btn btn-primary btn-block mb-3">{{ _('Save') }}</button>
43+
</form>
44+
</div>
45+
46+
</div>
47+
48+
</div> <!-- end container-->
49+
</div> <!-- end section-->
50+
</main>
51+
52+
53+
54+
{% endblock %}

subscribie/blueprints/admin/templates/admin/subscribers.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ <h4>Search...</h4>
3737
</div>
3838
{% endif %}
3939

40-
{% if user.plans | length == 0 %}
40+
{% if user.plans | length == 0 and settings.feature_can_assign_users_to_plans %}
4141
<div class="alert alert-warning">
4242
You don't currently have any plans assigned to your user. To assign plans to your user login,
4343
<a href="{{ url_for('admin.edit') }}">Edit an existing plan</a> or <a href="{{ url_for('admin.add_plan') }}">Create a new plan</a> and click 'Managers' when editing or adding

subscribie/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,6 +1293,9 @@ class Setting(database.Model):
12931293
api_key_secret_test = database.Column(database.String(), default=None)
12941294
donations_enabled = database.Column(database.Boolean(), default=False)
12951295
custom_thank_you_url = database.Column(database.String(), default=None)
1296+
feature_can_assign_users_to_plans = database.Column(
1297+
database.Boolean(), default=False
1298+
)
12961299

12971300

12981301
class File(database.Model):

0 commit comments

Comments
 (0)