|
|
@@ -1,8 +1,12 @@
|
|
1
|
1
|
from django.contrib import messages
|
|
2
|
|
-from django.core.urlresolvers import reverse_lazy
|
|
|
2
|
+from django.contrib.auth.models import User
|
|
|
3
|
+from django.core.urlresolvers import reverse_lazy, reverse
|
|
3
|
4
|
from django.db.models import get_model
|
|
|
5
|
+from django.http import HttpResponseRedirect
|
|
|
6
|
+from django.shortcuts import get_object_or_404
|
|
4
|
7
|
from django.utils.translation import ugettext_lazy as _
|
|
5
|
8
|
from django.views import generic
|
|
|
9
|
+from oscar.apps.dashboard.partners.forms import UserForm
|
|
6
|
10
|
|
|
7
|
11
|
from oscar.core.loading import get_classes
|
|
8
|
12
|
from oscar.views.generic import BulkEditMixin
|
|
|
@@ -62,12 +66,28 @@ class PartnerCreateView(generic.CreateView):
|
|
62
|
66
|
form_class = PartnerCreateForm
|
|
63
|
67
|
success_url = reverse_lazy('dashboard:partner-list')
|
|
64
|
68
|
|
|
|
69
|
+ def get_context_data(self, **kwargs):
|
|
|
70
|
+ ctx = super(PartnerCreateView, self).get_context_data(**kwargs)
|
|
|
71
|
+ ctx['title'] = _('Create new partner')
|
|
|
72
|
+ return ctx
|
|
|
73
|
+
|
|
|
74
|
+ def get_success_url(self):
|
|
|
75
|
+ messages.success(self.request,
|
|
|
76
|
+ _("Partner '%s' was created successfully.") %
|
|
|
77
|
+ self.object.name)
|
|
|
78
|
+ return reverse_lazy('dashboard:partner-list')
|
|
|
79
|
+
|
|
65
|
80
|
|
|
66
|
81
|
class PartnerUpdateView(generic.UpdateView):
|
|
67
|
82
|
model = Partner
|
|
68
|
83
|
template_name = 'dashboard/partners/partner_form.html'
|
|
69
|
84
|
form_class = PartnerCreateForm
|
|
70
|
85
|
|
|
|
86
|
+ def get_context_data(self, **kwargs):
|
|
|
87
|
+ ctx = super(PartnerUpdateView, self).get_context_data(**kwargs)
|
|
|
88
|
+ ctx['title'] = _("Partner '%s'") % self.object.name
|
|
|
89
|
+ return ctx
|
|
|
90
|
+
|
|
71
|
91
|
def get_success_url(self):
|
|
72
|
92
|
messages.success(self.request,
|
|
73
|
93
|
_("Partner '%s' was updated successfully.") %
|
|
|
@@ -85,3 +105,87 @@ class PartnerDeleteView(generic.DeleteView):
|
|
85
|
105
|
self.object.name)
|
|
86
|
106
|
return reverse_lazy('dashboard:partner-list')
|
|
87
|
107
|
|
|
|
108
|
+
|
|
|
109
|
+class PartnerCreateUserView(generic.CreateView):
|
|
|
110
|
+ model = User
|
|
|
111
|
+ template_name = 'dashboard/partners/partner_user_form.html'
|
|
|
112
|
+ form_class = UserForm
|
|
|
113
|
+
|
|
|
114
|
+ def dispatch(self, request, *args, **kwargs):
|
|
|
115
|
+ self.partner = get_object_or_404(Partner,
|
|
|
116
|
+ pk=kwargs.get('partner_pk', None))
|
|
|
117
|
+ return super(PartnerCreateUserView, self).dispatch(request, *args, **kwargs)
|
|
|
118
|
+
|
|
|
119
|
+ def get_context_data(self, **kwargs):
|
|
|
120
|
+ ctx = super(PartnerCreateUserView, self).get_context_data(**kwargs)
|
|
|
121
|
+ ctx['title'] = _("Create user for partner '%s'") % self.partner.name
|
|
|
122
|
+ return ctx
|
|
|
123
|
+
|
|
|
124
|
+ def form_valid(self, form):
|
|
|
125
|
+ ret = super(PartnerCreateUserView, self).form_valid(form)
|
|
|
126
|
+ self.partner.users.add(self.object)
|
|
|
127
|
+ return ret
|
|
|
128
|
+
|
|
|
129
|
+ def get_success_url(self):
|
|
|
130
|
+ name = self.object.get_full_name() or self.object.email
|
|
|
131
|
+ messages.success(self.request,
|
|
|
132
|
+ _("User '%s' was created successfully.") % name)
|
|
|
133
|
+ return reverse_lazy('dashboard:partner-list')
|
|
|
134
|
+
|
|
|
135
|
+
|
|
|
136
|
+class PartnerUpdateUserView(generic.UpdateView):
|
|
|
137
|
+ model = User
|
|
|
138
|
+ template_name = 'dashboard/partners/partner_user_form.html'
|
|
|
139
|
+ form_class = UserForm
|
|
|
140
|
+
|
|
|
141
|
+ def get_context_data(self, **kwargs):
|
|
|
142
|
+ name = self.object.get_full_name() or self.object.email
|
|
|
143
|
+ ctx = super(PartnerUpdateUserView, self).get_context_data(**kwargs)
|
|
|
144
|
+ ctx['title'] = _("Edit user '%s'") % name
|
|
|
145
|
+ return ctx
|
|
|
146
|
+
|
|
|
147
|
+ def get_success_url(self):
|
|
|
148
|
+ name = self.object.get_full_name() or self.object.email
|
|
|
149
|
+ messages.success(self.request,
|
|
|
150
|
+ _("User '%s' was updated successfully.") % name)
|
|
|
151
|
+ return reverse_lazy('dashboard:partner-list')
|
|
|
152
|
+
|
|
|
153
|
+
|
|
|
154
|
+class PartnerManageUsers(generic.ListView):
|
|
|
155
|
+ model = User
|
|
|
156
|
+ template_name = 'dashboard/partners/manage_users.html'
|
|
|
157
|
+ context_object_name = 'users'
|
|
|
158
|
+
|
|
|
159
|
+ def dispatch(self, request, *args, **kwargs):
|
|
|
160
|
+ self.partner = get_object_or_404(Partner,
|
|
|
161
|
+ pk=kwargs.get('pk', None))
|
|
|
162
|
+ return super(PartnerManageUsers, self).dispatch(request, *args, **kwargs)
|
|
|
163
|
+
|
|
|
164
|
+ def get_context_data(self, **kwargs):
|
|
|
165
|
+ ctx = super(PartnerManageUsers, self).get_context_data(**kwargs)
|
|
|
166
|
+ ctx['partner'] = self.partner
|
|
|
167
|
+ ctx['title'] = _("Manage users for partner '%s'") % self.partner.name
|
|
|
168
|
+ return ctx
|
|
|
169
|
+
|
|
|
170
|
+ def get_queryset(self):
|
|
|
171
|
+ return self.partner.users.all()
|
|
|
172
|
+
|
|
|
173
|
+
|
|
|
174
|
+class PartnerUnlinkUserView(generic.View):
|
|
|
175
|
+
|
|
|
176
|
+ def post(self, request, user_pk, partner_pk):
|
|
|
177
|
+ user = get_object_or_404(User, pk=user_pk)
|
|
|
178
|
+ name = user.get_full_name() or user.email
|
|
|
179
|
+ partner = get_object_or_404(Partner, pk=partner_pk)
|
|
|
180
|
+ users = partner.users.all()
|
|
|
181
|
+ if user in users:
|
|
|
182
|
+ partner.users.remove(user)
|
|
|
183
|
+ messages.success(request, _("User '%s' was unlinked from '%s'") %
|
|
|
184
|
+ (name, partner.name))
|
|
|
185
|
+ else:
|
|
|
186
|
+ messages.error(request, _("User '%s' is not linked to '%s'") %
|
|
|
187
|
+ (name, partner.name))
|
|
|
188
|
+ return HttpResponseRedirect(reverse('dashboard:partner-manage-users',
|
|
|
189
|
+ kwargs={'pk': partner_pk}))
|
|
|
190
|
+
|
|
|
191
|
+
|