Exemple #1
0
 def decorated_f(request, translation_project, *args, **kwargs):
     # For now, all permissions in a translation project are
     # relative to the root of that translation project.
     request.permissions = get_matching_permissions(
         get_profile(request.user), translation_project.directory)
     request.translation_project = translation_project
     return f(request, translation_project, *args, **kwargs)
Exemple #2
0
    def GET(self, template_vars, request, translation_project, directory):
        template_vars = super(TPTranslateView,
                              self).GET(template_vars, request)
        request.permissions = get_matching_permissions(
            get_profile(request.user), translation_project.directory)
        project = translation_project.project
        language = translation_project.language

        template_vars.update({
            'translation_project':
            translation_project,
            'project':
            project,
            'language':
            language,
            'directory':
            directory,
            'children':
            get_children(request,
                         translation_project,
                         directory,
                         links_required='translate'),
            'navitems': [
                navbar_dict.make_directory_navbar_dict(
                    request, directory, links_required='translate')
            ],
            'feed_path':
            directory.pootle_path[1:],
            'topstats':
            gentopstats_translation_project(translation_project),
        })
        return template_vars
Exemple #3
0
def test_panel_language_table(language0, rf, member):
    request = rf.get("/language0/")
    request.user = member
    request.permissions = get_matching_permissions(request.user, language0.directory)
    view = LanguageBrowseView(kwargs=dict(language_code=language0.code))
    view.request = request
    view.object = view.get_object()
    lang_panels = panels.gather(LanguageBrowseView)
    assert lang_panels.keys() == ["children"]
    assert lang_panels["children"] == ChildrenPanel
    panel = ChildrenPanel(view)
    assert panel.panel_name == "children"
    assert panel.cache_key == ("panel.%s.%s" % (panel.panel_name, view.cache_key))

    table = {
        "id": view.view_name,
        "fields": panel.table_fields,
        "headings": get_table_headings(panel.table_fields),
        "rows": view.object_children,
    }

    assert panel.table == table
    assert panel.get_context_data() == dict(table=table, can_translate=view.can_translate)
    content = loader.render_to_string(panel.template_name, context=panel.get_context_data())
    assert panel.content == panel.update_times(content)
Exemple #4
0
    def GET(self, template_vars, request, translation_project, directory):
        template_vars = super(ProjectIndexView,
                              self).GET(template_vars, request)
        request.permissions = get_matching_permissions(
            get_profile(request.user), translation_project.directory)
        state = dispatch.ProjectIndexState(request.GET)
        project = translation_project.project
        language = translation_project.language

        template_vars.update({
            'translation_project':
            translation_project,
            'project':
            project,
            'language':
            language,
            'directory':
            directory,
            'children':
            get_children(request, translation_project, directory),
            'navitems':
            [navbar_dict.make_directory_navbar_dict(request, directory)],
            'stats_headings':
            get_stats_headings(),
            'editing':
            state.editing,
            'topstats':
            gentopstats_translation_project(translation_project),
            'feed_path':
            directory.pootle_path[1:],
        })
        return template_vars
Exemple #5
0
def view(request):
    request.permissions = get_matching_permissions(get_profile(request.user), Directory.objects.root)

    topstats = gentopstats_root()

    templatevars = {
        'description': pagelayout.get_description(),
        'keywords': [
            'Pootle',
            'translate',
            'translation',
            'localisation',
            'localization',
            'l10n',
            'traduction',
            'traduire',
            ],
        'languagelink': _('Languages'),
        'languages': getlanguages(request),
        'projectlink': _('Projects'),
        'projects': getprojects(request),
        'projectstypo3typo3core': getprojectstypo3typo3core(request),
        'projectstypo3typo3ext': getprojectstypo3typo3ext(request),
        'topstats': topstats,
        'instancetitle': pagelayout.get_title(),
        'translationlegend': {'translated': _('Translations are complete'),
                              'fuzzy': _('Translations need to be checked (they are marked fuzzy)'),
                              'untranslated': _('Untranslated')},
        'permissions': request.permissions,
        }
    visible_langs = [l for l in templatevars['languages'] if l['total'] != 0]
    templatevars['moreprojects'] = len(templatevars['projects']) >\
                                   len(visible_langs)

    return render_to_response('index/index.html', templatevars, RequestContext(request))
Exemple #6
0
def test_panel_tp_subdir_table(subdir0, rf, member):
    request = rf.get(subdir0.pootle_path)
    request.user = member
    request.permissions = get_matching_permissions(
        request.user,
        subdir0)
    view = TPBrowseView(
        kwargs=dict(
            language_code=subdir0.tp.language.code,
            project_code=subdir0.tp.project.code,
            dir_path=subdir0.tp_path[1:]))
    view.request = request
    view.object = view.get_object()
    lang_panels = panels.gather(TPBrowseView)
    assert lang_panels.keys() == ["children", "vfolders"]
    assert lang_panels["children"] == ChildrenPanel
    panel = ChildrenPanel(view)
    assert panel.panel_name == "children"
    assert (
        panel.cache_key
        == ("panel.%s.%s"
            % (panel.panel_name, view.cache_key)))
    table = {
        'id': view.view_name,
        'fields': panel.table_fields,
        'headings': get_table_headings(panel.table_fields),
        'rows': view.object_children}
    assert panel.table == table
    assert panel.get_context_data() == dict(
        table=table, can_translate=view.can_translate)
    content = loader.render_to_string(
        panel.template_name, context=panel.get_context_data())
    assert (
        panel.content
        == panel.update_times(content))
Exemple #7
0
def test_panel_tp_vfolder_table(tp0, rf, member):
    request = rf.get('/language0/project0/')
    request.user = member
    request.permissions = get_matching_permissions(
        request.user,
        tp0.directory)
    view = TPBrowseView(
        kwargs=dict(
            language_code=tp0.language.code,
            project_code=tp0.project.code))
    view.request = request
    view.object = view.get_object()
    lang_panels = panels.gather(TPBrowseView)
    assert lang_panels.keys() == ["children", "vfolders"]
    assert lang_panels["vfolders"] == VFolderPanel
    panel = VFolderPanel(view)
    assert panel.panel_name == "vfolder"
    assert (
        panel.cache_key
        == ("panel.%s.%s"
            % (panel.panel_name, view.cache_key)))
    table = view.vfolders_data_view.table_data["children"]
    assert panel.table == table
    assert panel.get_context_data() == dict(
        table=table, can_translate=view.can_translate)
    content = loader.render_to_string(
        panel.template_name, context=panel.get_context_data())
    assert (
        panel.content
        == panel.update_times(content))
