示例#1
0
文件: views.py 项目: renatofb/weblate
    def post(self, request, **kwargs):
        if not request.user.has_perm("user.edit"):
            raise PermissionDenied()
        user = self.object = self.get_object()
        if "add_group" in request.POST:
            self.group_form = GroupAddForm(request.POST)
            if self.group_form.is_valid():
                user.groups.add(self.group_form.cleaned_data["add_group"])
                return HttpResponseRedirect(self.get_success_url() + "#groups")
        if "remove_group" in request.POST:
            form = GroupRemoveForm(request.POST)
            if form.is_valid():
                user.groups.remove(form.cleaned_data["remove_group"])
                return HttpResponseRedirect(self.get_success_url() + "#groups")
        if "remove_user" in request.POST:
            remove_user(user, request)
            return HttpResponseRedirect(self.get_success_url() + "#groups")

        return super().post(request, **kwargs)
示例#2
0
文件: views.py 项目: renatofb/weblate
    def get_context_data(self, **kwargs):
        """Create context for rendering page."""
        context = super().get_context_data(**kwargs)
        user = self.object
        request = self.request

        allowed_project_ids = request.user.allowed_project_ids

        # Filter all user activity
        all_changes = Change.objects.last_changes(
            request.user).filter(user=user)

        # Last user activity
        last_changes = all_changes[:10]

        # Filter where project is active
        user_translation_ids = set(
            all_changes.values_list("translation", flat=True))
        user_translations = (Translation.objects.prefetch().filter(
            id__in=user_translation_ids,
            component__project_id__in=allowed_project_ids,
        ).order())

        context["page_profile"] = user.profile
        context["last_changes"] = last_changes.preload()
        context["last_changes_url"] = urlencode({"user": user.username})
        context["page_user_translations"] = prefetch_stats(user_translations)
        context["page_owned_projects"] = prefetch_project_flags(
            prefetch_stats(
                user.owned_projects.filter(
                    id__in=allowed_project_ids).order()))
        context["page_watched_projects"] = prefetch_project_flags(
            prefetch_stats(
                user.watched_projects.filter(
                    id__in=allowed_project_ids).order()))
        context["user_languages"] = user.profile.all_languages[:7]
        context["group_form"] = self.group_form or GroupAddForm()
        context["page_user_groups"] = user.groups.prefetch_related(
            "defining_project").order()
        return context
示例#3
0
文件: views.py 项目: renatofb/weblate
class UserPage(UpdateView):
    model = User
    template_name = "accounts/user.html"
    slug_field = "username"
    slug_url_kwarg = "user"
    context_object_name = "page_user"
    form_class = UserEditForm

    group_form = None

    def post(self, request, **kwargs):
        if not request.user.has_perm("user.edit"):
            raise PermissionDenied()
        user = self.object = self.get_object()
        if "add_group" in request.POST:
            self.group_form = GroupAddForm(request.POST)
            if self.group_form.is_valid():
                user.groups.add(self.group_form.cleaned_data["add_group"])
                return HttpResponseRedirect(self.get_success_url() + "#groups")
        if "remove_group" in request.POST:
            form = GroupRemoveForm(request.POST)
            if form.is_valid():
                user.groups.remove(form.cleaned_data["remove_group"])
                return HttpResponseRedirect(self.get_success_url() + "#groups")
        if "remove_user" in request.POST:
            remove_user(user, request)
            return HttpResponseRedirect(self.get_success_url() + "#groups")

        return super().post(request, **kwargs)

    def form_valid(self, form):
        """If the form is valid, save the associated model."""
        self.object = form.save(self.request)
        return HttpResponseRedirect(self.get_success_url())

    def get_context_data(self, **kwargs):
        """Create context for rendering page."""
        context = super().get_context_data(**kwargs)
        user = self.object
        request = self.request

        allowed_project_ids = request.user.allowed_project_ids

        # Filter all user activity
        all_changes = Change.objects.last_changes(
            request.user).filter(user=user)

        # Last user activity
        last_changes = all_changes[:10]

        # Filter where project is active
        user_translation_ids = set(
            all_changes.values_list("translation", flat=True))
        user_translations = (Translation.objects.prefetch().filter(
            id__in=user_translation_ids,
            component__project_id__in=allowed_project_ids,
        ).order())

        context["page_profile"] = user.profile
        context["last_changes"] = last_changes.preload()
        context["last_changes_url"] = urlencode({"user": user.username})
        context["page_user_translations"] = prefetch_stats(user_translations)
        context["page_owned_projects"] = prefetch_project_flags(
            prefetch_stats(
                user.owned_projects.filter(
                    id__in=allowed_project_ids).order()))
        context["page_watched_projects"] = prefetch_project_flags(
            prefetch_stats(
                user.watched_projects.filter(
                    id__in=allowed_project_ids).order()))
        context["user_languages"] = user.profile.all_languages[:7]
        context["group_form"] = self.group_form or GroupAddForm()
        context["page_user_groups"] = user.groups.prefetch_related(
            "defining_project").order()
        return context