Skip to content

Commit 871c2a1

Browse files
committed
mailing example in partner programs
1 parent cf5e8e6 commit 871c2a1

3 files changed

Lines changed: 48 additions & 11 deletions

File tree

mailing/views.py

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,33 @@ def post(self, request):
2525

2626

2727
class MailingSchemaView(APIView):
28+
def get(self, request):
29+
return MailingTemplateRender().render_template(request)
30+
31+
32+
def template_fields(request, schema_id):
33+
return JsonResponse(
34+
dict(MailingTemplateRender().get_template_fields_context(schema_id))
35+
)
36+
37+
38+
class MailingTemplateRender:
2839
template_name = "templates/mailing/mail_schema.html"
2940

30-
def get(self, request):
41+
def render_template(
42+
self,
43+
request,
44+
schema_id: int | None = None,
45+
picked_users: list[CustomUser] | django.db.models.QuerySet = None,
46+
unpicked_users: list[CustomUser] | django.db.models.QuerySet = None,
47+
):
3148
return render(
3249
request,
3350
self.template_name,
3451
self._get_context(
35-
1,
36-
None,
37-
CustomUser.objects.all(),
52+
schema_id,
53+
picked_users,
54+
unpicked_users,
3855
),
3956
)
4057

@@ -84,8 +101,11 @@ def _user_to_dict_for_template(self, user, picked):
84101
}
85102

86103
def get_template_fields_context(self, schema_id):
87-
schema = MailingSchema.objects.get(pk=schema_id).schema
88104
context = {"template_fields": []}
105+
if schema_id is None:
106+
return list(context.items())
107+
schema = MailingSchema.objects.get(pk=schema_id).schema
108+
89109
for key in schema:
90110
context["template_fields"].append(
91111
{
@@ -95,7 +115,3 @@ def get_template_fields_context(self, schema_id):
95115
}
96116
)
97117
return list(context.items())
98-
99-
100-
def template_fields(request, schema_id):
101-
return JsonResponse(dict(MailingSchemaView().get_template_fields_context(schema_id)))

partner_programs/admin.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
from django.http import HttpResponse
55
from django.urls import path
66
from django.utils import timezone
7-
7+
from mailing.views import MailingTemplateRender
88
from partner_programs.models import PartnerProgram, PartnerProgramUserProfile
99

1010

@@ -42,10 +42,23 @@ def get_urls(self):
4242
"export/<int:object_id>/",
4343
self.admin_site.admin_view(self.get_export_file_view),
4444
name="export_profiles",
45-
)
45+
),
46+
path(
47+
"mailing/<int:partner_program>/",
48+
self.admin_site.admin_view(self.mailing),
49+
name="partner_programs_mailing",
50+
),
4651
]
4752
return custom_urls + default_urls
4853

54+
def mailing(self, request, partner_program):
55+
print("kekekekekek")
56+
profiles = PartnerProgramUserProfile.objects.filter(
57+
partner_program=partner_program
58+
)
59+
users = [profile.user for profile in profiles]
60+
return MailingTemplateRender().render_template(request, None, users, None)
61+
4962
def changeform_view(self, request, object_id=None, form_url="", extra_context=None):
5063
extra_context = {"object_id": int(object_id)}
5164
res = super(PartnerProgramAdmin, self).changeform_view(

templates/partner_programs/admin/programs_change_form.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,19 @@
88
<div class="submit-row">
99
<input type="button" class="export-btn" value="Экспорт" onclick="export_profiles()"/>
1010
</div>
11+
12+
13+
<div class="submit-row">
14+
<input type="button" class="export-btn" value="Рассылка." onclick="mailing()"/>
15+
</div>
1116
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
1217
<script>
1318
function export_profiles(){
1419
window.open("{% url 'admin:export_profiles' object_id %}", '_blank').focus()
1520
}
21+
function mailing(){
22+
window.open("{% url 'admin:partner_programs_mailing' object_id %}", '_blank').focus()
23+
}
1624
</script>
1725

1826
{% endblock %}

0 commit comments

Comments
 (0)