Exemple #8
0
        def _wrapped(request, *args, **kwargs):
            path_obj = args[0]
            directory = getattr(path_obj, 'directory', path_obj)

            # HACKISH: some old code relies on
            # `request.translation_project`, `request.language` etc.
            # being set, so we need to set that too.
            attr_name = CLS2ATTR.get(path_obj.__class__.__name__,
                                     'path_obj')
            setattr(request, attr_name, path_obj)

            User = get_user_model()
            request.profile = User.get(request.user)
            request.permissions = get_matching_permissions(request.profile,
                                                           directory)

            if not permission_code:
                return func(request, *args, **kwargs)

            if not check_permission(permission_code, request):
                raise PermissionDenied(
                    _("Insufficient rights to access this page."),
                )

            return func(request, *args, **kwargs)
Exemple #9
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user), project.directory)
    if not check_permission('view', request):
        raise PermissionDenied

    translation_projects = project.translationproject_set.all()
    items = [make_language_item(request, translation_project) for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
          'code': project.code,
          'name': project.fullname,
          'stats': ungettext('%(languages)d language, %(average)d%% translated',
                             '%(languages)d languages, %(average)d%% translated',
                             languagecount, {"languages": languagecount, "average": average}),
        },
        'description': project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {'translated': _('Translations are complete'),
                              'fuzzy': _('Translations need to be checked (they are marked fuzzy)'),
                              'untranslated': _('Untranslated')},
    }
    return render_to_response('project/project.html', templatevars, context_instance=RequestContext(request))
Exemple #10
0
        def decorated_f(request, uid, *args, **kwargs):
            unit = get_object_or_404(
                    Unit.objects.select_related("store__translation_project",
                                                "store__parent"),
                    id=uid,
            )

            tp = unit.store.translation_project
            request.translation_project = tp

            User = get_user_model()
            current_user = User.get(request.user)
            request.profile = current_user

            request.permissions = get_matching_permissions(current_user,
                                                           tp.directory)

            if (permission_code is not None and
                not check_permission(permission_code, request)):
                raise PermissionDenied(get_permission_message(permission_code))

            request.unit = unit
            request.store = unit.store
            request.directory = unit.store.parent

            return f(request, unit, *args, **kwargs)
Exemple #11
0
def project_settings_edit(request, project_code):
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(
            get_profile(request.user), project.directory
    )
    if not check_permission('administrate', request):
        raise PermissionDenied

    from pootle_project.forms import DescriptionForm
    form = DescriptionForm(request.POST, instance=project)
    response = {}
    if form.is_valid():
        form.save()
        response = {
                "intro": form.cleaned_data['description'],
                "valid": True,
        }
    context = {
            "form": form,
            "form_action": project.pootle_path + "edit_settings.html",
    }
    t = loader.get_template('admin/general_settings_form.html')
    c = RequestContext(request, context)
    response['form'] = t.render(c)

    return HttpResponse(jsonify(response), mimetype="application/json")
Exemple #12
0
def projects_index(request):
    """page listing all projects"""
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   Directory.objects.root)

    if not check_permission('view', request):
        raise PermissionDenied

    topstats = gentopstats_root()

    templatevars = {
        'projects': getprojects(request),
        'topstats': topstats,
        'translationlegend': {
            'translated':
            _('Translations are complete'),
            'fuzzy':
            _('Translations need to be checked '
              '(they are marked fuzzy)'),
            'untranslated':
            _('Untranslated')
        },
    }

    return render_to_response('project/projects.html', templatevars,
                              RequestContext(request))
Exemple #13
0
def test_panel_tp_subdir_table(subdir0, rf, member):
    request = rf.get(subdir0.pootle_path)
    request.user = member
    request.permissions = get_matching_permissions(request.user, subdir0)
    view = TPBrowseView(kwargs=dict(language_code=subdir0.tp.language.code,
                                    project_code=subdir0.tp.project.code,
                                    dir_path=subdir0.tp_path[1:]))
    view.request = request
    view.object = view.get_object()
    lang_panels = panels.gather(TPBrowseView)
    assert lang_panels.keys() == ["children", "vfolders"]
    assert lang_panels["children"] == ChildrenPanel
    panel = ChildrenPanel(view)
    assert panel.panel_name == "children"
    assert (panel.cache_key == ("panel.%s.%s" %
                                (panel.panel_name, view.cache_key)))
    table = {
        'id': view.view_name,
        'fields': panel.table_fields,
        'headings': get_table_headings(panel.table_fields),
        'rows': view.object_children
    }
    assert panel.table == table
    assert panel.get_context_data() == dict(table=table,
                                            can_translate=view.can_translate)
    content = loader.render_to_string(panel.template_name,
                                      context=panel.get_context_data())
    assert (panel.content == panel.update_times(content))
Exemple #14
0
    def GET(self, template_vars, request, translation_project, directory):
        template_vars = super(TPReviewView, self).GET(template_vars, request)

        request.permissions = get_matching_permissions(
                get_profile(request.user), translation_project.directory)
        project  = translation_project.project
        language = translation_project.language
        is_terminology = project.is_terminology

        children = get_children(request, translation_project, directory,
                                links_required='review')
        navitems = [navbar_dict.make_directory_navbar_dict(
            request, directory, links_required='review',
            terminology=is_terminology)]

        template_vars.update({
            'translation_project': translation_project,
            'project': project,
            'language': language,
            'directory': directory,
            'children': children,
            'navitems': navitems,
            'topstats': gentopstats_translation_project(translation_project),
            'feed_path': directory.pootle_path[1:],
            })

        return template_vars
