Ejemplo n.º 1
0
 def get_upload_widget(self):
     ctx = {}
     if self.can_upload:
         ctx.update(handle_upload_form(self.request, self.tp))
         ctx.update(
             {'display_download': True,
              'has_sidebar': True})
     return ctx
Ejemplo n.º 2
0
 def get_upload_widget(self, project):
     ctx = {}
     has_upload = ("import_export" in settings.INSTALLED_APPS
                   and self.request.user.is_authenticated()
                   and check_permission('translate', self.request))
     if has_upload:
         ctx.update(handle_upload_form(self.request, project))
         ctx.update({'display_download': True, 'has_sidebar': True})
     return ctx
Ejemplo n.º 3
0
 def get_upload_widget(self, project):
     ctx = {}
     has_upload = (
         "import_export" in settings.INSTALLED_APPS
         and self.request.user.is_authenticated()
         and check_permission('translate', self.request))
     if has_upload:
         ctx.update(handle_upload_form(self.request, project))
         ctx.update(
             {'display_download': True,
              'has_sidebar': True})
     return ctx
Ejemplo n.º 4
0
 def get_upload_widget(self):
     ctx = {}
     has_upload = ("import_export" in settings.INSTALLED_APPS
                   and self.request.user.is_authenticated()
                   and check_permission('translate', self.request))
     if has_upload:
         if "po" in self.project.filetype_tool.valid_extensions:
             ctx.update(
                 handle_upload_form(self.request, self.project,
                                    self.language))
         ctx.update({'display_download': True, 'has_sidebar': True})
     return ctx
Ejemplo n.º 5
0
 def get_upload_widget(self):
     ctx = {}
     has_upload = (
         "import_export" in settings.INSTALLED_APPS
         and self.request.user.is_authenticated()
         and check_permission('translate', self.request))
     if has_upload:
         if "po" in self.project.filetype_tool.valid_extensions:
             ctx.update(handle_upload_form(
                 self.request,
                 self.project,
                 self.language))
         ctx.update(
             {'display_download': True,
              'has_sidebar': True})
     return ctx
Ejemplo n.º 6
0
def overview(request, translation_project, dir_path, filename=None):
    project = translation_project.project
    language = translation_project.language

    directory = request.directory
    store = request.store

    # TODO: cleanup and refactor, retrieve from cache
    try:
        ann_virtual_path = 'announcements/projects/' + project.code
        announcement = StaticPage.objects.live(request.user).get(
            virtual_path=ann_virtual_path, )
    except StaticPage.DoesNotExist:
        announcement = None

    has_announcement = announcement is not None
    has_sidebar = has_announcement
    is_sidebar_open = True
    stored_mtime = None
    new_mtime = None
    cookie_data = {}

    if SIDEBAR_COOKIE_NAME in request.COOKIES:
        json_str = unquote(request.COOKIES[SIDEBAR_COOKIE_NAME])
        cookie_data = json.loads(json_str)

        if 'isOpen' in cookie_data:
            is_sidebar_open = cookie_data['isOpen']

        if project.code in cookie_data:
            stored_mtime = cookie_data[project.code]

    if has_announcement:
        ann_mtime = dateformat.format(announcement.modified_on, 'U')
        if ann_mtime != stored_mtime:
            is_sidebar_open = True
            new_mtime = ann_mtime

    ctx = get_overview_context(request)

    # TODO improve plugin logic
    if "import_export" in settings.INSTALLED_APPS and request.user.is_authenticated(
    ):
        from import_export.views import handle_upload_form
        from pootle_app.models.permissions import check_permission

        ctx.update(handle_upload_form(request))

        has_download = (check_permission('translate', request)
                        or check_permission('suggest', request))
        ctx.update({
            'display_download': has_download,
        })
        has_sidebar = True

    if store is None:
        table_fields = [
            'name', 'progress', 'total', 'need-translation', 'suggestions',
            'critical', 'last-updated', 'activity'
        ]
        ctx.update({
            'table': {
                'id': 'tp',
                'fields': table_fields,
                'headings': get_table_headings(table_fields),
                'parent': get_parent(directory),
                'items': get_children(directory),
            }
        })

    ctx.update({
        'translation_project': translation_project,
        'project': project,
        'language': language,
        'stats': jsonify(request.resource_obj.get_stats()),
        'browser_extends': 'translation_projects/base.html',
        'announcement': announcement,
        'is_sidebar_open': is_sidebar_open,
        'has_sidebar': has_sidebar,
    })

    response = render(request, 'browser/overview.html', ctx)

    if new_mtime is not None:
        cookie_data[project.code] = new_mtime
        cookie_data = quote(json.dumps(cookie_data))
        response.set_cookie(SIDEBAR_COOKIE_NAME, cookie_data)

    return response
