def dec(request, *args, **kwargs): if request.user.is_authenticated(): profile = get_profile(request.user) if profile.is_editor: return func(request, *args, **kwargs) tup = reverse('newsroom-login'), REDIRECT_FIELD_NAME, request.path return HttpResponseRedirect('%s?%s=%s' % tup)
def assignments_count(tab, url_name, request): from newsroom_core import models from newsroom_core.utils.profile import get_profile user = request.user if not user or not user.is_authenticated() or\ not get_profile(request.user).my_assignments_default: return tab, None count = models.Assignment.objects.assignments().filter( involved=user, status__means_completed=False).count() if not count: return tab, None tab = mark_safe(TAB % (escape(tab), count)) return tab, None
def initial(request): """ Redirect the user to either the assignments page or the personal assignments involved page (depending on their user preference). """ profile = get_profile(request.user) if profile.my_assignments_default: url = reverse('newsroom-assignments-profile', args=[request.user.username]) else: url = reverse('newsroom-assignments') if profile.my_section_default: url = '%s?section=%s' % (url, profile.section.slug) return HttpResponseRedirect(url)
def test_tab_assignments_count(self): tab_text = 'Assignments <span class="number"><span>(</span>%s<span>)'\ '</span></span>' profile = get_profile(self.user) profile.section = self.section profile.my_assignments_default = True profile.save() a1 = self.create_assignment('Article one') a2 = self.create_assignment('Article two') a3 = self.create_assignment('Article three', user=self.superuser) url = reverse('newsroom-add-assignment', args=[self.category.slug]) response = self.client.get(url) self.assertContains(response, tab_text % '2') a1.status = self.status_closed a1.save() response = self.client.get(url) self.assertContains(response, tab_text % '1')
def edit_profile(request, username=None): c = {} if not username: url = reverse(edit_profile, args=[request.user.username]) return HttpResponseRedirect(url) user = get_object_or_404(User, username=username) profile = get_profile(user) kwargs = form_kwargs(request) user_form = forms.UserForm(instance=user, **kwargs) form = forms.ProfileForm(instance=profile, **kwargs) if not request.user.is_staff: del form.fields['is_editor'] if username != request.user.username: del form.fields['email_notifications'] del form.fields['my_assignments_default'] del form.fields['my_section_default'] valid = form.is_valid() and user_form.is_valid() else: password_form = forms.PasswordForm(user=user, **kwargs) c['password_form'] = password_form valid = form.is_valid() and user_form.is_valid() and \ password_form.is_valid() if valid: password_form.save() if valid: user = user_form.save() if profile: profile = form.save() else: profile = form.save(commit=False) profile.user = user url = reverse(detail, args=[profile.user.username]) return HttpResponseRedirect(url) c['form'] = form c['user_form'] = user_form return direct_to_template(request, 'newsroom/person_edit.html', c)
def profile(user): """ Return the common HTML output for a user, showing their name and a link to their profile. """ return {'profile': get_profile(user)}
def render(self, context): user = self.user_var.resolve(context) context[self.context_name] = get_profile(user) return ''