Exemple #15
0
        def _wrapped(request, *args, **kwargs):
            path_obj = args[0]
            directory = (path_obj if isinstance(path_obj, Directory)
                                  else path_obj.directory)

            # HACKISH: some old code relies on  `request.translation_project`,
            # `request.language` etc. being set, so we need to set that too.
            attr_name = CLS2ATTR.get(path_obj.__class__.__name__,
                                     'path_obj')
            setattr(request, attr_name, path_obj)

            request.profile = get_profile(request.user)
            request.permissions = get_matching_permissions(request.profile,
                                                           directory)

            if not permission_codes:
                return func(request, *args, **kwargs)

            permission_codes_list = permission_codes
            if isinstance(permission_codes, basestring):
                permission_codes_list = [permission_codes]

            for permission_code in permission_codes_list:
                if not check_permission(permission_code, request):
                    raise PermissionDenied(
                        _("Insufficient rights to access this page."),
                    )

            return func(request, *args, **kwargs)
Exemple #16
0
def view(request, path):
    # FIXME: why do we have leading and trailing slashes in pootle_path?
    pootle_path = "/%s" % path

    directory = get_object_or_404(Directory, pootle_path=pootle_path)

    request.permissions = get_matching_permissions(get_profile(request.user), directory)

    if not check_permission("view", request):
        raise PermissionDenied

    template_vars = {"path": path, "directory": directory}

    if check_permission("administrate", request):
        template_vars["form"] = handle_form(request, directory)
        template_vars["title"] = directory_to_title(directory)
    if request.GET.get("all", False):
        template_vars["notices"] = Notice.objects.filter(
            directory__pootle_path__startswith=directory.pootle_path
        ).select_related("directory")[:30]
    else:
        template_vars["notices"] = Notice.objects.filter(directory=directory).select_related("directory")[:30]

    if not directory.is_language() and not directory.is_project():
        try:
            request.translation_project = directory.get_translationproject()
            template_vars["navitems"] = [navbar_dict.make_directory_navbar_dict(request, directory)]
            template_vars["translation_project"] = request.translation_project
            template_vars["language"] = request.translation_project.language
            template_vars["project"] = request.translation_project.project
        except:
            pass

    return render_to_response("notices.html", template_vars, context_instance=RequestContext(request))
Exemple #17
0
        def decorated_f(request, uid, *args, **kwargs):
            unit = get_object_or_404(
                Unit.objects.select_related("store__translation_project",
                                            "store__parent"),
                id=uid,
            )

            tp = unit.store.translation_project
            request.translation_project = tp

            User = get_user_model()
            current_user = User.get(request.user)
            request.profile = current_user

            request.permissions = get_matching_permissions(
                current_user, tp.directory)

            if (permission_code is not None
                    and not check_permission(permission_code, request)):
                raise PermissionDenied(get_permission_message(permission_code))

            request.unit = unit
            request.store = unit.store
            request.directory = unit.store.parent

            return f(request, unit, *args, **kwargs)
Exemple #18
0
def view(request, path):
    #FIXME: why do we have leading and trailing slashes in pootle_path?
    pootle_path = '/%s' % path

    directory = get_object_or_404(Directory, pootle_path=pootle_path)

    request.permissions = get_matching_permissions(get_profile(request.user), directory)

    if not check_permission('view', request):
        raise PermissionDenied

    template_vars = {'path': path,
                     'directory': directory}

    if check_permission('administrate', request):
        template_vars['form'] = handle_form(request, directory)
        template_vars['title'] = directory_to_title(request, directory)
    if request.GET.get('all', False):
        template_vars['notices'] = Notice.objects.filter(directory__pootle_path__startswith=directory.pootle_path).select_related('directory')[:30]
    else:
        template_vars['notices'] = Notice.objects.filter(directory=directory).select_related('directory')[:30]

    if not directory.is_language() and not directory.is_project():
        try:
            request.translation_project = directory.get_translationproject()
            template_vars['navitems'] = [navbar_dict.make_directory_navbar_dict(request, directory)]
            template_vars['translation_project'] = request.translation_project
            template_vars['language'] = request.translation_project.language
            template_vars['project'] = request.translation_project.project
        except:
            pass

    return render_to_response('notices.html', template_vars, context_instance=RequestContext(request))
def language_index(request, language_code):
    language = get_object_or_404(Language, code=language_code)
    request.permissions = get_matching_permissions(get_profile(request.user), language.directory)

    if not check_permission("view", request):
        raise PermissionDenied

    projects = language.translationproject_set.order_by('project__fullname')
    projectcount = len(projects)
    items = (make_project_item(translate_project) for translate_project in projects.iterator())

    totals = language.getquickstats()
    average = nice_percentage(totals['translatedsourcewords'] * 100.0 / max(totals['totalsourcewords'], 1))
    topstats = gentopstats_language(language)

    templatevars = {
        'language': {
          'code': language.code,
          'name': tr_lang(language.fullname),
          'stats': ungettext('%(projects)d project, %(average)d%% translated',
                             '%(projects)d projects, %(average)d%% translated',
                             projectcount, {"projects": projectcount, "average": average}),
        },
        'feed_path': '%s/' % language.code,
        'projects': items,
        'statsheadings': get_stats_headings(),
        'topstats': topstats,
        'instancetitle': pagelayout.get_title(),
        }
    return render_to_response("language/language_index.html", templatevars, context_instance=RequestContext(request))
Exemple #20
0
def language_index(request, language_code):
    language = get_object_or_404(Language, code=language_code)
    request.permissions = get_matching_permissions(get_profile(request.user), language.directory)

    if not check_permission("view", request):
        raise PermissionDenied

    projects = language.translationproject_set.order_by('project__fullname')
    projectcount = len(projects)
    items = (make_project_item(translate_project) for translate_project in projects.iterator())

    totals = language.getquickstats()
    average = nice_percentage(totals['translatedsourcewords'] * 100.0 / max(totals['totalsourcewords'], 1))
    topstats = gentopstats_language(language)

    templatevars = {
        'language': {
          'code': language.code,
          'name': tr_lang(language.fullname),
          'description': language.description,
          'stats': ungettext('%(projects)d project, %(average)d%% translated',
                             '%(projects)d projects, %(average)d%% translated',
                             projectcount, {"projects": projectcount, "average": average}),
        },
        'feed_path': '%s/' % language.code,
        'description': language.description,
        'projects': items,
        'statsheadings': get_stats_headings(),
        'topstats': topstats,
        }
    if check_permission('administrate', request):
        from pootle_language.forms import DescriptionForm
        templatevars['form'] = DescriptionForm(instance=language)

    return render_to_response("language/language_index.html", templatevars, context_instance=RequestContext(request))