Ejemplo n.º 7
0
def overview(request, translation_project, dir_path, filename=None):
    project = translation_project.project
    language = translation_project.language

    directory = request.directory
    store = request.store
    is_admin = check_permission('administrate', request)

    # TODO: cleanup and refactor, retrieve from cache
    try:
        ann_virtual_path = 'announcements/projects/' + project.code
        announcement = StaticPage.objects.live(request.user).get(
            virtual_path=ann_virtual_path,
        )
    except StaticPage.DoesNotExist:
        announcement = None

    has_announcement = announcement is not None
    has_sidebar = has_announcement
    is_sidebar_open = True
    stored_mtime = None
    new_mtime = None
    cookie_data = {}

    if SIDEBAR_COOKIE_NAME in request.COOKIES:
        json_str = unquote(request.COOKIES[SIDEBAR_COOKIE_NAME])
        cookie_data = json.loads(json_str)

        if 'isOpen' in cookie_data:
            is_sidebar_open = cookie_data['isOpen']

        if project.code in cookie_data:
            stored_mtime = cookie_data[project.code]

    if has_announcement:
        ann_mtime = dateformat.format(announcement.modified_on, 'U')
        if ann_mtime != stored_mtime:
            is_sidebar_open = True
            new_mtime = ann_mtime

    ctx = get_overview_context(request)

    # TODO improve plugin logic
    if "import_export" in settings.INSTALLED_APPS and request.user.is_authenticated():
        from import_export.views import handle_upload_form

        ctx.update(handle_upload_form(request))

        has_download = (check_permission('translate', request) or
                        check_permission('suggest', request))
        ctx.update({
            'display_download': has_download,
        })
        has_sidebar = True

    stats = request.resource_obj.get_stats()

    if store is None:
        table_fields = ['name', 'progress', 'total', 'need-translation',
                        'suggestions', 'critical', 'last-updated', 'activity']
        ctx.update({
            'table': {
                'id': 'tp',
                'fields': table_fields,
                'headings': get_table_headings(table_fields),
                'parent': get_parent(directory),
                'items': get_children(directory),
            }
        })

        vfolders = get_vfolders(directory)
        if len(vfolders) > 0:
            table_fields = ['name', 'priority', 'progress', 'total',
                            'need-translation', 'suggestions', 'critical',
                            'activity']
            ctx.update({
                'vfolders': {
                    'id': 'vfolders',
                    'fields': table_fields,
                    'headings': get_table_headings(table_fields),
                    'items': get_vfolders(directory, all_vfolders=is_admin),
                },
            })

            #FIXME: set vfolders stats in the resource, don't inject them here.
            stats['vfolders'] = VirtualFolder.get_stats_for(
                directory.pootle_path,
                all_vfolders=is_admin
            )

    ctx.update({
        'translation_project': translation_project,
        'project': project,
        'language': language,
        'stats': jsonify(stats),
        'is_admin': is_admin,

        'browser_extends': 'translation_projects/base.html',

        'announcement': announcement,
        'is_sidebar_open': is_sidebar_open,
        'has_sidebar': has_sidebar,
    })

    response = render(request, 'browser/overview.html', ctx)

    if new_mtime is not None:
        cookie_data[project.code] = new_mtime
        cookie_data = quote(json.dumps(cookie_data))
        response.set_cookie(SIDEBAR_COOKIE_NAME, cookie_data)

    return response