Exemple #21
0
def test_panel_projects_table(rf, member, project0):
    request = rf.get('/projects/')
    request.user = member
    request.permissions = get_matching_permissions(
        request.user,
        project0.directory.parent)
    view = ProjectsBrowseView()
    view.request = request
    view.object = view.get_object()
    lang_panels = panels.gather(ProjectsBrowseView)
    assert lang_panels.keys() == ["children"]
    assert lang_panels["children"] == ChildrenPanel
    panel = ChildrenPanel(view)
    assert panel.panel_name == "children"
    assert (
        panel.cache_key
        == ("panel.%s.%s"
            % (panel.panel_name, view.cache_key)))

    table = {
        'id': view.view_name,
        'fields': panel.table_fields,
        'headings': get_table_headings(panel.table_fields),
        'rows': view.object_children}

    assert panel.table == table
    assert panel.get_context_data() == dict(
        table=table, can_translate=view.can_translate)
    content = loader.render_to_string(
        panel.template_name, context=panel.get_context_data())
    assert (
        panel.content
        == panel.update_times(content))
Exemple #22
0
def tp_settings_edit(request, translation_project):
    request.permissions = get_matching_permissions(
            get_profile(request.user), translation_project.directory
    )
    if not check_permission('administrate', request):
        raise PermissionDenied

    from pootle_translationproject.forms import DescriptionForm
    form = DescriptionForm(request.POST, instance=translation_project)
    response = {}
    if form.is_valid():
        form.save()
        response = {
                "intro": form.cleaned_data['description'],
                "valid": True,
        }
    context = {
            "form": form,
            "form_action": translation_project.pootle_path + "edit_settings.html",
    }
    t = loader.get_template('admin/general_settings_form.html')
    c = RequestContext(request, context)
    response['form'] = t.render(c)

    return HttpResponse(jsonify(response), mimetype="application/json")
Exemple #23
0
 def method_wrapper(self, request, *args, **kwargs):
     User = get_user_model()
     request.profile = User.get(self.request.user)
     request.permissions = get_matching_permissions(
         request.profile,
         self.permission_context) or []
     return f(self, request, *args, **kwargs)
Exemple #24
0
def view(request):
    request.permissions = get_matching_permissions(get_profile(request.user), Directory.objects.root)

    topstats = gentopstats_root()

    templatevars = {
        "description": pagelayout.get_description(),
        "keywords": [
            "Pootle",
            "translate",
            "translation",
            "localisation",
            "localization",
            "l10n",
            "traduction",
            "traduire",
        ],
        "languagelink": _("Languages"),
        "languages": getlanguages(request),
        "projectlink": _("Projects"),
        "projects": getprojects(request),
        "topstats": topstats,
        "instancetitle": pagelayout.get_title(),
        "translationlegend": {
            "translated": _("Translations are complete"),
            "fuzzy": _("Translations need to be checked (they are marked fuzzy)"),
            "untranslated": _("Untranslated"),
        },
        "permissions": request.permissions,
    }
    visible_langs = [l for l in templatevars["languages"] if l["total"] != 0]
    templatevars["moreprojects"] = len(templatevars["projects"]) > len(visible_langs)

    return render_to_response("index/index.html", templatevars, RequestContext(request))
Exemple #25
0
 def decorated_f(request, translation_project, *args, **kwargs):
     # For now, all permissions in a translation project are
     # relative to the root of that translation project.
     request.permissions = get_matching_permissions(
         get_profile(request.user), translation_project.directory)
     request.translation_project = translation_project
     return f(request, translation_project, *args, **kwargs)
Exemple #26
0
        def _wrapped(request, *args, **kwargs):
            path_obj = args[0]
            directory = (path_obj if isinstance(path_obj, Directory) else
                         path_obj.directory)

            # HACKISH: some old code relies on  `request.translation_project`,
            # `request.language` etc. being set, so we need to set that too.
            attr_name = CLS2ATTR.get(path_obj.__class__.__name__, 'path_obj')
            setattr(request, attr_name, path_obj)

            request.profile = get_profile(request.user)
            request.permissions = get_matching_permissions(
                request.profile, directory)

            if not permission_codes:
                return func(request, *args, **kwargs)

            permission_codes_list = permission_codes
            if isinstance(permission_codes, basestring):
                permission_codes_list = [permission_codes]

            for permission_code in permission_codes_list:
                if not check_permission(permission_code, request):
                    raise PermissionDenied(
                        _("Insufficient rights to access this page."), )

            return func(request, *args, **kwargs)
Exemple #27
0
    def GET(self, template_vars, request, translation_project, directory):
        template_vars = super(ProjectIndexView, self).GET(template_vars, request)
        request.permissions = get_matching_permissions(get_profile(request.user), translation_project.directory)
        state    = dispatch.ProjectIndexState(request.GET)
        project  = translation_project.project
        language = translation_project.language
        is_terminology = project.is_terminology
        description = translation_project.description

        directory_stats = get_raw_directory_stats(directory)
        directory_summary = get_directory_summary(directory, directory_stats)

        template_vars.update({
            'translation_project': translation_project,
            'description': description,
            'project': project,
            'language': language,
            'directory': directory,
            'children': get_children(request, translation_project, directory),
            'dir_summary': directory_summary,
            'stats_headings': get_stats_headings(),
            'topstats': gentopstats_translation_project(translation_project),
            'feed_path': directory.pootle_path[1:],
            })

        if check_permission('administrate', request):
            from pootle_translationproject.forms import DescriptionForm
            template_vars['form'] = DescriptionForm(instance=translation_project)

        return template_vars
Exemple #28
0
def _create_post_request(rf, directory, user, url='/', data={}):
    """Convenience function to create and setup fake POST requests."""
    request = rf.post(url, data=data)
    request.user = user
    request.profile = get_profile(user)
    request.permissions = get_matching_permissions(request.profile,
                                                   directory)
    return request
Exemple #29
0
def view(request, path):
    #FIXME: why do we have leading and trailing slashes in pootle_path?
    pootle_path = '/%s' % path

    directory = get_object_or_404(Directory, pootle_path=pootle_path)

    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   directory)

    if not check_permission('view', request):
        raise PermissionDenied

    template_vars = {'path': path, 'directory': directory}

    # Find language and project defaults, passed to handle_form
    proj = None
    lang = None
    if not directory.is_language() and not directory.is_project():
        translation_project = directory.translation_project
        lang = translation_project.language
        proj = translation_project.project
    else:
        if directory.is_language():
            lang = directory.language
            proj = None
        if directory.is_project():
            lang = None
            proj = directory.project

    if check_permission('administrate', request):
        # Thus, form is only set for the template if the user has
        # 'administrate' permission
        template_vars['form'] = handle_form(request, directory, proj, lang,
                                            template_vars)
        template_vars['title'] = directory_to_title(directory)
    else:
        template_vars['form'] = None

    if request.GET.get('all', False):
        template_vars['notices'] = Notice.objects.filter(
            directory__pootle_path__startswith=directory.pootle_path
        ).select_related('directory')[:30]
    else:
        template_vars['notices'] = Notice.objects.filter(
            directory=directory).select_related('directory')[:30]

    if not directory.is_language() and not directory.is_project():
        request.translation_project = directory.translation_project
        template_vars['navitems'] = [
            navbar_dict.make_directory_navbar_dict(request, directory)
        ]
        template_vars['translation_project'] = request.translation_project
        template_vars['language'] = request.translation_project.language
        template_vars['project'] = request.translation_project.project

    return render_to_response('notices.html',
                              template_vars,
                              context_instance=RequestContext(request))
 def decorated_f(request, path_obj, *args, **kwargs):
     request.permissions = get_matching_permissions(
         get_profile(request.user), path_obj.directory)
     if check_permission(permission_code, request):
         return f(request, path_obj, *args, **kwargs)
     else:
         raise PermissionDenied(
             _("You do not have rights to administer %s.",
               path_obj.fullname))
Exemple #31
0
 def decorated_function(request, path_obj, *args, **kwargs):
     request.permissions = get_matching_permissions(
         get_profile(request.user), path_obj.directory)
     if check_permission(permission_code, request):
         return function(request, path_obj, *args, **kwargs)
     else:
         raise PermissionDenied(
             _("You do not have rights to administer %s.",
               path_obj.fullname))
Exemple #32
0
def _create_post_request(rf, directory, user, url='/', data=None):
    """Convenience function to create and setup fake POST requests."""
    if data is None:
        data = {}

    request = rf.post(url, data=data)
    request.user = user
    request.permissions = get_matching_permissions(request.user, directory)
    return request
Exemple #33
0
def _create_post_request(rf, directory, user, url='/', data=None):
    """Convenience function to create and setup fake POST requests."""
    if data is None:
        data = {}

    request = rf.post(url, data=data)
    request.user = user
    request.permissions = get_matching_permissions(request.user, directory)
    return request
Exemple #34
0
def view(request, root_dir):
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   root_dir)
    can_edit = request.user.is_superuser

    languages = getlanguages(request)
    languages_table_fields = ['language', 'progress', 'activity']
    languages_table = {
        'id': 'index-languages',
        'proportional': False,
        'fields': languages_table_fields,
        'headings': get_table_headings(languages_table_fields),
        'items': languages,
    }

    projects = getprojects(request)
    projects_table_fields = ['project', 'progress', 'activity']
    projects_table = {
        'id': 'index-projects',
        'proportional': False,
        'fields': projects_table_fields,
        'headings': get_table_headings(projects_table_fields),
        'items': projects,
    }

    siteconfig = load_site_config()
    ctx = {
        'description': _(siteconfig.get('DESCRIPTION')),
        'keywords': [
            'Pootle',
            'translate',
            'translation',
            'localisation',
            'localization',
            'l10n',
            'traduction',
            'traduire',
        ],
        'topstats': gentopstats_root(),
        'permissions': request.permissions,
        'can_edit': can_edit,
        'languages_table': languages_table,
        'projects_table': projects_table,
        'resource_obj': request.resource_obj,
        'moreprojects': (len(projects) > len(languages))
    }

    if can_edit:
        from pootle_app.forms import GeneralSettingsForm
        ctx.update({
            'form': GeneralSettingsForm(siteconfig),
            'form_action': reverse('pootle-admin-edit-settings'),
        })

    return render_to_response('home/home.html', ctx,
                              RequestContext(request))
Exemple #35
0
    def method_wrapper(self, request, *args, **kwargs):
        User = get_user_model()
        request.profile = User.get(self.request.user)
        try:
            request.permissions = get_matching_permissions(
                request.profile,
                self.permission_context) or []
        except Http404 as e:
            # Test if lang code is not canonical but valid
            lang = Language.get_canonical(kwargs['language_code'])
            if lang is not None and lang.code != kwargs['language_code']:
                kwargs["language_code"] = lang.code
                return redirect(
                    resolve(request.path).view_name,
                    permanent=True,
                    **kwargs)

            elif kwargs["dir_path"] or kwargs.get("filename", None):
                try:
                    TranslationProject.objects.get(
                        project__code=kwargs["project_code"],
                        language__code=kwargs["language_code"])
                    # the TP exists so redirect to it
                    return redirect(
                        reverse(
                            'pootle-tp-browse',
                            kwargs={
                                k: v
                                for k, v
                                in kwargs.items()
                                if k in [
                                    "language_code",
                                    "project_code"]}))
                except TranslationProject.DoesNotExist:
                    pass

            # if we get here - the TP does not exist
            user_choice = self.request.COOKIES.get(
                'user-choice', None)
            if user_choice:
                url = None
                if user_choice == 'language':
                    url = reverse(
                        'pootle-language-browse',
                        args=[kwargs["language_code"]])
                elif user_choice == "project":
                    url = reverse(
                        'pootle-project-browse',
                        args=[kwargs["project_code"], '', ''])
                if url:
                    response = redirect(url)
                    response.delete_cookie('user-choice')
                    return response
            raise e
        return f(self, request, *args, **kwargs)