Ejemplo n.º 8
0
Archivo: views.py Proyecto: Yelp/pootle
def browse(request, translation_project, dir_path, filename=None):
    project = translation_project.project
    language = translation_project.language

    directory = request.directory
    store = request.store
    is_admin = check_permission('administrate', request)

    ctx, cookie_data = get_sidebar_announcements_context(
        request,
        (project, language, translation_project, ),
    )

    ctx.update(get_browser_context(request))

    # TODO improve plugin logic
    if "import_export" in settings.INSTALLED_APPS:
        if request.user.is_authenticated():
            if check_permission('translate', request):
                ctx.update(handle_upload_form(request, project))
            ctx.update({'display_download': True,
                        'has_sidebar': True})

    stats = request.resource_obj.get_stats()

    if store is None:
        table_fields = ['name', 'progress', 'total', 'need-translation',
                        'suggestions', 'critical', 'last-updated', 'activity']
        ctx.update({
            'table': {
                'id': 'tp',
                'fields': table_fields,
                'headings': get_table_headings(table_fields),
                'items': get_children(directory),
            }
        })

        if 'virtualfolder' in settings.INSTALLED_APPS:
            vfolders = get_vfolders(directory, all_vfolders=is_admin)
            if len(vfolders) > 0:
                table_fields = ['name', 'priority', 'progress', 'total',
                                'need-translation', 'suggestions', 'critical',
                                'last-updated', 'activity']
                ctx.update({
                    'vfolders': {
                        'id': 'vfolders',
                        'fields': table_fields,
                        'headings': get_table_headings(table_fields),
                        'items': vfolders,
                    },
                })

                # FIXME: set vfolders stats in the resource, don't inject them
                # here.
                stats['vfolders'] = {}

                for vfolder_treeitem in directory.vf_treeitems.iterator():
                    if request.user.is_superuser or vfolder_treeitem.is_visible:
                        stats['vfolders'][vfolder_treeitem.code] = \
                            vfolder_treeitem.get_stats(include_children=False)

    ctx.update({
        'parent': get_parent(directory if store is None else store),
        'translation_project': translation_project,
        'project': project,
        'language': language,
        'stats': jsonify(stats),
        'is_admin': is_admin,
        'is_store': store is not None,

        'browser_extends': 'translation_projects/base.html',
    })

    response = render(request, 'browser/index.html', ctx)

    if cookie_data:
        response.set_cookie(SIDEBAR_COOKIE_NAME, cookie_data)

    return response
Ejemplo n.º 9
0
def browse(request, translation_project, dir_path, filename=None):
    project = translation_project.project
    language = translation_project.language

    directory = request.directory
    store = request.store
    is_admin = check_permission('administrate', request)

    ctx, cookie_data = get_sidebar_announcements_context(
        request,
        (
            project,
            language,
            translation_project,
        ),
    )

    ctx.update(get_browser_context(request))

    # TODO improve plugin logic
    if "import_export" in settings.INSTALLED_APPS:
        if request.user.is_authenticated():
            if check_permission('translate', request):
                ctx.update(handle_upload_form(request, project))
            ctx.update({'display_download': True, 'has_sidebar': True})

    stats = request.resource_obj.get_stats()

    if store is None:
        table_fields = [
            'name', 'progress', 'total', 'need-translation', 'suggestions',
            'critical', 'last-updated', 'activity'
        ]
        ctx.update({
            'table': {
                'id': 'tp',
                'fields': table_fields,
                'headings': get_table_headings(table_fields),
                'items': get_children(directory),
            }
        })

        if 'virtualfolder' in settings.INSTALLED_APPS:
            vfolders = get_vfolders(directory, all_vfolders=is_admin)
            if len(vfolders) > 0:
                table_fields = [
                    'name', 'priority', 'progress', 'total',
                    'need-translation', 'suggestions', 'critical',
                    'last-updated', 'activity'
                ]
                ctx.update({
                    'vfolders': {
                        'id': 'vfolders',
                        'fields': table_fields,
                        'headings': get_table_headings(table_fields),
                        'items': vfolders,
                    },
                })

                # FIXME: set vfolders stats in the resource, don't inject them
                # here.
                stats['vfolders'] = {}

                for vfolder_treeitem in directory.vf_treeitems.iterator():
                    if request.user.is_superuser or vfolder_treeitem.is_visible:
                        stats['vfolders'][vfolder_treeitem.code] = \
                            vfolder_treeitem.get_stats(include_children=False)

    ctx.update({
        'parent': get_parent(directory if store is None else store),
        'translation_project': translation_project,
        'project': project,
        'language': language,
        'stats': jsonify(stats),
        'is_admin': is_admin,
        'is_store': store is not None,
        'browser_extends': 'translation_projects/base.html',
    })

    response = render(request, 'browser/index.html', ctx)

    if cookie_data:
        response.set_cookie(SIDEBAR_COOKIE_NAME, cookie_data)

    return response
Ejemplo n.º 10
0
def overview(request, translation_project, dir_path, filename=None):
    project = translation_project.project
    language = translation_project.language

    directory = request.directory
    store = request.store
    is_admin = check_permission('administrate', request)

    ctx, cookie_data = get_sidebar_announcements_context(request, project.code,
                                                         language.code)

    ctx.update(get_overview_context(request))

    # TODO improve plugin logic
    if "import_export" in settings.INSTALLED_APPS and request.user.is_authenticated():
        from import_export.views import handle_upload_form

        ctx.update(handle_upload_form(request))

        has_download = (check_permission('translate', request) or
                        check_permission('suggest', request))
        ctx.update({
            'display_download': has_download,
            'has_sidebar': True,
        })

    stats = request.resource_obj.get_stats()

    if store is None:
        table_fields = ['name', 'progress', 'total', 'need-translation',
                        'suggestions', 'critical', 'last-updated', 'activity']
        ctx.update({
            'table': {
                'id': 'tp',
                'fields': table_fields,
                'headings': get_table_headings(table_fields),
                'items': get_children(directory),
            }
        })

        vfolders = get_vfolders(directory, all_vfolders=is_admin)
        if len(vfolders) > 0:
            table_fields = ['name', 'priority', 'progress', 'total',
                            'need-translation', 'suggestions', 'critical',
                            'activity']
            ctx.update({
                'vfolders': {
                    'id': 'vfolders',
                    'fields': table_fields,
                    'headings': get_table_headings(table_fields),
                    'items': vfolders,
                },
            })

            #FIXME: set vfolders stats in the resource, don't inject them here.
            stats['vfolders'] = VirtualFolder.get_stats_for(
                directory.pootle_path,
                all_vfolders=is_admin
            )

    ctx.update({
        'parent': get_parent(directory if store is None else store),
        'translation_project': translation_project,
        'project': project,
        'language': language,
        'stats': jsonify(stats),
        'is_admin': is_admin,

        'browser_extends': 'translation_projects/base.html',
    })

    response = render(request, 'browser/overview.html', ctx)

    if cookie_data:
        response.set_cookie(SIDEBAR_COOKIE_NAME, cookie_data)

    return response
Ejemplo n.º 11
0
def browse(request, translation_project, dir_path, filename=None):
    project = translation_project.project
    language = translation_project.language

    directory = request.directory
    store = request.store
    is_admin = check_permission("administrate", request)

    ctx, cookie_data = get_sidebar_announcements_context(request, project.code, language.code)

    ctx.update(get_browser_context(request))

    # TODO improve plugin logic
    if "import_export" in settings.INSTALLED_APPS and request.user.is_authenticated():
        from import_export.views import handle_upload_form

        ctx.update(handle_upload_form(request))

        has_download = not translation_project.is_terminology_project and (
            check_permission("translate", request) or check_permission("suggest", request)
        )
        ctx.update({"display_download": has_download, "has_sidebar": True})

    stats = request.resource_obj.get_stats()

    if store is None:
        table_fields = [
            "name",
            "progress",
            "total",
            "need-translation",
            "suggestions",
            "critical",
            "last-updated",
            "activity",
        ]
        ctx.update(
            {
                "table": {
                    "id": "tp",
                    "fields": table_fields,
                    "headings": get_table_headings(table_fields),
                    "items": get_children(directory),
                }
            }
        )

        if "virtualfolder" in settings.INSTALLED_APPS:
            vfolders = get_vfolders(directory, all_vfolders=is_admin)
            if len(vfolders) > 0:
                table_fields = [
                    "name",
                    "priority",
                    "progress",
                    "total",
                    "need-translation",
                    "suggestions",
                    "critical",
                    "activity",
                ]
                ctx.update(
                    {
                        "vfolders": {
                            "id": "vfolders",
                            "fields": table_fields,
                            "headings": get_table_headings(table_fields),
                            "items": vfolders,
                        }
                    }
                )

                # FIXME: set vfolders stats in the resource, don't inject them here.
                stats["vfolders"] = {}

                for vfolder_treeitem in directory.vf_treeitems.iterator():
                    if request.user.is_superuser or vfolder_treeitem.is_visible:
                        stats["vfolders"][vfolder_treeitem.code] = vfolder_treeitem.get_stats(include_children=False)

    ctx.update(
        {
            "parent": get_parent(directory if store is None else store),
            "translation_project": translation_project,
            "project": project,
            "language": language,
            "stats": jsonify(stats),
            "is_admin": is_admin,
            "browser_extends": "translation_projects/base.html",
        }
    )

    response = render(request, "browser/index.html", ctx)

    if cookie_data:
        response.set_cookie(SIDEBAR_COOKIE_NAME, cookie_data)

    return response