Exemple #36
0
def view(request, root_dir):
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   root_dir)
    can_edit = request.user.is_superuser

    languages = getlanguages(request)
    languages_table_fields = ['language', 'progress', 'activity']
    languages_table = {
        'id': 'index-languages',
        'proportional': False,
        'fields': languages_table_fields,
        'headings': get_table_headings(languages_table_fields),
        'items': languages,
    }

    projects = getprojects(request)
    projects_table_fields = ['project', 'progress', 'activity']
    projects_table = {
        'id': 'index-projects',
        'proportional': False,
        'fields': projects_table_fields,
        'headings': get_table_headings(projects_table_fields),
        'items': projects,
    }

    templatevars = {
        'description': _(settings.DESCRIPTION),
        'keywords': [
            'Pootle',
            'translate',
            'translation',
            'localisation',
            'localization',
            'l10n',
            'traduction',
            'traduire',
        ],
        'topstats': gentopstats_root(),
        'permissions': request.permissions,
        'can_edit': can_edit,
        'languages_table': languages_table,
        'projects_table': projects_table,
        'resource_obj': request.resource_obj,
    }
    templatevars['moreprojects'] = (len(projects) > len(languages))

    if can_edit:
        from pootle_misc.siteconfig import load_site_config
        from pootle_app.forms import GeneralSettingsForm
        siteconfig = load_site_config()
        setting_form = GeneralSettingsForm(siteconfig)
        templatevars['form'] = setting_form

    return render_to_response('index/index.html', templatevars,
                              RequestContext(request))
Exemple #37
0
def tp_review(request, translation_project, dir_path):
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   translation_project.directory)
    if not check_permission("view", request):
        raise PermissionDenied(_("You do not have rights to access review mode."))

    directory = get_object_or_404(Directory, pootle_path=translation_project.directory.pootle_path + dir_path)
    view_obj = TPReviewView({})
    return render_to_response("translation_project/tp_review.html",
                              view_obj(request, translation_project, directory),
                              context_instance=RequestContext(request))
Exemple #38
0
def view(request):
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   Directory.objects.root)
    can_edit = request.user.is_superuser

    topstats = gentopstats_root()
    languages = getlanguages(request)

    templatevars = {
        'description':
        _(settings.DESCRIPTION),
        'keywords': [
            'Pootle',
            'translate',
            'translation',
            'localisation',
            'localization',
            'l10n',
            'traduction',
            'traduire',
        ],
        'languages':
        languages,
        'projects':
        getprojects(request),
        'topstats':
        topstats,
        'translationlegend': {
            'translated':
            _('Translations are complete'),
            'fuzzy':
            _("Translations need to be checked "
              "(they are marked fuzzy)"),
            'untranslated':
            _('Untranslated')
        },
        'permissions':
        request.permissions,
        'can_edit':
        can_edit,
    }
    visible_langs = [l for l in languages if l['stats']['total']['words'] != 0]
    templatevars['moreprojects'] = (len(templatevars['projects']) >
                                    len(visible_langs))

    if can_edit:
        from pootle_misc.siteconfig import load_site_config
        from pootle_app.forms import GeneralSettingsForm
        siteconfig = load_site_config()
        setting_form = GeneralSettingsForm(siteconfig)
        templatevars['form'] = setting_form

    return render_to_response('index/index.html', templatevars,
                              RequestContext(request))
Exemple #39
0
def translate(request, pootle_path):
    if pootle_path[0] != '/':
        pootle_path = '/' + pootle_path
    try:
        store = Store.objects.select_related('translation_project', 'parent').get(pootle_path=pootle_path)
    except Store.DoesNotExist:
        raise Http404
    request.translation_project = store.translation_project
    request.permissions = get_matching_permissions(get_profile(request.user), request.translation_project.directory)

    return translate_page(request, store.units, store=store)
Exemple #40
0
def _check_permissions(request, directory, permission_code):
    """Checks if the current user has enough permissions defined by
    `permission_code` in the current`directory`.
    """
    request.permissions = get_matching_permissions(request.user, directory)

    if not permission_code:
        return

    if not check_permission(permission_code, request):
        raise PermissionDenied(get_permission_message(permission_code))
Exemple #41
0
def project_admin(request, project_code):
    """adding and deleting project languages"""
    current_project = Project.objects.get(code=project_code)
    request.permissions = get_matching_permissions(
        get_profile(request.user), current_project.directory)
    if not check_permission('administrate', request):
        raise PermissionDenied(_(
            "You do not have rights to administer this project."))

    template_translation_project = current_project. \
                                   get_template_translationproject()

    class TranslationProjectForm(forms.ModelForm):
        if template_translation_project is not None:
            update = forms.BooleanField(required=False, label=_(
                "Update from templates"))
        #FIXME: maybe we can detect if initialize is needed to avoid
        # displaying it when not relevant
        # initialize = forms.BooleanField(
        #     required=False, label=_("Initialize"))
        project = forms.ModelChoiceField(
            queryset=Project.objects.filter(pk=current_project.pk),
            initial=current_project.pk, widget=forms.HiddenInput)
        language = LiberalModelChoiceField(
            label=_("Language"),
            queryset=Language.objects.exclude(
                translationproject__project=current_project))
        class Meta:
            prefix = "existing_language"
            model = TranslationProject

        def process_extra_fields(self):
            if self.instance.pk is not None:
                if self.cleaned_data.get('initialize', None):
                    self.instance.initialize()

                if self.cleaned_data.get('update', None) or not \
                       self.instance.stores.count():
                    self.instance.update_from_templates()

    queryset = TranslationProject.objects.filter(
        project=current_project).order_by('pootle_path')
    model_args = {}
    model_args['project'] = {'code': current_project.code,
                             'name': current_project.fullname}
    model_args['formid'] = "translation-projects"
    model_args['submitname'] = "changetransprojects"
    link = lambda instance: '<a href="/wikitrans%s">%s</a>' % (
        l(instance.pootle_path + 'admin_permissions.html'), instance.language)
    return util.edit(
        request, 'project/project_admin.html', TranslationProject,
        model_args, link, linkfield="language",
        queryset=queryset, can_delete=True, form=TranslationProjectForm,
        formset=TranslationProjectFormSet)
Exemple #42
0
def tp_overview(request, translation_project, dir_path):
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   translation_project.directory)
    if not check_permission("view", request):
        raise PermissionDenied(_("You do not have rights to access this translation project."))
    directory = get_object_or_404(Directory, pootle_path=translation_project.directory.pootle_path + dir_path)
    view_obj = ProjectIndexView(forms=dict(upload=UploadHandler,
                                           update=UpdateHandler))
    return render_to_response("translation_project/tp_overview.html",
                              view_obj(request, translation_project, directory),
                              context_instance=RequestContext(request))
Exemple #43
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(
            get_profile(request.user), project.directory
    )

    if not check_permission('view', request):
        raise PermissionDenied

    can_edit = check_permission('administrate', request)

    translation_projects = project.translationproject_set.all()

    items = [make_language_item(request, translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)
    average = project_stats['translated']['percentage']

    topstats = gentopstats_project(project)

    table_fields = ['name', 'progress', 'total', 'need-translation', 'activity']
    table = {
        'id': 'project',
        'proportional': False,
        'fields': table_fields,
        'headings': get_table_headings(table_fields),
        'items': items,
    }

    templatevars = {
        'project': {
          'code': project.code,
          'name': project.fullname,
          'description': project.description,
          'summary': ungettext('%(languages)d language, %(average)d%% translated',
                               '%(languages)d languages, %(average)d%% translated',
                               languagecount, {"languages": languagecount,
                                               "average": average}),
        },
        'topstats': topstats,
        'can_edit': can_edit,
        'table': table,
    }

    if can_edit:
        from pootle_project.forms import DescriptionForm
        templatevars['form'] = DescriptionForm(instance=project)

    return render_to_response('project/project.html', templatevars,
                              context_instance=RequestContext(request))
Exemple #44
0
    def get_object(self, request, path):
        pootle_path = '/%s' % path
        directory = get_object_or_404(Directory, pootle_path=pootle_path)
        request.permissions = get_matching_permissions(get_profile(request.user), directory)
        if not check_permission('view', request):
            raise PermissionDenied
        self.directory = directory
        self.link = l(directory.pootle_path)
        self.recusrive = request.GET.get('all', False)

        return self.directory
Exemple #45
0
    def method_wrapper(self, request, *args, **kwargs):
        try:
            request.permissions = get_matching_permissions(
                request.user,
                self.permission_context) or []
        except Http404 as e:
            # Test if lang code is not canonical but valid
            lang = Language.get_canonical(kwargs['language_code'])
            if lang is not None and lang.code != kwargs['language_code']:
                kwargs["language_code"] = lang.code
                return redirect(
                    resolve(request.path).view_name,
                    permanent=True,
                    **kwargs)

            elif kwargs["dir_path"] or kwargs.get("filename", None):
                try:
                    TranslationProject.objects.get(
                        project__code=kwargs["project_code"],
                        language__code=kwargs["language_code"])
                    # the TP exists so redirect to it
                    return redirect(
                        reverse(
                            'pootle-tp-browse',
                            kwargs={
                                k: v
                                for k, v
                                in kwargs.items()
                                if k in [
                                    "language_code",
                                    "project_code"]}))
                except TranslationProject.DoesNotExist:
                    pass

            # if we get here - the TP does not exist
            user_choice = self.request.COOKIES.get(
                'user-choice', None)
            if user_choice:
                url = None
                if user_choice == 'language':
                    url = reverse(
                        'pootle-language-browse',
                        args=[kwargs["language_code"]])
                elif user_choice == "project":
                    url = reverse(
                        'pootle-project-browse',
                        args=[kwargs["project_code"], '', ''])
                if url:
                    response = redirect(url)
                    response.delete_cookie('user-choice')
                    return response
            raise e
        return f(self, request, *args, **kwargs)
def view(request, path):
    pootle_path = '/%s' % path
    directory = get_object_or_404(Directory, pootle_path=pootle_path)

    request.permissions = get_matching_permissions(get_profile(request.user), directory)
    if not check_permission('view', request):
        raise PermissionDenied

    feedgen = NoticeFeed(pootle_path, request, directory).get_feed(path)
    response = HttpResponse(mimetype=feedgen.mime_type)
    feedgen.write(response, 'utf-8')
    return response
Exemple #47
0
    def get_object(self, request, path):
        pootle_path = '/%s' % path
        directory = get_object_or_404(Directory, pootle_path=pootle_path)
        request.permissions = get_matching_permissions(
            get_profile(request.user), directory)
        if not check_permission('view', request):
            raise PermissionDenied
        self.directory = directory
        self.link = l(directory.pootle_path)
        self.recusrive = request.GET.get('all', False)

        return self.directory
Exemple #48
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   project.directory)

    if not check_permission('view', request):
        raise PermissionDenied

    can_edit = check_permission('administrate', request)

    translation_projects = project.translationproject_set.all()

    items = [make_language_item(request, translation_project) \
            for translation_project in translation_projects.iterator()]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))

    languagecount = len(translation_projects)
    project_stats = get_raw_stats(project)
    average = project_stats['translated']['percentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
            'code':
            project.code,
            'name':
            project.fullname,
            'description_html':
            project.description_html,
            'summary':
            ungettext('%(languages)d language, %(average)d%% translated',
                      '%(languages)d languages, %(average)d%% translated',
                      languagecount, {
                          "languages": languagecount,
                          "average": average
                      }),
        },
        'languages': items,
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'can_edit': can_edit,
    }

    if can_edit:
        from pootle_project.forms import DescriptionForm
        templatevars['form'] = DescriptionForm(instance=project)

    return render_to_response('project/project.html',
                              templatevars,
                              context_instance=RequestContext(request))
Exemple #49
0
def translate(request, pootle_path):
    if pootle_path[0] != '/':
        pootle_path = '/' + pootle_path
    try:
        store = Store.objects.select_related(
            'translation_project', 'parent').get(pootle_path=pootle_path)
    except Store.DoesNotExist:
        raise Http404
    request.translation_project = store.translation_project
    request.permissions = get_matching_permissions(
        get_profile(request.user), request.translation_project.directory)

    return translate_page(request, store.units, store=store)
Exemple #50
0
def project_language_index(request, project_code):
    """page listing all languages added to project"""
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   project.directory)
    if not check_permission('view', request):
        raise PermissionDenied

    translation_projects = project.translationproject_set.all()
    items = [
        make_language_item(request, translation_project)
        for translation_project in translation_projects.iterator()
    ]
    items.sort(lambda x, y: locale.strcoll(x['title'], y['title']))
    languagecount = len(translation_projects)
    totals = add_percentages(project.getquickstats())
    average = totals['translatedpercentage']

    topstats = gentopstats_project(project)

    templatevars = {
        'project': {
            'code':
            project.code,
            'name':
            project.fullname,
            'stats':
            ungettext('%(languages)d language, %(average)d%% translated',
                      '%(languages)d languages, %(average)d%% translated',
                      languagecount, {
                          "languages": languagecount,
                          "average": average
                      }),
        },
        'description': project.description,
        'adminlink': _('Admin'),
        'languages': items,
        'instancetitle': pagelayout.get_title(),
        'topstats': topstats,
        'statsheadings': get_stats_headings(),
        'translationlegend': {
            'translated': _('Translations are complete'),
            'fuzzy':
            _('Translations need to be checked (they are marked fuzzy)'),
            'untranslated': _('Untranslated')
        },
    }
    return render_to_response('project/project.html',
                              templatevars,
                              context_instance=RequestContext(request))
Exemple #51
0
def language_admin(request, language_code):
    # Check if the user can access this view
    language = get_object_or_404(Language, code=language_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   language.directory)
    if not check_permission('administrate', request):
        raise PermissionDenied(_("You do not have rights to administer this language."))

    template_vars = {
        "language": language,
        "directory": language.directory,
        "feed_path": '%s/' % language.code,
    }
    return admin_permissions(request, language.directory, "language/language_admin.html", template_vars)
Exemple #52
0
def view(request, path_obj):
    directory = path_obj.directory

    # Find language and project defaults, passed to handle_form.
    proj = None
    lang = None
    if directory.is_translationproject():
        trans_proj = path_obj
        lang = path_obj.language
        proj = path_obj.project
    elif directory.is_language():
        lang = path_obj
    elif directory.is_project():
        proj = path_obj
    else:
        # Notices lists are only shown for languages, projects or TPs.
        raise Http404

    # Set permissions on request in order to allow check them later using
    # different functions.
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   directory)

    if request.GET.get('all', False):
        criteria = {
            'directory__pootle_path__startswith': directory.pootle_path,
        }
    else:
        criteria = {
            'directory': directory,
        }

    ctx = {
        'page': 'news',

        'notification_url': reverse('pootle-notifications-feed',
                                    args=[path_obj.pootle_path[:1]]),
        'directory': directory,
        'title': directory_to_title(directory),
        'notices': Notice.objects.filter(**criteria) \
                                 .select_related('directory')[:30],
        'language': lang,
        'project': proj,
    }

    if check_permission('administrate', request):
        ctx['form'] = handle_form(request, directory, proj, lang, ctx)

    return render(request, "notifications/notices.html", ctx)
Exemple #53
0
def tp_review(request, translation_project, dir_path):
    request.permissions = get_matching_permissions(
        get_profile(request.user), translation_project.directory)
    if not check_permission("view", request):
        raise PermissionDenied(
            _("You do not have rights to access review mode."))

    directory = get_object_or_404(
        Directory,
        pootle_path=translation_project.directory.pootle_path + dir_path)
    view_obj = TPReviewView({})
    return render_to_response("translation_project/tp_review.html",
                              view_obj(request, translation_project,
                                       directory),
                              context_instance=RequestContext(request))
Exemple #54
0
def tp_overview(request, translation_project, dir_path):
    request.permissions = get_matching_permissions(
        get_profile(request.user), translation_project.directory)
    if not check_permission("view", request):
        raise PermissionDenied(
            _("You do not have rights to access this translation project."))
    directory = get_object_or_404(
        Directory,
        pootle_path=translation_project.directory.pootle_path + dir_path)
    view_obj = ProjectIndexView(
        forms=dict(upload=UploadHandler, update=UpdateHandler))
    return render_to_response("translation_project/tp_overview.html",
                              view_obj(request, translation_project,
                                       directory),
                              context_instance=RequestContext(request))
Exemple #55
0
def view(request, path):
    #FIXME: why do we have leading and trailing slashes in pootle_path?
    pootle_path = '/%s' % path
    directory = get_object_or_404(Directory, pootle_path=pootle_path)

    # Set permissions on request in order to allow check them later using
    # different functions.
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   directory)

    if request.GET.get('all', False):
        criteria = {
            'directory__pootle_path__startswith': directory.pootle_path,
        }
    else:
        criteria = {
            'directory': directory,
        }

    # Find language and project defaults, passed to handle_form
    proj = None
    lang = None
    if not directory.is_language() and not directory.is_project():
        trans_proj = directory.translation_project
        lang = trans_proj.language
        proj = trans_proj.project
    elif directory.is_language():
        lang = directory.language
    elif directory.is_project():
        proj = directory.project

    template_vars = {
        'path': path,
        'directory': directory,
        'title': directory_to_title(directory),
        'notices': Notice.objects.filter(**criteria) \
                                 .select_related('directory')[:30],
        'language': lang,
        'project': proj,
    }

    if check_permission('administrate', request):
        template_vars['form'] = handle_form(request, directory, proj, lang,
                                            template_vars)

    return render_to_response('notices.html',
                              template_vars,
                              context_instance=RequestContext(request))
Exemple #56
0
def project_admin_permissions(request, project_code):
    # Check if the user can access this view
    project = get_object_or_404(Project, code=project_code)
    request.permissions = get_matching_permissions(get_profile(request.user),
                                                   project.directory)
    if not check_permission('administrate', request):
        raise PermissionDenied(
            _("You do not have rights to administer this project."))

    template_vars = {
        "project": project,
        "directory": project.directory,
        "feed_path": project.pootle_path[1:],
    }
    return admin_permissions(request, project.directory,
                             "project/admin_permissions.html", template_vars)