README.md edited
This commit is contained in:
1
.venv/lib/python3.10/site-packages/jet/__init__.py
Normal file
1
.venv/lib/python3.10/site-packages/jet/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
VERSION = '1.0.8'
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
5
.venv/lib/python3.10/site-packages/jet/admin.py
Normal file
5
.venv/lib/python3.10/site-packages/jet/admin.py
Normal file
@@ -0,0 +1,5 @@
|
||||
from django.contrib import admin
|
||||
|
||||
|
||||
class CompactInline(admin.options.InlineModelAdmin):
|
||||
template = 'admin/edit_inline/compact.html'
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
317
.venv/lib/python3.10/site-packages/jet/dashboard/dashboard.py
Normal file
317
.venv/lib/python3.10/site-packages/jet/dashboard/dashboard.py
Normal file
@@ -0,0 +1,317 @@
|
||||
from importlib import import_module
|
||||
try:
|
||||
from django.core.urlresolvers import reverse
|
||||
except ImportError: # Django 1.11
|
||||
from django.urls import reverse
|
||||
|
||||
from django.template.loader import render_to_string
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.models import UserDashboardModule
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.ordered_set import OrderedSet
|
||||
from jet.utils import get_admin_site_name, context_to_dict
|
||||
|
||||
try:
|
||||
from django.template.context_processors import csrf
|
||||
except ImportError:
|
||||
from django.core.context_processors import csrf
|
||||
|
||||
|
||||
class Dashboard(object):
|
||||
"""
|
||||
Base dashboard class. All custom dashboards should inherit it.
|
||||
"""
|
||||
|
||||
#: Number of columns in which widgets can be placed
|
||||
columns = 2
|
||||
|
||||
#: Dashboard Modules (widgets) that dashboard is filled with, when the user open it for the first time
|
||||
#:
|
||||
#: List of dashboard module **instances**
|
||||
children = None
|
||||
|
||||
#: Dashboard Modules (widgets) that user can add to dashboard at any time
|
||||
# (not created when the user open dashboard for the first time)
|
||||
#:
|
||||
#: List of dashboard module **classes**
|
||||
available_children = None
|
||||
app_label = None
|
||||
context = None
|
||||
modules = None
|
||||
|
||||
class Media:
|
||||
css = ()
|
||||
js = ()
|
||||
|
||||
def __init__(self, context, **kwargs):
|
||||
for key in kwargs:
|
||||
if hasattr(self.__class__, key):
|
||||
setattr(self, key, kwargs[key])
|
||||
self.children = self.children or []
|
||||
self.available_children = self.available_children or []
|
||||
self.set_context(context)
|
||||
|
||||
def set_context(self, context):
|
||||
self.context = context
|
||||
self.init_with_context(context)
|
||||
self.load_modules()
|
||||
|
||||
def init_with_context(self, context):
|
||||
"""
|
||||
Override this method to fill your custom **Dashboard** class with widgets.
|
||||
You should add your widgets to ``children`` and ``available_children`` attributes.
|
||||
|
||||
Usage example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.dashboard import Dashboard, AppIndexDashboard
|
||||
|
||||
|
||||
class CustomIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.available_children.append(modules.LinkList)
|
||||
self.children.append(modules.LinkList(
|
||||
_('Support'),
|
||||
children=[
|
||||
{
|
||||
'title': _('Django documentation'),
|
||||
'url': 'http://docs.djangoproject.com/',
|
||||
'external': True,
|
||||
},
|
||||
{
|
||||
'title': _('Django "django-users" mailing list'),
|
||||
'url': 'http://groups.google.com/group/django-users',
|
||||
'external': True,
|
||||
},
|
||||
{
|
||||
'title': _('Django irc channel'),
|
||||
'url': 'irc://irc.freenode.net/django',
|
||||
'external': True,
|
||||
},
|
||||
],
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
"""
|
||||
pass
|
||||
|
||||
def load_module(self, module_fullname):
|
||||
package, module_name = module_fullname.rsplit('.', 1)
|
||||
package = import_module(package)
|
||||
module = getattr(package, module_name)
|
||||
|
||||
return module
|
||||
|
||||
def create_initial_module_models(self, user):
|
||||
module_models = []
|
||||
|
||||
i = 0
|
||||
|
||||
for module in self.children:
|
||||
column = module.column if module.column is not None else i % self.columns
|
||||
order = module.order if module.order is not None else int(i / self.columns)
|
||||
|
||||
module_models.append(UserDashboardModule.objects.create(
|
||||
title=module.title,
|
||||
app_label=self.app_label,
|
||||
user=user.pk,
|
||||
module=module.fullname(),
|
||||
column=column,
|
||||
order=order,
|
||||
settings=module.dump_settings(),
|
||||
children=module.dump_children()
|
||||
))
|
||||
i += 1
|
||||
|
||||
return module_models
|
||||
|
||||
def load_modules(self):
|
||||
module_models = UserDashboardModule.objects.filter(
|
||||
app_label=self.app_label,
|
||||
user=self.context['request'].user.pk
|
||||
).all()
|
||||
|
||||
if len(module_models) == 0:
|
||||
module_models = self.create_initial_module_models(self.context['request'].user)
|
||||
|
||||
loaded_modules = []
|
||||
|
||||
for module_model in module_models:
|
||||
module_cls = module_model.load_module()
|
||||
if module_cls is not None:
|
||||
module = module_cls(model=module_model, context=self.context)
|
||||
loaded_modules.append(module)
|
||||
|
||||
self.modules = loaded_modules
|
||||
|
||||
def render(self):
|
||||
context = context_to_dict(self.context)
|
||||
context.update({
|
||||
'columns': range(self.columns),
|
||||
'modules': self.modules,
|
||||
'app_label': self.app_label,
|
||||
})
|
||||
context.update(csrf(context['request']))
|
||||
|
||||
return render_to_string('jet.dashboard/dashboard.html', context)
|
||||
|
||||
def render_tools(self):
|
||||
context = context_to_dict(self.context)
|
||||
context.update({
|
||||
'children': self.children,
|
||||
'app_label': self.app_label,
|
||||
'available_children': self.available_children
|
||||
})
|
||||
context.update(csrf(context['request']))
|
||||
|
||||
return render_to_string('jet.dashboard/dashboard_tools.html', context)
|
||||
|
||||
def media(self):
|
||||
unique_css = OrderedSet()
|
||||
unique_js = OrderedSet()
|
||||
|
||||
for js in getattr(self.Media, 'js', ()):
|
||||
unique_js.add(js)
|
||||
for css in getattr(self.Media, 'css', ()):
|
||||
unique_css.add(css)
|
||||
|
||||
for module in self.modules:
|
||||
for js in getattr(module.Media, 'js', ()):
|
||||
unique_js.add(js)
|
||||
for css in getattr(module.Media, 'css', ()):
|
||||
unique_css.add(css)
|
||||
|
||||
class Media:
|
||||
css = list(unique_css)
|
||||
js = list(unique_js)
|
||||
|
||||
return Media
|
||||
|
||||
|
||||
class AppIndexDashboard(Dashboard):
|
||||
def get_app_content_types(self):
|
||||
return self.app_label + '.*',
|
||||
|
||||
def models(self):
|
||||
return self.app_label + '.*',
|
||||
|
||||
|
||||
class DefaultIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.available_children.append(modules.LinkList)
|
||||
self.available_children.append(modules.Feed)
|
||||
|
||||
site_name = get_admin_site_name(context)
|
||||
# append a link list module for "quick links"
|
||||
self.children.append(modules.LinkList(
|
||||
_('Quick links'),
|
||||
layout='inline',
|
||||
draggable=False,
|
||||
deletable=False,
|
||||
collapsible=False,
|
||||
children=[
|
||||
[_('Return to site'), '/'],
|
||||
[_('Change password'),
|
||||
reverse('%s:password_change' % site_name)],
|
||||
[_('Log out'), reverse('%s:logout' % site_name)],
|
||||
],
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
# append an app list module for "Applications"
|
||||
self.children.append(modules.AppList(
|
||||
_('Applications'),
|
||||
exclude=('auth.*',),
|
||||
column=1,
|
||||
order=0
|
||||
))
|
||||
|
||||
# append an app list module for "Administration"
|
||||
self.children.append(modules.AppList(
|
||||
_('Administration'),
|
||||
models=('auth.*',),
|
||||
column=2,
|
||||
order=0
|
||||
))
|
||||
|
||||
# append a recent actions module
|
||||
self.children.append(modules.RecentActions(
|
||||
_('Recent Actions'),
|
||||
10,
|
||||
column=0,
|
||||
order=1
|
||||
))
|
||||
|
||||
# append a feed module
|
||||
self.children.append(modules.Feed(
|
||||
_('Latest Django News'),
|
||||
feed_url='http://www.djangoproject.com/rss/weblog/',
|
||||
limit=5,
|
||||
column=1,
|
||||
order=1
|
||||
))
|
||||
|
||||
# append another link list module for "support".
|
||||
self.children.append(modules.LinkList(
|
||||
_('Support'),
|
||||
children=[
|
||||
{
|
||||
'title': _('Django documentation'),
|
||||
'url': 'http://docs.djangoproject.com/',
|
||||
'external': True,
|
||||
},
|
||||
{
|
||||
'title': _('Django "django-users" mailing list'),
|
||||
'url': 'http://groups.google.com/group/django-users',
|
||||
'external': True,
|
||||
},
|
||||
{
|
||||
'title': _('Django irc channel'),
|
||||
'url': 'irc://irc.freenode.net/django',
|
||||
'external': True,
|
||||
},
|
||||
],
|
||||
column=2,
|
||||
order=1
|
||||
))
|
||||
|
||||
|
||||
class DefaultAppIndexDashboard(AppIndexDashboard):
|
||||
def init_with_context(self, context):
|
||||
self.available_children.append(modules.LinkList)
|
||||
|
||||
self.children.append(modules.ModelList(
|
||||
title=_('Application models'),
|
||||
models=self.models(),
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
self.children.append(modules.RecentActions(
|
||||
include_list=self.get_app_content_types(),
|
||||
column=1,
|
||||
order=0
|
||||
))
|
||||
|
||||
|
||||
class DashboardUrls(object):
|
||||
_urls = []
|
||||
|
||||
def get_urls(self):
|
||||
return self._urls
|
||||
|
||||
def register_url(self, url):
|
||||
self._urls.append(url)
|
||||
|
||||
def register_urls(self, urls):
|
||||
self._urls.extend(urls)
|
||||
|
||||
urls = DashboardUrls()
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,444 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
import json
|
||||
from django import forms
|
||||
try:
|
||||
from django.core.urlresolvers import reverse
|
||||
except ImportError: # Django 1.11
|
||||
from django.urls import reverse
|
||||
|
||||
from django.forms import Widget
|
||||
from django.utils import formats
|
||||
from django.utils.html import format_html
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.text import capfirst
|
||||
from googleapiclient.discovery import build
|
||||
import httplib2
|
||||
from jet.dashboard.modules import DashboardModule
|
||||
from oauth2client.client import flow_from_clientsecrets, OAuth2Credentials, AccessTokenRefreshError, Storage
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
try:
|
||||
from django.utils.encoding import force_unicode
|
||||
except ImportError:
|
||||
from django.utils.encoding import force_text as force_unicode
|
||||
|
||||
try:
|
||||
from django.forms.utils import flatatt
|
||||
except ImportError:
|
||||
from django.forms.util import flatatt
|
||||
|
||||
JET_MODULE_GOOGLE_ANALYTICS_CLIENT_SECRETS_FILE = getattr(
|
||||
settings,
|
||||
'JET_MODULE_GOOGLE_ANALYTICS_CLIENT_SECRETS_FILE',
|
||||
''
|
||||
)
|
||||
|
||||
|
||||
class ModuleCredentialStorage(Storage):
|
||||
def __init__(self, module):
|
||||
super(ModuleCredentialStorage, self).__init__()
|
||||
self.module = module
|
||||
|
||||
def locked_get(self):
|
||||
pass
|
||||
|
||||
def locked_put(self, credentials):
|
||||
pass
|
||||
|
||||
def locked_delete(self):
|
||||
pass
|
||||
|
||||
def get(self):
|
||||
try:
|
||||
settings = json.loads(self.module.settings)
|
||||
credential = settings['credential']
|
||||
return OAuth2Credentials.from_json(credential)
|
||||
except (ValueError, KeyError):
|
||||
return None
|
||||
|
||||
def put(self, credentials):
|
||||
self.module.update_settings({'credential': credentials.to_json()})
|
||||
|
||||
def delete(self):
|
||||
self.module.pop_settings(('credential',))
|
||||
|
||||
|
||||
class GoogleAnalyticsClient:
|
||||
credential = None
|
||||
analytics_service = None
|
||||
|
||||
def __init__(self, storage=None, redirect_uri=None):
|
||||
self.FLOW = flow_from_clientsecrets(
|
||||
JET_MODULE_GOOGLE_ANALYTICS_CLIENT_SECRETS_FILE,
|
||||
scope='https://www.googleapis.com/auth/analytics.readonly',
|
||||
redirect_uri=redirect_uri,
|
||||
prompt='consent'
|
||||
)
|
||||
|
||||
if storage is not None:
|
||||
credential = storage.get()
|
||||
credential.set_store(storage)
|
||||
self.set_credential(credential)
|
||||
|
||||
def get_oauth_authorize_url(self, state=''):
|
||||
self.FLOW.params['state'] = state
|
||||
authorize_url = self.FLOW.step1_get_authorize_url()
|
||||
return authorize_url
|
||||
|
||||
def set_credential(self, credential):
|
||||
self.credential = credential
|
||||
self.set_analytics_service(self.credential)
|
||||
|
||||
def set_credential_from_request(self, request):
|
||||
self.set_credential(self.FLOW.step2_exchange(request.GET))
|
||||
|
||||
def set_analytics_service(self, credential):
|
||||
http = httplib2.Http()
|
||||
http = credential.authorize(http)
|
||||
self.analytics_service = build('analytics', 'v3', http=http)
|
||||
|
||||
def api_profiles(self):
|
||||
if self.analytics_service is None:
|
||||
return None, None
|
||||
|
||||
try:
|
||||
profiles = self.analytics_service.management().profiles().list(
|
||||
accountId='~all',
|
||||
webPropertyId='~all'
|
||||
).execute()
|
||||
|
||||
return profiles['items'], None
|
||||
except (TypeError, KeyError) as e:
|
||||
return None, e
|
||||
|
||||
def api_ga(self, profile_id, date1, date2, group=None):
|
||||
if self.analytics_service is None:
|
||||
return None, None
|
||||
|
||||
if group == 'day':
|
||||
dimensions = 'ga:date'
|
||||
elif group == 'week':
|
||||
dimensions = 'ga:year,ga:week'
|
||||
elif group == 'month':
|
||||
dimensions = 'ga:year,ga:month'
|
||||
else:
|
||||
dimensions = ''
|
||||
|
||||
try:
|
||||
data = self.analytics_service.data().ga().get(
|
||||
ids='ga:' + profile_id,
|
||||
start_date=date1.strftime('%Y-%m-%d'),
|
||||
end_date=date2.strftime('%Y-%m-%d'),
|
||||
metrics='ga:users,ga:sessions,ga:pageviews',
|
||||
dimensions=dimensions
|
||||
).execute()
|
||||
|
||||
return data, None
|
||||
except TypeError as e:
|
||||
return None, e
|
||||
|
||||
|
||||
class CredentialWidget(Widget):
|
||||
module = None
|
||||
|
||||
def render(self, name, value, attrs=None):
|
||||
if value and len(value) > 0:
|
||||
link = '<a href="%s">%s</a>' % (
|
||||
reverse('jet-dashboard:google-analytics-revoke', kwargs={'pk': self.module.model.pk}),
|
||||
force_text(_('Revoke access'))
|
||||
)
|
||||
else:
|
||||
link = '<a href="%s">%s</a>' % (
|
||||
reverse('jet-dashboard:google-analytics-grant', kwargs={'pk': self.module.model.pk}),
|
||||
force_text(_('Grant access'))
|
||||
)
|
||||
|
||||
attrs = self.build_attrs({
|
||||
'type': 'hidden',
|
||||
'name': 'credential',
|
||||
})
|
||||
attrs['value'] = force_unicode(value) if value else ''
|
||||
|
||||
return format_html('%s<input{} />' % link, flatatt(attrs))
|
||||
|
||||
|
||||
class GoogleAnalyticsSettingsForm(forms.Form):
|
||||
credential = forms.CharField(label=_('Access'), widget=CredentialWidget)
|
||||
counter = forms.ChoiceField(label=_('Counter'))
|
||||
period = forms.ChoiceField(label=_('Statistics period'), choices=(
|
||||
(0, _('Today')),
|
||||
(6, _('Last week')),
|
||||
(30, _('Last month')),
|
||||
(31 * 3 - 1, _('Last quarter')),
|
||||
(364, _('Last year')),
|
||||
))
|
||||
|
||||
def set_module(self, module):
|
||||
self.fields['credential'].widget.module = module
|
||||
self.set_counter_choices(module)
|
||||
|
||||
def set_counter_choices(self, module):
|
||||
counters = module.counters()
|
||||
if counters is not None:
|
||||
self.fields['counter'].choices = (('', '-- %s --' % force_text(_('none'))),)
|
||||
self.fields['counter'].choices.extend(map(lambda x: (x['id'], x['websiteUrl']), counters))
|
||||
else:
|
||||
label = force_text(_('grant access first')) if module.credential is None else force_text(_('counters loading failed'))
|
||||
self.fields['counter'].choices = (('', '-- %s -- ' % label),)
|
||||
|
||||
|
||||
class GoogleAnalyticsChartSettingsForm(GoogleAnalyticsSettingsForm):
|
||||
show = forms.ChoiceField(label=_('Show'), choices=(
|
||||
('ga:users', capfirst(_('users'))),
|
||||
('ga:sessions', capfirst(_('sessions'))),
|
||||
('ga:pageviews', capfirst(_('views'))),
|
||||
))
|
||||
group = forms.ChoiceField(label=_('Group'), choices=(
|
||||
('day', _('By day')),
|
||||
('week', _('By week')),
|
||||
('month', _('By month')),
|
||||
))
|
||||
|
||||
|
||||
class GoogleAnalyticsPeriodVisitorsSettingsForm(GoogleAnalyticsSettingsForm):
|
||||
group = forms.ChoiceField(label=_('Group'), choices=(
|
||||
('day', _('By day')),
|
||||
('week', _('By week')),
|
||||
('month', _('By month')),
|
||||
))
|
||||
|
||||
|
||||
class GoogleAnalyticsBase(DashboardModule):
|
||||
settings_form = GoogleAnalyticsSettingsForm
|
||||
ajax_load = True
|
||||
contrast = True
|
||||
period = None
|
||||
credential = None
|
||||
counter = None
|
||||
error = None
|
||||
storage = None
|
||||
|
||||
def __init__(self, title=None, period=None, **kwargs):
|
||||
kwargs.update({'period': period})
|
||||
super(GoogleAnalyticsBase, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'period': self.period,
|
||||
'credential': self.credential,
|
||||
'counter': self.counter
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
try:
|
||||
self.period = int(settings.get('period'))
|
||||
except TypeError:
|
||||
self.period = 0
|
||||
self.credential = settings.get('credential')
|
||||
self.storage = ModuleCredentialStorage(self.model)
|
||||
self.counter = settings.get('counter')
|
||||
|
||||
def init_with_context(self, context):
|
||||
raise NotImplementedError('subclasses of GoogleAnalytics must provide a init_with_context() method')
|
||||
|
||||
def counters(self):
|
||||
try:
|
||||
client = GoogleAnalyticsClient(self.storage)
|
||||
profiles, exception = client.api_profiles()
|
||||
return profiles
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
def get_grouped_date(self, data, group):
|
||||
if group == 'week':
|
||||
date = datetime.datetime.strptime(
|
||||
'%s-%s-%s' % (data['ga_year'], data['ga_week'], '0'),
|
||||
'%Y-%W-%w'
|
||||
)
|
||||
elif group == 'month':
|
||||
date = datetime.datetime.strptime(data['ga_year'] + data['ga_month'], '%Y%m')
|
||||
else:
|
||||
date = datetime.datetime.strptime(data['ga_date'], '%Y%m%d')
|
||||
return date
|
||||
|
||||
def format_grouped_date(self, data, group):
|
||||
date = self.get_grouped_date(data, group)
|
||||
|
||||
if group == 'week':
|
||||
date = u'%s — %s' % (
|
||||
(date - datetime.timedelta(days=6)).strftime('%d.%m'),
|
||||
date.strftime('%d.%m')
|
||||
)
|
||||
elif group == 'month':
|
||||
date = date.strftime('%b, %Y')
|
||||
else:
|
||||
date = formats.date_format(date, 'DATE_FORMAT')
|
||||
return date
|
||||
|
||||
def counter_attached(self):
|
||||
if self.credential is None:
|
||||
self.error = mark_safe(_('Please <a href="%s">attach Google account and choose Google Analytics counter</a> to start using widget') % reverse('jet-dashboard:update_module', kwargs={'pk': self.model.pk}))
|
||||
return False
|
||||
elif self.counter is None:
|
||||
self.error = mark_safe(_('Please <a href="%s">select Google Analytics counter</a> to start using widget') % reverse('jet-dashboard:update_module', kwargs={'pk': self.model.pk}))
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def api_ga(self, group=None):
|
||||
if self.counter_attached():
|
||||
date1 = datetime.datetime.now() - datetime.timedelta(days=self.period)
|
||||
date2 = datetime.datetime.now()
|
||||
|
||||
try:
|
||||
client = GoogleAnalyticsClient(self.storage)
|
||||
result, exception = client.api_ga(self.counter, date1, date2, group)
|
||||
|
||||
if exception is not None:
|
||||
raise exception
|
||||
|
||||
return result
|
||||
except Exception as e:
|
||||
error = _('API request failed.')
|
||||
if isinstance(e, AccessTokenRefreshError):
|
||||
error += _(' Try to <a href="%s">revoke and grant access</a> again') % reverse('jet-dashboard:update_module', kwargs={'pk': self.model.pk})
|
||||
self.error = mark_safe(error)
|
||||
|
||||
|
||||
class GoogleAnalyticsVisitorsTotals(GoogleAnalyticsBase):
|
||||
"""
|
||||
Google Analytics widget that shows total number of users, sessions and viewers for a particular period of time.
|
||||
Period may be following: Today, Last week, Last month, Last quarter, Last year
|
||||
"""
|
||||
|
||||
title = _('Google Analytics visitors totals')
|
||||
template = 'jet.dashboard/modules/google_analytics_visitors_totals.html'
|
||||
|
||||
#: Which period should be displayed. Allowed values - integer of days
|
||||
period = None
|
||||
|
||||
def __init__(self, title=None, period=None, **kwargs):
|
||||
kwargs.update({'period': period})
|
||||
super(GoogleAnalyticsVisitorsTotals, self).__init__(title, **kwargs)
|
||||
|
||||
def init_with_context(self, context):
|
||||
result = self.api_ga()
|
||||
|
||||
if result is not None:
|
||||
try:
|
||||
self.children.append({'title': _('users'), 'value': result['totalsForAllResults']['ga:users']})
|
||||
self.children.append({'title': _('sessions'), 'value': result['totalsForAllResults']['ga:sessions']})
|
||||
self.children.append({'title': _('views'), 'value': result['totalsForAllResults']['ga:pageviews']})
|
||||
except KeyError:
|
||||
self.error = _('Bad server response')
|
||||
|
||||
|
||||
class GoogleAnalyticsVisitorsChart(GoogleAnalyticsBase):
|
||||
"""
|
||||
Google Analytics widget that shows users/sessions/viewer chart for a particular period of time.
|
||||
Data is grouped by day, week or month
|
||||
Period may be following: Today, Last week, Last month, Last quarter, Last year
|
||||
"""
|
||||
|
||||
title = _('Google Analytics visitors chart')
|
||||
template = 'jet.dashboard/modules/google_analytics_visitors_chart.html'
|
||||
style = 'overflow-x: auto;'
|
||||
|
||||
#: Which period should be displayed. Allowed values - integer of days
|
||||
period = None
|
||||
|
||||
#: What data should be shown. Possible values: ``ga:users``, ``ga:sessions``, ``ga:pageviews``
|
||||
show = None
|
||||
|
||||
#: Sets grouping of data. Possible values: ``day``, ``week``, ``month``
|
||||
group = None
|
||||
settings_form = GoogleAnalyticsChartSettingsForm
|
||||
|
||||
class Media:
|
||||
js = ('jet.dashboard/vendor/chart.js/Chart.min.js', 'jet.dashboard/dashboard_modules/google_analytics.js')
|
||||
|
||||
def __init__(self, title=None, period=None, show=None, group=None, **kwargs):
|
||||
kwargs.update({'period': period, 'show': show, 'group': group})
|
||||
super(GoogleAnalyticsVisitorsChart, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
settings = super(GoogleAnalyticsVisitorsChart, self).settings_dict()
|
||||
settings['show'] = self.show
|
||||
settings['group'] = self.group
|
||||
return settings
|
||||
|
||||
def load_settings(self, settings):
|
||||
super(GoogleAnalyticsVisitorsChart, self).load_settings(settings)
|
||||
self.show = settings.get('show')
|
||||
self.group = settings.get('group')
|
||||
|
||||
def init_with_context(self, context):
|
||||
result = self.api_ga(self.group)
|
||||
|
||||
if result is not None:
|
||||
try:
|
||||
for data in result['rows']:
|
||||
row_data = {}
|
||||
|
||||
i = 0
|
||||
for column in result['columnHeaders']:
|
||||
row_data[column['name'].replace(':', '_')] = data[i]
|
||||
i += 1
|
||||
|
||||
date = self.get_grouped_date(row_data, self.group)
|
||||
self.children.append((date, row_data[self.show.replace(':', '_')]))
|
||||
except KeyError:
|
||||
self.error = _('Bad server response')
|
||||
|
||||
|
||||
class GoogleAnalyticsPeriodVisitors(GoogleAnalyticsBase):
|
||||
"""
|
||||
Google Analytics widget that shows users, sessions and viewers for a particular period of time.
|
||||
Data is grouped by day, week or month
|
||||
Period may be following: Today, Last week, Last month, Last quarter, Last year
|
||||
"""
|
||||
|
||||
title = _('Google Analytics period visitors')
|
||||
template = 'jet.dashboard/modules/google_analytics_period_visitors.html'
|
||||
|
||||
#: Which period should be displayed. Allowed values - integer of days
|
||||
period = None
|
||||
|
||||
#: Sets grouping of data. Possible values: ``day``, ``week``, ``month``
|
||||
group = None
|
||||
contrast = False
|
||||
settings_form = GoogleAnalyticsPeriodVisitorsSettingsForm
|
||||
|
||||
def __init__(self, title=None, period=None, group=None, **kwargs):
|
||||
kwargs.update({'period': period, 'group': group})
|
||||
super(GoogleAnalyticsPeriodVisitors, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
settings = super(GoogleAnalyticsPeriodVisitors, self).settings_dict()
|
||||
settings['group'] = self.group
|
||||
return settings
|
||||
|
||||
def load_settings(self, settings):
|
||||
super(GoogleAnalyticsPeriodVisitors, self).load_settings(settings)
|
||||
self.group = settings.get('group')
|
||||
|
||||
def init_with_context(self, context):
|
||||
result = self.api_ga(self.group)
|
||||
|
||||
if result is not None:
|
||||
try:
|
||||
for data in reversed(result['rows']):
|
||||
row_data = {}
|
||||
|
||||
i = 0
|
||||
for column in result['columnHeaders']:
|
||||
row_data[column['name'].replace(':', '_')] = data[i]
|
||||
i += 1
|
||||
|
||||
date = self.format_grouped_date(row_data, self.group)
|
||||
self.children.append((date, row_data))
|
||||
except KeyError:
|
||||
self.error = _('Bad server response')
|
||||
@@ -0,0 +1,58 @@
|
||||
try:
|
||||
from django.core.urlresolvers import reverse
|
||||
except ImportError: # Django 1.11
|
||||
from django.urls import reverse
|
||||
|
||||
from django.conf.urls import url
|
||||
from django.contrib import messages
|
||||
from django.shortcuts import redirect
|
||||
from httplib2 import ServerNotFoundError
|
||||
from jet.dashboard.dashboard_modules.google_analytics import GoogleAnalyticsClient, ModuleCredentialStorage
|
||||
from jet.dashboard.models import UserDashboardModule
|
||||
from jet.dashboard import dashboard
|
||||
from django.http import HttpResponse
|
||||
from oauth2client.client import FlowExchangeError
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
def google_analytics_grant_view(request, pk):
|
||||
redirect_uri = request.build_absolute_uri(reverse('jet-dashboard:google-analytics-callback'))
|
||||
client = GoogleAnalyticsClient(redirect_uri=redirect_uri)
|
||||
return redirect(client.get_oauth_authorize_url(pk))
|
||||
|
||||
|
||||
def google_analytics_revoke_view(request, pk):
|
||||
try:
|
||||
module = UserDashboardModule.objects.get(pk=pk)
|
||||
ModuleCredentialStorage(module).delete()
|
||||
return redirect(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))
|
||||
except UserDashboardModule.DoesNotExist:
|
||||
return HttpResponse(_('Module not found'))
|
||||
|
||||
|
||||
def google_analytics_callback_view(request):
|
||||
module = None
|
||||
|
||||
try:
|
||||
state = request.GET['state']
|
||||
module = UserDashboardModule.objects.get(pk=state)
|
||||
|
||||
redirect_uri = request.build_absolute_uri(reverse('jet-dashboard:google-analytics-callback'))
|
||||
client = GoogleAnalyticsClient(redirect_uri=redirect_uri)
|
||||
client.set_credential_from_request(request)
|
||||
|
||||
ModuleCredentialStorage(module).put(client.credential)
|
||||
except (FlowExchangeError, ValueError, ServerNotFoundError):
|
||||
messages.error(request, _('API request failed.'))
|
||||
except KeyError:
|
||||
return HttpResponse(_('Bad arguments'))
|
||||
except UserDashboardModule.DoesNotExist:
|
||||
return HttpResponse(_('Module not found'))
|
||||
|
||||
return redirect(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))
|
||||
|
||||
dashboard.urls.register_urls([
|
||||
url(r'^google-analytics/grant/(?P<pk>\d+)/$', google_analytics_grant_view, name='google-analytics-grant'),
|
||||
url(r'^google-analytics/revoke/(?P<pk>\d+)/$', google_analytics_revoke_view, name='google-analytics-revoke'),
|
||||
url(r'^google-analytics/callback/', google_analytics_callback_view, name='google-analytics-callback'),
|
||||
])
|
||||
@@ -0,0 +1,369 @@
|
||||
# encoding: utf-8
|
||||
import datetime
|
||||
import json
|
||||
from django import forms
|
||||
try:
|
||||
from django.core.urlresolvers import reverse
|
||||
except ImportError: # Django 1.11
|
||||
from django.urls import reverse
|
||||
|
||||
from django.forms import Widget
|
||||
from django.utils import formats
|
||||
from django.utils.html import format_html
|
||||
from django.utils.safestring import mark_safe
|
||||
from django.utils.text import capfirst
|
||||
from jet.dashboard.modules import DashboardModule
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.conf import settings
|
||||
from django.utils.encoding import force_text
|
||||
|
||||
try:
|
||||
from urllib import request
|
||||
from urllib.parse import urlencode
|
||||
from urllib.error import URLError, HTTPError
|
||||
except ImportError:
|
||||
import urllib2 as request
|
||||
from urllib2 import URLError, HTTPError
|
||||
from urllib import urlencode
|
||||
|
||||
JET_MODULE_YANDEX_METRIKA_CLIENT_ID = getattr(settings, 'JET_MODULE_YANDEX_METRIKA_CLIENT_ID', '')
|
||||
JET_MODULE_YANDEX_METRIKA_CLIENT_SECRET = getattr(settings, 'JET_MODULE_YANDEX_METRIKA_CLIENT_SECRET', '')
|
||||
|
||||
|
||||
class YandexMetrikaClient:
|
||||
OAUTH_BASE_URL = 'https://oauth.yandex.ru/'
|
||||
API_BASE_URL = 'https://api-metrika.yandex.ru/'
|
||||
CLIENT_ID = JET_MODULE_YANDEX_METRIKA_CLIENT_ID
|
||||
CLIENT_SECRET = JET_MODULE_YANDEX_METRIKA_CLIENT_SECRET
|
||||
|
||||
def __init__(self, access_token=None):
|
||||
self.access_token = access_token
|
||||
|
||||
def request(self, base_url, url, data=None, headers=None):
|
||||
url = '%s%s' % (base_url, url)
|
||||
|
||||
if data is not None:
|
||||
data = urlencode(data).encode()
|
||||
|
||||
if headers is None:
|
||||
headers = {}
|
||||
|
||||
req = request.Request(url, data, headers)
|
||||
|
||||
try:
|
||||
f = request.urlopen(req)
|
||||
result = f.read().decode('utf8')
|
||||
result = json.loads(result)
|
||||
except URLError as e:
|
||||
return None, e
|
||||
|
||||
return result, None
|
||||
|
||||
def get_oauth_authorize_url(self, state=''):
|
||||
return '%sauthorize' \
|
||||
'?response_type=code' \
|
||||
'&state=%s' \
|
||||
'&client_id=%s' % (self.OAUTH_BASE_URL, state, self.CLIENT_ID)
|
||||
|
||||
def oauth_request(self, url, data=None):
|
||||
return self.request(self.OAUTH_BASE_URL, url, data)
|
||||
|
||||
def oath_token_request(self, code):
|
||||
data = {
|
||||
'grant_type': 'authorization_code',
|
||||
'code': code,
|
||||
'client_id': self.CLIENT_ID,
|
||||
'client_secret': self.CLIENT_SECRET
|
||||
}
|
||||
return self.oauth_request('token', data)
|
||||
|
||||
def api_request(self, url, data=None):
|
||||
headers = None
|
||||
if self.access_token is not None:
|
||||
headers = {'Authorization': 'OAuth %s' % self.access_token}
|
||||
return self.request(self.API_BASE_URL, url, data, headers)
|
||||
|
||||
def api_counters_request(self):
|
||||
return self.api_request('counters.json')
|
||||
|
||||
def api_stat_traffic_summary(self, counter, date1, date2, group=None):
|
||||
if group is None:
|
||||
group = 'day'
|
||||
return self.api_request('stat/traffic/summary.json?id=%s&date1=%s&date2=%s&group=%s' % (
|
||||
counter,
|
||||
date1.strftime('%Y%m%d'),
|
||||
date2.strftime('%Y%m%d'),
|
||||
group
|
||||
))
|
||||
|
||||
|
||||
class AccessTokenWidget(Widget):
|
||||
module = None
|
||||
|
||||
def render(self, name, value, attrs=None):
|
||||
if value and len(value) > 0:
|
||||
link = '<a href="%s">%s</a>' % (
|
||||
reverse('jet-dashboard:yandex-metrika-revoke', kwargs={'pk': self.module.model.pk}),
|
||||
force_text(_('Revoke access'))
|
||||
)
|
||||
else:
|
||||
link = '<a href="%s">%s</a>' % (
|
||||
reverse('jet-dashboard:yandex-metrika-grant', kwargs={'pk': self.module.model.pk}),
|
||||
force_text(_('Grant access'))
|
||||
)
|
||||
|
||||
if value is None:
|
||||
value = ''
|
||||
|
||||
return format_html('%s<input type="hidden" name="access_token" value="%s">' % (link, value))
|
||||
|
||||
|
||||
class YandexMetrikaSettingsForm(forms.Form):
|
||||
access_token = forms.CharField(label=_('Access'), widget=AccessTokenWidget)
|
||||
counter = forms.ChoiceField(label=_('Counter'))
|
||||
period = forms.ChoiceField(label=_('Statistics period'), choices=(
|
||||
(0, _('Today')),
|
||||
(6, _('Last week')),
|
||||
(30, _('Last month')),
|
||||
(31 * 3 - 1, _('Last quarter')),
|
||||
(364, _('Last year')),
|
||||
))
|
||||
|
||||
def set_module(self, module):
|
||||
self.fields['access_token'].widget.module = module
|
||||
self.set_counter_choices(module)
|
||||
|
||||
def set_counter_choices(self, module):
|
||||
counters = module.counters()
|
||||
if counters is not None:
|
||||
self.fields['counter'].choices = (('', '-- %s --' % force_text(_('none'))),)
|
||||
self.fields['counter'].choices.extend(map(lambda x: (x['id'], x['site']), counters))
|
||||
else:
|
||||
label = force_text(_('grant access first')) if module.access_token is None else force_text(_('counters loading failed'))
|
||||
self.fields['counter'].choices = (('', '-- %s -- ' % label),)
|
||||
|
||||
|
||||
class YandexMetrikaChartSettingsForm(YandexMetrikaSettingsForm):
|
||||
show = forms.ChoiceField(label=_('Show'), choices=(
|
||||
('visitors', capfirst(_('visitors'))),
|
||||
('visits', capfirst(_('visits'))),
|
||||
('page_views', capfirst(_('views'))),
|
||||
))
|
||||
group = forms.ChoiceField(label=_('Group'), choices=(
|
||||
('day', _('By day')),
|
||||
('week', _('By week')),
|
||||
('month', _('By month')),
|
||||
))
|
||||
|
||||
|
||||
class YandexMetrikaPeriodVisitorsSettingsForm(YandexMetrikaSettingsForm):
|
||||
group = forms.ChoiceField(label=_('Group'), choices=(
|
||||
('day', _('By day')),
|
||||
('week', _('By week')),
|
||||
('month', _('By month')),
|
||||
))
|
||||
|
||||
|
||||
class YandexMetrikaBase(DashboardModule):
|
||||
settings_form = YandexMetrikaSettingsForm
|
||||
ajax_load = True
|
||||
contrast = True
|
||||
period = None
|
||||
access_token = None
|
||||
expires_in = None
|
||||
token_type = None
|
||||
counter = None
|
||||
error = None
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'period': self.period,
|
||||
'access_token': self.access_token,
|
||||
'expires_in': self.expires_in,
|
||||
'token_type': self.token_type,
|
||||
'counter': self.counter
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
try:
|
||||
self.period = int(settings.get('period'))
|
||||
except TypeError:
|
||||
self.period = 0
|
||||
self.access_token = settings.get('access_token')
|
||||
self.expires_in = settings.get('expires_in')
|
||||
self.token_type = settings.get('token_type')
|
||||
self.counter = settings.get('counter')
|
||||
|
||||
def init_with_context(self, context):
|
||||
raise NotImplementedError('subclasses of YandexMetrika must provide a init_with_context() method')
|
||||
|
||||
def counters(self):
|
||||
client = YandexMetrikaClient(self.access_token)
|
||||
counters, exception = client.api_counters_request()
|
||||
|
||||
if counters is not None:
|
||||
return counters['counters']
|
||||
else:
|
||||
return None
|
||||
|
||||
def format_grouped_date(self, date, group):
|
||||
if group == 'week':
|
||||
date = u'%s — %s' % (
|
||||
(date - datetime.timedelta(days=7)).strftime('%d.%m'),
|
||||
date.strftime('%d.%m')
|
||||
)
|
||||
elif group == 'month':
|
||||
date = date.strftime('%b, %Y')
|
||||
else:
|
||||
date = formats.date_format(date, 'DATE_FORMAT')
|
||||
return date
|
||||
|
||||
def counter_attached(self):
|
||||
if self.access_token is None:
|
||||
self.error = mark_safe(_('Please <a href="%s">attach Yandex account and choose Yandex Metrika counter</a> to start using widget') % reverse('jet-dashboard:update_module', kwargs={'pk': self.model.pk}))
|
||||
return False
|
||||
elif self.counter is None:
|
||||
self.error = mark_safe(_('Please <a href="%s">select Yandex Metrika counter</a> to start using widget') % reverse('jet-dashboard:update_module', kwargs={'pk': self.model.pk}))
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
def api_stat_traffic_summary(self, group=None):
|
||||
if self.counter_attached():
|
||||
date1 = datetime.datetime.now() - datetime.timedelta(days=self.period)
|
||||
date2 = datetime.datetime.now()
|
||||
|
||||
client = YandexMetrikaClient(self.access_token)
|
||||
result, exception = client.api_stat_traffic_summary(self.counter, date1, date2, group)
|
||||
|
||||
if exception is not None:
|
||||
error = _('API request failed.')
|
||||
if isinstance(exception, HTTPError) and exception.code == 403:
|
||||
error += _(' Try to <a href="%s">revoke and grant access</a> again') % reverse('jet-dashboard:update_module', kwargs={'pk': self.model.pk})
|
||||
self.error = mark_safe(error)
|
||||
else:
|
||||
return result
|
||||
|
||||
|
||||
class YandexMetrikaVisitorsTotals(YandexMetrikaBase):
|
||||
"""
|
||||
Yandex Metrika widget that shows total number of visitors, visits and viewers for a particular period of time.
|
||||
Period may be following: Today, Last week, Last month, Last quarter, Last year
|
||||
"""
|
||||
|
||||
title = _('Yandex Metrika visitors totals')
|
||||
template = 'jet.dashboard/modules/yandex_metrika_visitors_totals.html'
|
||||
|
||||
#: Which period should be displayed. Allowed values - integer of days
|
||||
period = None
|
||||
|
||||
def __init__(self, title=None, period=None, **kwargs):
|
||||
kwargs.update({'period': period})
|
||||
super(YandexMetrikaVisitorsTotals, self).__init__(title, **kwargs)
|
||||
|
||||
def init_with_context(self, context):
|
||||
result = self.api_stat_traffic_summary()
|
||||
|
||||
if result is not None:
|
||||
try:
|
||||
self.children.append({'title': _('visitors'), 'value': result['totals']['visitors']})
|
||||
self.children.append({'title': _('visits'), 'value': result['totals']['visits']})
|
||||
self.children.append({'title': _('views'), 'value': result['totals']['page_views']})
|
||||
except KeyError:
|
||||
self.error = _('Bad server response')
|
||||
|
||||
|
||||
class YandexMetrikaVisitorsChart(YandexMetrikaBase):
|
||||
"""
|
||||
Yandex Metrika widget that shows visitors/visits/viewer chart for a particular period of time.
|
||||
Data is grouped by day, week or month
|
||||
Period may be following: Today, Last week, Last month, Last quarter, Last year
|
||||
"""
|
||||
|
||||
title = _('Yandex Metrika visitors chart')
|
||||
template = 'jet.dashboard/modules/yandex_metrika_visitors_chart.html'
|
||||
style = 'overflow-x: auto;'
|
||||
|
||||
#: Which period should be displayed. Allowed values - integer of days
|
||||
period = None
|
||||
|
||||
#: What data should be shown. Possible values: ``visitors``, ``visits``, ``page_views``
|
||||
show = None
|
||||
|
||||
#: Sets grouping of data. Possible values: ``day``, ``week``, ``month``
|
||||
group = None
|
||||
settings_form = YandexMetrikaChartSettingsForm
|
||||
|
||||
class Media:
|
||||
js = ('jet.dashboard/vendor/chart.js/Chart.min.js', 'jet.dashboard/dashboard_modules/yandex_metrika.js')
|
||||
|
||||
def __init__(self, title=None, period=None, show=None, group=None, **kwargs):
|
||||
kwargs.update({'period': period, 'show': show, 'group': group})
|
||||
super(YandexMetrikaVisitorsChart, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
settings = super(YandexMetrikaVisitorsChart, self).settings_dict()
|
||||
settings['show'] = self.show
|
||||
settings['group'] = self.group
|
||||
return settings
|
||||
|
||||
def load_settings(self, settings):
|
||||
super(YandexMetrikaVisitorsChart, self).load_settings(settings)
|
||||
self.show = settings.get('show')
|
||||
self.group = settings.get('group')
|
||||
|
||||
def init_with_context(self, context):
|
||||
result = self.api_stat_traffic_summary(self.group)
|
||||
|
||||
if result is not None:
|
||||
try:
|
||||
for data in result['data']:
|
||||
date = datetime.datetime.strptime(data['date'], '%Y%m%d')
|
||||
key = self.show if self.show is not None else 'visitors'
|
||||
self.children.append((date, data[key]))
|
||||
except KeyError:
|
||||
self.error = _('Bad server response')
|
||||
|
||||
|
||||
class YandexMetrikaPeriodVisitors(YandexMetrikaBase):
|
||||
"""
|
||||
Yandex Metrika widget that shows visitors, visits and viewers for a particular period of time.
|
||||
Data is grouped by day, week or month
|
||||
Period may be following: Today, Last week, Last month, Last quarter, Last year
|
||||
"""
|
||||
|
||||
title = _('Yandex Metrika period visitors')
|
||||
template = 'jet.dashboard/modules/yandex_metrika_period_visitors.html'
|
||||
|
||||
#: Which period should be displayed. Allowed values - integer of days
|
||||
period = None
|
||||
|
||||
#: Sets grouping of data. Possible values: ``day``, ``week``, ``month``
|
||||
group = None
|
||||
contrast = False
|
||||
settings_form = YandexMetrikaPeriodVisitorsSettingsForm
|
||||
|
||||
def __init__(self, title=None, period=None, group=None, **kwargs):
|
||||
kwargs.update({'period': period, 'group': group})
|
||||
super(YandexMetrikaPeriodVisitors, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
settings = super(YandexMetrikaPeriodVisitors, self).settings_dict()
|
||||
settings['group'] = self.group
|
||||
return settings
|
||||
|
||||
def load_settings(self, settings):
|
||||
super(YandexMetrikaPeriodVisitors, self).load_settings(settings)
|
||||
self.group = settings.get('group')
|
||||
|
||||
def init_with_context(self, context):
|
||||
result = self.api_stat_traffic_summary(self.group)
|
||||
|
||||
if result is not None:
|
||||
try:
|
||||
for data in reversed(result['data']):
|
||||
date = datetime.datetime.strptime(data['date'], '%Y%m%d')
|
||||
date = self.format_grouped_date(date, self.group)
|
||||
self.children.append((date, data))
|
||||
except KeyError:
|
||||
self.error = _('Bad server response')
|
||||
@@ -0,0 +1,68 @@
|
||||
from django.conf.urls import url
|
||||
from django.contrib import messages
|
||||
try:
|
||||
from django.core.urlresolvers import reverse
|
||||
except ImportError: # Django 1.11
|
||||
from django.urls import reverse
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import redirect
|
||||
from jet.dashboard.dashboard_modules.yandex_metrika import YandexMetrikaClient
|
||||
from jet.dashboard.models import UserDashboardModule
|
||||
from jet.dashboard import dashboard
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
def yandex_metrika_grant_view(request, pk):
|
||||
client = YandexMetrikaClient()
|
||||
return redirect(client.get_oauth_authorize_url(pk))
|
||||
|
||||
|
||||
def yandex_metrika_revoke_view(request, pk):
|
||||
try:
|
||||
module = UserDashboardModule.objects.get(pk=pk)
|
||||
module.pop_settings(('access_token', 'expires_in', 'token_type', 'counter'))
|
||||
return redirect(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))
|
||||
except UserDashboardModule.DoesNotExist:
|
||||
return HttpResponse(_('Module not found'))
|
||||
|
||||
|
||||
def yandex_metrika_callback_view(request):
|
||||
try:
|
||||
state = request.GET['state']
|
||||
code = request.GET['code']
|
||||
|
||||
module = UserDashboardModule.objects.get(pk=state)
|
||||
|
||||
client = YandexMetrikaClient()
|
||||
result, exception = client.oath_token_request(code)
|
||||
|
||||
if result is None:
|
||||
messages.error(request, _('API request failed.'))
|
||||
else:
|
||||
module.update_settings(result)
|
||||
|
||||
return redirect(reverse('jet-dashboard:update_module', kwargs={'pk': module.pk}))
|
||||
except KeyError:
|
||||
return HttpResponse(_('Bad arguments'))
|
||||
except UserDashboardModule.DoesNotExist:
|
||||
return HttpResponse(_('Module not found'))
|
||||
|
||||
|
||||
dashboard.urls.register_urls([
|
||||
url(
|
||||
r'^yandex-metrika/grant/(?P<pk>\d+)/$',
|
||||
yandex_metrika_grant_view,
|
||||
name='yandex-metrika-grant'
|
||||
),
|
||||
url(
|
||||
r'^yandex-metrika/revoke/(?P<pk>\d+)/$',
|
||||
yandex_metrika_revoke_view,
|
||||
name='yandex-metrika-revoke'
|
||||
),
|
||||
url(
|
||||
r'^yandex-metrika/callback/$',
|
||||
yandex_metrika_callback_view,
|
||||
name='yandex-metrika-callback'
|
||||
),
|
||||
])
|
||||
170
.venv/lib/python3.10/site-packages/jet/dashboard/forms.py
Normal file
170
.venv/lib/python3.10/site-packages/jet/dashboard/forms.py
Normal file
@@ -0,0 +1,170 @@
|
||||
import json
|
||||
from django import forms
|
||||
from django.core.exceptions import ValidationError
|
||||
from jet.dashboard.models import UserDashboardModule
|
||||
from jet.dashboard.utils import get_current_dashboard
|
||||
from jet.utils import user_is_authenticated
|
||||
|
||||
|
||||
class UpdateDashboardModulesForm(forms.Form):
|
||||
app_label = forms.CharField(required=False)
|
||||
modules = forms.CharField()
|
||||
modules_objects = []
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
super(UpdateDashboardModulesForm, self).__init__(*args, **kwargs)
|
||||
|
||||
def clean(self):
|
||||
data = super(UpdateDashboardModulesForm, self).clean()
|
||||
|
||||
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
|
||||
raise ValidationError('error')
|
||||
|
||||
try:
|
||||
modules = json.loads(data['modules'])
|
||||
|
||||
for module in modules:
|
||||
db_module = UserDashboardModule.objects.get(
|
||||
user=self.request.user.pk,
|
||||
app_label=data['app_label'] if data['app_label'] else None,
|
||||
pk=module['id']
|
||||
)
|
||||
|
||||
column = module['column']
|
||||
order = module['order']
|
||||
|
||||
if db_module.column != column or db_module.order != order:
|
||||
db_module.column = column
|
||||
db_module.order = order
|
||||
|
||||
self.modules_objects.append(db_module)
|
||||
except Exception:
|
||||
raise ValidationError('error')
|
||||
|
||||
return data
|
||||
|
||||
def save(self):
|
||||
for module in self.modules_objects:
|
||||
module.save()
|
||||
|
||||
|
||||
class AddUserDashboardModuleForm(forms.ModelForm):
|
||||
type = forms.CharField()
|
||||
module = forms.IntegerField()
|
||||
module_cls = None
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
super(AddUserDashboardModuleForm, self).__init__(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
model = UserDashboardModule
|
||||
fields = ['app_label']
|
||||
|
||||
def clean_app_label(self):
|
||||
data = self.cleaned_data['app_label']
|
||||
return data if data != '' else None
|
||||
|
||||
def clean(self):
|
||||
data = super(AddUserDashboardModuleForm, self).clean()
|
||||
|
||||
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
|
||||
raise ValidationError('error')
|
||||
|
||||
if 'app_label' in data:
|
||||
index_dashboard_cls = get_current_dashboard('app_index' if data['app_label'] else 'index')
|
||||
index_dashboard = index_dashboard_cls({'request': self.request}, app_label=data['app_label'])
|
||||
|
||||
if 'type' in data:
|
||||
if data['type'] == 'children':
|
||||
module = index_dashboard.children[data['module']]
|
||||
elif data['type'] == 'available_children':
|
||||
module = index_dashboard.available_children[data['module']]()
|
||||
else:
|
||||
raise ValidationError('error')
|
||||
|
||||
self.module_cls = module
|
||||
return data
|
||||
|
||||
def save(self, commit=True):
|
||||
self.instance.title = self.module_cls.title
|
||||
self.instance.module = self.module_cls.fullname()
|
||||
self.instance.user = self.request.user.pk
|
||||
self.instance.column = 0
|
||||
self.instance.order = -1
|
||||
self.instance.settings = self.module_cls.dump_settings()
|
||||
self.instance.children = self.module_cls.dump_children()
|
||||
|
||||
return super(AddUserDashboardModuleForm, self).save(commit)
|
||||
|
||||
|
||||
class UpdateDashboardModuleCollapseForm(forms.ModelForm):
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
super(UpdateDashboardModuleCollapseForm, self).__init__(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
model = UserDashboardModule
|
||||
fields = ['collapsed']
|
||||
|
||||
def clean(self):
|
||||
data = super(UpdateDashboardModuleCollapseForm, self).clean()
|
||||
|
||||
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
|
||||
raise ValidationError('error')
|
||||
|
||||
if self.instance.user != self.request.user.pk:
|
||||
raise ValidationError('error')
|
||||
|
||||
return data
|
||||
|
||||
|
||||
class RemoveDashboardModuleForm(forms.ModelForm):
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
super(RemoveDashboardModuleForm, self).__init__(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
model = UserDashboardModule
|
||||
fields = []
|
||||
|
||||
def clean(self):
|
||||
cleaned_data = super(RemoveDashboardModuleForm, self).clean()
|
||||
|
||||
if not user_is_authenticated(self.request.user) or self.instance.user != self.request.user.pk:
|
||||
raise ValidationError('error')
|
||||
|
||||
return cleaned_data
|
||||
|
||||
def save(self, commit=True):
|
||||
if commit:
|
||||
self.instance.delete()
|
||||
|
||||
|
||||
class ResetDashboardForm(forms.Form):
|
||||
app_label = forms.CharField(required=False)
|
||||
|
||||
def __init__(self, request, *args, **kwargs):
|
||||
self.request = request
|
||||
super(ResetDashboardForm, self).__init__(*args, **kwargs)
|
||||
|
||||
class Meta:
|
||||
model = UserDashboardModule
|
||||
fields = []
|
||||
|
||||
def clean(self):
|
||||
data = super(ResetDashboardForm, self).clean()
|
||||
data['app_label'] = data['app_label'] if data['app_label'] else None
|
||||
|
||||
if not user_is_authenticated(self.request.user) or not self.request.user.is_staff:
|
||||
raise ValidationError('error')
|
||||
|
||||
return data
|
||||
|
||||
def save(self, commit=True):
|
||||
if commit:
|
||||
UserDashboardModule.objects.filter(
|
||||
user=self.request.user.pk,
|
||||
app_label=self.cleaned_data['app_label']
|
||||
).delete()
|
||||
Binary file not shown.
@@ -0,0 +1,393 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
|
||||
"PO-Revision-Date: 2017-02-12 17:28+0300\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Last-Translator: Bashar <poedit@bashar.com>\n"
|
||||
"Language-Team: \n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: dashboard/modules.py:138 templates/admin/base.html:281
|
||||
msgid "URL"
|
||||
msgstr "الرابط"
|
||||
|
||||
#: dashboard/dashboard.py:207
|
||||
msgid "Quick links"
|
||||
msgstr "روابط سريعة"
|
||||
|
||||
#: dashboard/dashboard.py:213
|
||||
msgid "Return to site"
|
||||
msgstr "العودة للموقع"
|
||||
|
||||
#: dashboard/dashboard.py:224 dashboard/modules.py:268
|
||||
msgid "Applications"
|
||||
msgstr "التطبيقات"
|
||||
|
||||
#: dashboard/dashboard.py:232
|
||||
msgid "Administration"
|
||||
msgstr "الإدارة"
|
||||
|
||||
#: dashboard/dashboard.py:240 dashboard/modules.py:413
|
||||
msgid "Recent Actions"
|
||||
msgstr "آخر الأوامر"
|
||||
|
||||
#: dashboard/dashboard.py:248
|
||||
msgid "Latest Django News"
|
||||
msgstr "آخر أخبار جانغو"
|
||||
|
||||
#: dashboard/dashboard.py:257
|
||||
msgid "Support"
|
||||
msgstr "الدعم الفني"
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Django documentation"
|
||||
msgstr "توثيقات جانغو"
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "قائمة تراسل \"django-users\" الخاصة بجانغو"
|
||||
|
||||
#: dashboard/dashboard.py:270
|
||||
msgid "Django irc channel"
|
||||
msgstr "قناة الآي آر سي الخاصة بجانغو"
|
||||
|
||||
#: dashboard/dashboard.py:285
|
||||
msgid "Application models"
|
||||
msgstr "نماذج التطبيقات"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:139
|
||||
msgid "Title"
|
||||
msgstr "العنوان"
|
||||
|
||||
#: dashboard/modules.py:140
|
||||
msgid "External link"
|
||||
msgstr "رابط خارجي"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Layout"
|
||||
msgstr "المخطط"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Stacked"
|
||||
msgstr "مصفف"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Inline"
|
||||
msgstr "خلال السطر"
|
||||
|
||||
#: dashboard/modules.py:190 dashboard/modules.py:214
|
||||
msgid "Links"
|
||||
msgstr "الروابط"
|
||||
|
||||
#: dashboard/modules.py:213
|
||||
msgid "Link"
|
||||
msgstr "رابط"
|
||||
|
||||
#: dashboard/modules.py:340
|
||||
msgid "Models"
|
||||
msgstr "النماذج"
|
||||
|
||||
#: dashboard/modules.py:383 dashboard/modules.py:490
|
||||
msgid "Items limit"
|
||||
msgstr "حدود العناصر"
|
||||
|
||||
#: dashboard/modules.py:491
|
||||
msgid "Feed URL"
|
||||
msgstr "تلقيم الرابط"
|
||||
|
||||
#: dashboard/modules.py:522
|
||||
msgid "RSS Feed"
|
||||
msgstr "تلقيم RSS"
|
||||
|
||||
#: dashboard/modules.py:568
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "يجب عليك تنصيب حزمة بايثون FeedParser"
|
||||
|
||||
#: dashboard/modules.py:573
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "يجب عليك تزويد رابط تلقيم صحيح"
|
||||
|
||||
#: dashboard/views.py:17
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "الودجة تم تجديثها بنجاح"
|
||||
|
||||
#: dashboard/views.py:89 dashboard/views.py:90
|
||||
msgid "Items"
|
||||
msgstr "عناصر"
|
||||
|
||||
#: dashboard/views.py:152
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "تم إضافة الودجة بنجاح"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:102
|
||||
msgid "Revoke access"
|
||||
msgstr "سحب التصريح"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:107
|
||||
msgid "Grant access"
|
||||
msgstr "إعطاء تصريح"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:117
|
||||
msgid "Access"
|
||||
msgstr "التصريح"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Counter"
|
||||
msgstr "عدّاد"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Statistics period"
|
||||
msgstr "فترة الإحصائيات"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Today"
|
||||
msgstr "اليوم"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Last week"
|
||||
msgstr "الإسبوع الماضي"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last month"
|
||||
msgstr "الشهر الماضي"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last quarter"
|
||||
msgstr "ربع السنة الماضي"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last year"
|
||||
msgstr "العام الماضي"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:134
|
||||
msgid "none"
|
||||
msgstr "لا شيء"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "grant access first"
|
||||
msgstr "أعط تصريح أولا"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "counters loading failed"
|
||||
msgstr "فشل تحميل العدّادات"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "Show"
|
||||
msgstr "اعرض"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:147
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:155
|
||||
msgid "Group"
|
||||
msgstr "مجموعة"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "By day"
|
||||
msgstr "باليوم"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By week"
|
||||
msgstr "بالإسبوع"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By month"
|
||||
msgstr "بالشهر"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"الرجاء <a href=\"%s\">إرفاق حساب جوجل و إختر عداد احصائيات جوجل</a> للبدء "
|
||||
"بإستخدام الودجة"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"الرجاء <a href=\"%s\">إختر عداد احصائيات جوجل</a> للبدء بإستخدام الودجة"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "طلب API فشل"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr "جرب <a href=\"%s\">حذف و إضافة التصريح</a> مرة اخرى"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "عدد زوار إحصائيات جوجل الإجمالي"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
msgid "users"
|
||||
msgstr "المستخدمين"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
msgid "sessions"
|
||||
msgstr "الجلسات"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
msgid "views"
|
||||
msgstr "إستعراضات"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "رد خاطئ من الخادم"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "مخطط زوار إحصائيات جوجل"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "عدد زوار إحصائيات جوجل للفترات"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "لم يتم العثور على الوحدة"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "رمز سيئة"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"الرجاء <a href=\"%s\">إرفاق حساب ياندكس و إختر عداد يانديكس متريكا</a> للبدء "
|
||||
"بإستخدام الودجة"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"الرجاء <a href=\"%s\"> إختيار عداد يانديكس متريكا</a> للبدء بإستخدام الودجة"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr "عدد زوار إحصائيات يانديكس متريكا الإجمالي"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
msgid "visitors"
|
||||
msgstr "الزوار"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
msgid "visits"
|
||||
msgstr "الزيارات"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr "مخطط زوار إحصائيات يانديكس متريكا"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr "عدد زوار إحصائيات يانديكس متريكا للفترات"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "حذف الودجة"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "هل أنت متأكد من حذف هذه الودجة؟"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:7
|
||||
msgid "widgets"
|
||||
msgstr "الودجات"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:8
|
||||
msgid "available"
|
||||
msgstr "متاح"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "initials"
|
||||
msgstr "الحروف الأولية من الإسم"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:21
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:27
|
||||
msgid "Reset widgets"
|
||||
msgstr "إعادة ضبط الودجة"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:28
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "هل أنت متأكد من إعادة ضبط الودجة؟"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "لا يوجد شئ للعرض"
|
||||
Binary file not shown.
@@ -0,0 +1,30 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: 2017-02-12 17:28+0300\n"
|
||||
"Language: ar\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Last-Translator: Bashar <poedit@bashar.com>\n"
|
||||
"Language-Team: \n"
|
||||
"X-Generator: Poedit 1.8.7.1\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79
|
||||
#: static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "إلغاء"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "حذف"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "نعم"
|
||||
Binary file not shown.
@@ -0,0 +1,390 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: dashboard/modules.py:138 templates/admin/base.html:281
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: dashboard/dashboard.py:207
|
||||
msgid "Quick links"
|
||||
msgstr "Rychlé odkazy"
|
||||
|
||||
#: dashboard/dashboard.py:213
|
||||
msgid "Return to site"
|
||||
msgstr "Vrátit na stránku"
|
||||
|
||||
#: dashboard/dashboard.py:224 dashboard/modules.py:268
|
||||
msgid "Applications"
|
||||
msgstr "Aplikace"
|
||||
|
||||
#: dashboard/dashboard.py:232
|
||||
msgid "Administration"
|
||||
msgstr "Administrace"
|
||||
|
||||
#: dashboard/dashboard.py:240 dashboard/modules.py:413
|
||||
msgid "Recent Actions"
|
||||
msgstr "Poslední akce"
|
||||
|
||||
#: dashboard/dashboard.py:248
|
||||
msgid "Latest Django News"
|
||||
msgstr "Nejnovější zprávy o Djangu"
|
||||
|
||||
#: dashboard/dashboard.py:257
|
||||
msgid "Support"
|
||||
msgstr "Podpora"
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Django documentation"
|
||||
msgstr "Django dokumentace"
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Django \"django-users\" mailing list"
|
||||
|
||||
#: dashboard/dashboard.py:270
|
||||
msgid "Django irc channel"
|
||||
msgstr "Django irc kanál"
|
||||
|
||||
#: dashboard/dashboard.py:285
|
||||
msgid "Application models"
|
||||
msgstr "Modely aplikace"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:139
|
||||
msgid "Title"
|
||||
msgstr "Název"
|
||||
|
||||
#: dashboard/modules.py:140
|
||||
msgid "External link"
|
||||
msgstr "Externí odkazy"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Layout"
|
||||
msgstr "Rozložení"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Inline"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:190 dashboard/modules.py:214
|
||||
msgid "Links"
|
||||
msgstr "Odkazy"
|
||||
|
||||
#: dashboard/modules.py:213
|
||||
msgid "Link"
|
||||
msgstr "Odkaz"
|
||||
|
||||
#: dashboard/modules.py:340
|
||||
msgid "Models"
|
||||
msgstr "Modely"
|
||||
|
||||
#: dashboard/modules.py:383 dashboard/modules.py:490
|
||||
msgid "Items limit"
|
||||
msgstr "Limit položek"
|
||||
|
||||
#: dashboard/modules.py:491
|
||||
msgid "Feed URL"
|
||||
msgstr "URL feedu"
|
||||
|
||||
#: dashboard/modules.py:522
|
||||
msgid "RSS Feed"
|
||||
msgstr "RSS Feed"
|
||||
|
||||
#: dashboard/modules.py:568
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Musíte nainstalovat FeedParser python modul"
|
||||
|
||||
#: dashboard/modules.py:573
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Musíte zadat valídní URL feedu"
|
||||
|
||||
#: dashboard/views.py:17
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Widget byl úspěšně aktualizován"
|
||||
|
||||
#: dashboard/views.py:89 dashboard/views.py:90
|
||||
msgid "Items"
|
||||
msgstr "Položky"
|
||||
|
||||
#: dashboard/views.py:152
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Widget byl úspěšně přidán"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:102
|
||||
msgid "Revoke access"
|
||||
msgstr "Odebrat přístup"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:107
|
||||
msgid "Grant access"
|
||||
msgstr "Povolit přístup"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:117
|
||||
msgid "Access"
|
||||
msgstr "Přístup"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Counter"
|
||||
msgstr "Počítadlo"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Statistics period"
|
||||
msgstr "Statistická perioda"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Today"
|
||||
msgstr "Dnes"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Last week"
|
||||
msgstr "Poslední týden"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last month"
|
||||
msgstr "Poslední měsíc"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last quarter"
|
||||
msgstr "Poslední čtvrtletí"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last year"
|
||||
msgstr "Poslední rok"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:134
|
||||
msgid "none"
|
||||
msgstr "nic"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "grant access first"
|
||||
msgstr "povolte nejdřív přístup"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "counters loading failed"
|
||||
msgstr "nepodařilo se načíst počítadla"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "Show"
|
||||
msgstr "Zobrazit"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:147
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:155
|
||||
msgid "Group"
|
||||
msgstr "Skupina"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "By day"
|
||||
msgstr "Dle dne"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By week"
|
||||
msgstr "Dle týdne"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By month"
|
||||
msgstr "Dle měsíce"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Prosím <a href=\"%s\">připojte Google účet a vyberte Google Analytics "
|
||||
"počítadlo</a> pro využívání widgetu"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"Prosím <a href=\"%s\">vyberte Google Analytics počítadlo</a> pro využívání "
|
||||
"widgetu"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "Požadavek API se nezdařil."
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr " Zkuste <a href=\"%s\">zakázat a povolit přístup</a> znovu"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "Celkový počet návštěvníků Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
msgid "users"
|
||||
msgstr "uživatelé"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
msgid "sessions"
|
||||
msgstr "sezení"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
msgid "views"
|
||||
msgstr "zobrazení"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "Špatná odpověď serveru"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "Graf návštěvníků Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "Perioda návštěvníků Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "Modul nedostupný"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "Špatné argumenty"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
msgid "visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
msgid "visits"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "Smazat widget"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "Opravdu si přejete smazat tento widget?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:7
|
||||
msgid "widgets"
|
||||
msgstr "widgety"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:8
|
||||
msgid "available"
|
||||
msgstr "dostupné"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "initials"
|
||||
msgstr "počáteční"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:21
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:27
|
||||
msgid "Reset widgets"
|
||||
msgstr "Resetovat widgety"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:28
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Opravdu si přejete resetovat widgety?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "Nic ke zobrazení"
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "Zrušit"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "Smazat"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "Ano"
|
||||
Binary file not shown.
@@ -0,0 +1,331 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-30 14:54+0200\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Dominik Bartenstein <db@zemtu.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: German\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
msgid "Quick links"
|
||||
msgstr ""
|
||||
|
||||
msgid "Return to site"
|
||||
msgstr "Zur Website zurückkehren"
|
||||
|
||||
msgid "Change password"
|
||||
msgstr ""
|
||||
|
||||
msgid "Log out"
|
||||
msgstr ""
|
||||
|
||||
msgid "Applications"
|
||||
msgstr ""
|
||||
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
msgid "Recent Actions"
|
||||
msgstr ""
|
||||
|
||||
msgid "Latest Django News"
|
||||
msgstr "Aktuelle Django Neuigkeiten"
|
||||
|
||||
msgid "Support"
|
||||
msgstr ""
|
||||
|
||||
msgid "Django documentation"
|
||||
msgstr "Django Dokumentation"
|
||||
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Django \"django-users\" Mailingliste"
|
||||
|
||||
msgid "Django irc channel"
|
||||
msgstr "Django IRC Kanal"
|
||||
|
||||
msgid "Application models"
|
||||
msgstr "Anwendungsmodelle"
|
||||
|
||||
msgid "Revoke access"
|
||||
msgstr "Zugriff zurückziehen"
|
||||
|
||||
msgid "Grant access"
|
||||
msgstr "Zugriff erlauben"
|
||||
|
||||
msgid "Access"
|
||||
msgstr "Zugriff"
|
||||
|
||||
msgid "Counter"
|
||||
msgstr "Zähler"
|
||||
|
||||
msgid "Statistics period"
|
||||
msgstr "Statistikzeitraum"
|
||||
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
msgid "Last week"
|
||||
msgstr "Letzte Woche"
|
||||
|
||||
msgid "Last month"
|
||||
msgstr "Letzer Monat"
|
||||
|
||||
msgid "Last quarter"
|
||||
msgstr "Letztes Quartal"
|
||||
|
||||
msgid "Last year"
|
||||
msgstr "Letztes Jahr"
|
||||
|
||||
# Hint: message id None in contrib/admin
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
msgid "grant access first"
|
||||
msgstr "Zuerst muss Zugriff erlaubt werden"
|
||||
|
||||
msgid "counters loading failed"
|
||||
msgstr "Laden des Zählers fehlgeschlagen"
|
||||
|
||||
msgid "Show"
|
||||
msgstr ""
|
||||
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
msgid "sessions"
|
||||
msgstr ""
|
||||
|
||||
msgid "views"
|
||||
msgstr ""
|
||||
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
|
||||
msgid "By day"
|
||||
msgstr "Nach Tag"
|
||||
|
||||
msgid "By week"
|
||||
msgstr "Nach Woche"
|
||||
|
||||
msgid "By month"
|
||||
msgstr "Nach Monat"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Bitte <a href=\"%s\">mit Google Konto verbinden und Google Analytics "
|
||||
"Zähler auswählen</a>, um das Widget verwenden zu können"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"Bitte <a href=\"%s\">Google Analytics Zähler auswählen</a>, um das Widget "
|
||||
"verwenden zu können"
|
||||
|
||||
msgid "API request failed."
|
||||
msgstr "API Request fehlgeschlagen."
|
||||
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr " Versuche <a href=\"%s\">Zugriff zurückzuziehen und anschließend wieder zu erlauben</a>"
|
||||
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "Google Analytics Besucher insgesamt"
|
||||
|
||||
msgid "Bad server response"
|
||||
msgstr ""
|
||||
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "Google Analytics Besucher Diagramm"
|
||||
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "Google Analytics Besucher im Zeitraum"
|
||||
|
||||
msgid "Module not found"
|
||||
msgstr "Modul nicht gefunden"
|
||||
|
||||
msgid "Bad arguments"
|
||||
msgstr "Falsche Argumente"
|
||||
|
||||
msgid "visitors"
|
||||
msgstr "Besucher"
|
||||
|
||||
msgid "visits"
|
||||
msgstr "Besuche"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Bitte <a href=\"%s\">Yandex Konto verbinden und Yandex Metrika "
|
||||
"Zähler auswählen</a>, um Widget zu verwenden"
|
||||
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Bitte <a href=\"%s\">Yandex Metrika Zähler auwählen</a>, um das Widget verwenden zu können"
|
||||
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr "Yandex Metrika Besucher insgesamt"
|
||||
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr "Yandex Metrika Besucher Diagramm"
|
||||
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr "Yandex Metrika Besuche im Zeitraum"
|
||||
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
msgid "module"
|
||||
msgstr "Modul"
|
||||
|
||||
msgid "application name"
|
||||
msgstr ""
|
||||
|
||||
msgid "user"
|
||||
msgstr ""
|
||||
|
||||
msgid "column"
|
||||
msgstr "Spalte"
|
||||
|
||||
msgid "order"
|
||||
msgstr "Sortierung"
|
||||
|
||||
msgid "settings"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
msgid "children"
|
||||
msgstr "Kinder"
|
||||
|
||||
msgid "collapsed"
|
||||
msgstr "eingeklappt"
|
||||
|
||||
msgid "user dashboard module"
|
||||
msgstr "Benutzer Dashboard Modul"
|
||||
|
||||
msgid "user dashboard modules"
|
||||
msgstr "Benutzer Dashboard Module"
|
||||
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
msgid "External link"
|
||||
msgstr "Externer Link"
|
||||
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
msgid "Stacked"
|
||||
msgstr "Gestapelt"
|
||||
|
||||
msgid "Inline"
|
||||
msgstr ""
|
||||
|
||||
msgid "Links"
|
||||
msgstr "Links"
|
||||
|
||||
msgid "Link"
|
||||
msgstr "Link"
|
||||
|
||||
msgid "Models"
|
||||
msgstr "Modelle"
|
||||
|
||||
msgid "Items limit"
|
||||
msgstr "Objektlimit"
|
||||
|
||||
msgid "Feed URL"
|
||||
msgstr ""
|
||||
|
||||
msgid "RSS Feed"
|
||||
msgstr ""
|
||||
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Bitte FeedParser Python modul installieren"
|
||||
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Bitte eine gültige Feed URL angeben"
|
||||
|
||||
msgid "Delete widget"
|
||||
msgstr "Widget löschen"
|
||||
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "Sind sie sicher, dass sie das Widget löschen wollen?"
|
||||
|
||||
msgid "widgets"
|
||||
msgstr "Widgets"
|
||||
|
||||
msgid "available"
|
||||
msgstr "verfügbar"
|
||||
|
||||
msgid "initials"
|
||||
msgstr ""
|
||||
|
||||
msgid "Add"
|
||||
msgstr ""
|
||||
|
||||
msgid "Reset widgets"
|
||||
msgstr "Widgets zurücksetzen"
|
||||
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Sind sie sicher, dass sie die Widgets zurücksetzen wollen?"
|
||||
|
||||
msgid "Change"
|
||||
msgstr ""
|
||||
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "Models in the %(name)s application"
|
||||
msgstr ""
|
||||
|
||||
msgid "Nothing to show"
|
||||
msgstr "Nichts anzuzeigen"
|
||||
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
msgid "None available"
|
||||
msgstr ""
|
||||
|
||||
msgid "Unknown content"
|
||||
msgstr ""
|
||||
|
||||
msgid "Home"
|
||||
msgstr ""
|
||||
|
||||
msgid "Please correct the errors below."
|
||||
msgstr ""
|
||||
|
||||
#, python-format
|
||||
msgid "Add another %(verbose_name)s"
|
||||
msgstr ""
|
||||
|
||||
msgid "Save"
|
||||
msgstr ""
|
||||
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Widget wurde erfolgreich aktualisiert"
|
||||
|
||||
msgid "Items"
|
||||
msgstr "Objekte"
|
||||
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Widget wurde erfolgreich hinzugefügt"
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Dominik Bartenstein <db@zemtu.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: German\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
Binary file not shown.
@@ -0,0 +1,386 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: dashboard/modules.py:138 templates/admin/base.html:281
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:207
|
||||
msgid "Quick links"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:213
|
||||
msgid "Return to site"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:224 dashboard/modules.py:268
|
||||
msgid "Applications"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:232
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:240 dashboard/modules.py:413
|
||||
msgid "Recent Actions"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:248
|
||||
msgid "Latest Django News"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:257
|
||||
msgid "Support"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Django documentation"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:270
|
||||
msgid "Django irc channel"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:285
|
||||
msgid "Application models"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:139
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:140
|
||||
msgid "External link"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Inline"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:190 dashboard/modules.py:214
|
||||
msgid "Links"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:213
|
||||
msgid "Link"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:340
|
||||
msgid "Models"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:383 dashboard/modules.py:490
|
||||
msgid "Items limit"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:491
|
||||
msgid "Feed URL"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:522
|
||||
msgid "RSS Feed"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:568
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:573
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/views.py:17
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/views.py:89 dashboard/views.py:90
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/views.py:152
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:102
|
||||
msgid "Revoke access"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:107
|
||||
msgid "Grant access"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:117
|
||||
msgid "Access"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Counter"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Statistics period"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Last week"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last month"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last quarter"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last year"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:134
|
||||
msgid "none"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "grant access first"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "counters loading failed"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "Show"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:147
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:155
|
||||
msgid "Group"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "By day"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By week"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By month"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
msgid "users"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
msgid "sessions"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
msgid "views"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
msgid "visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
msgid "visits"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:7
|
||||
msgid "widgets"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:8
|
||||
msgid "available"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "initials"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:21
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:27
|
||||
msgid "Reset widgets"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:28
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr ""
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr ""
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr ""
|
||||
Binary file not shown.
@@ -0,0 +1,497 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-08-19 15:33-0500\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: dashboard/dashboard.py:210
|
||||
msgid "Quick links"
|
||||
msgstr "Enlaces Rápidos"
|
||||
|
||||
#: dashboard/dashboard.py:216
|
||||
msgid "Return to site"
|
||||
msgstr "Volver al sitio"
|
||||
|
||||
#: dashboard/dashboard.py:217
|
||||
msgid "Change password"
|
||||
msgstr "Cambiar contraseña"
|
||||
|
||||
#: dashboard/dashboard.py:219
|
||||
msgid "Log out"
|
||||
msgstr "Cerrar sesión"
|
||||
|
||||
#: dashboard/dashboard.py:227 dashboard/modules.py:293
|
||||
msgid "Applications"
|
||||
msgstr "Aplicaciones"
|
||||
|
||||
#: dashboard/dashboard.py:235
|
||||
msgid "Administration"
|
||||
msgstr "Administración"
|
||||
|
||||
#: dashboard/dashboard.py:243 dashboard/modules.py:438
|
||||
msgid "Recent Actions"
|
||||
msgstr "Acciones recientes"
|
||||
|
||||
#: dashboard/dashboard.py:251
|
||||
msgid "Latest Django News"
|
||||
msgstr "Últimas Noticias de Django"
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Support"
|
||||
msgstr "Soporte"
|
||||
|
||||
#: dashboard/dashboard.py:263
|
||||
msgid "Django documentation"
|
||||
msgstr "Documentación Django"
|
||||
|
||||
#: dashboard/dashboard.py:268
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Lista de correos Django \"django-users\""
|
||||
|
||||
#: dashboard/dashboard.py:273
|
||||
msgid "Django irc channel"
|
||||
msgstr "Canal IRC de Django"
|
||||
|
||||
#: dashboard/dashboard.py:288
|
||||
msgid "Application models"
|
||||
msgstr "Modelos de la aplicación"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:103
|
||||
msgid "Revoke access"
|
||||
msgstr "Revocar acceso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:108
|
||||
msgid "Grant access"
|
||||
msgstr "Garantizar acceso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Access"
|
||||
msgstr "Acceso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Counter"
|
||||
msgstr "Contador"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Statistics period"
|
||||
msgstr "Periodo de estadísticas"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Today"
|
||||
msgstr "Hoy"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last week"
|
||||
msgstr "Última semana"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last month"
|
||||
msgstr "Último mes"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last quarter"
|
||||
msgstr "Último cuatrimestre"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:125
|
||||
msgid "Last year"
|
||||
msgstr "Último año"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:135
|
||||
msgid "none"
|
||||
msgstr "ninguno"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:138
|
||||
msgid "grant access first"
|
||||
msgstr "garantizar primer acceso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:138
|
||||
msgid "counters loading failed"
|
||||
msgstr "falló la carga de contadores"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:143
|
||||
msgid "Show"
|
||||
msgstr "Mostrar"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
msgid "users"
|
||||
msgstr "usuarios"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
msgid "sessions"
|
||||
msgstr "sesiones"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
msgid "views"
|
||||
msgstr "vistas"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By day"
|
||||
msgstr "Por día"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By week"
|
||||
msgstr "Por semana"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:151
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:159
|
||||
msgid "By month"
|
||||
msgstr "Por mes"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">agregue una cuenta Google y elija un contador "
|
||||
"Google Analytics</a> para comenzar a usar este artilugio."
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">seleccione un contador Google Analytics</a> para "
|
||||
"comenzar a usar este artilugio"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "Falló la petición API."
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr " Intente <a href=\"%s\">revocar y garantizar el acceso</a> nuevamente"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "Total de visitantes Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "Respuesta negativa del servidor"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "Gráfico de visitantes Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "Periodo de visitantes Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "No se encontró el módulo"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "Argumentos erróneos"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
msgid "visitors"
|
||||
msgstr "visitantes"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
msgid "visits"
|
||||
msgstr "visitas"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">agregue una cuenta Yandex y elija un contador "
|
||||
"Yandex Metrika </a> para comenzar a usar este artilugio"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">seleccion un contador Yandex Metrika</a> para "
|
||||
"comenzar a usar este artilugio"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr "Total de visitantes Yandex Metrika"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr "Gráfica de visitantes Yandex Metrika"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr "Periodo de visitantes Yandex Metrika"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:164
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: dashboard/models.py:12
|
||||
msgid "module"
|
||||
msgstr "módulo"
|
||||
|
||||
#: dashboard/models.py:13
|
||||
msgid "application name"
|
||||
msgstr "nombre de la aplicación"
|
||||
|
||||
#: dashboard/models.py:14
|
||||
msgid "user"
|
||||
msgstr "usuario"
|
||||
|
||||
#: dashboard/models.py:15
|
||||
msgid "column"
|
||||
msgstr "columna"
|
||||
|
||||
#: dashboard/models.py:16
|
||||
msgid "order"
|
||||
msgstr "orden"
|
||||
|
||||
#: dashboard/models.py:17
|
||||
msgid "settings"
|
||||
msgstr "opciones"
|
||||
|
||||
#: dashboard/models.py:18
|
||||
msgid "children"
|
||||
msgstr "hijos"
|
||||
|
||||
#: dashboard/models.py:19
|
||||
msgid "collapsed"
|
||||
msgstr "colapsada"
|
||||
|
||||
#: dashboard/models.py:22
|
||||
msgid "user dashboard module"
|
||||
msgstr "módulo de usuario en tablero"
|
||||
|
||||
#: dashboard/models.py:23
|
||||
msgid "user dashboard modules"
|
||||
msgstr "módulos de usuario en tablero"
|
||||
|
||||
#: dashboard/modules.py:163
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: dashboard/modules.py:165
|
||||
msgid "External link"
|
||||
msgstr "Enlace externo"
|
||||
|
||||
#: dashboard/modules.py:169
|
||||
msgid "Layout"
|
||||
msgstr "Disposición"
|
||||
|
||||
#: dashboard/modules.py:169
|
||||
msgid "Stacked"
|
||||
msgstr "Apilado"
|
||||
|
||||
#: dashboard/modules.py:169
|
||||
msgid "Inline"
|
||||
msgstr "En linea"
|
||||
|
||||
#: dashboard/modules.py:215 dashboard/modules.py:239
|
||||
msgid "Links"
|
||||
msgstr "Enlaces"
|
||||
|
||||
#: dashboard/modules.py:238
|
||||
msgid "Link"
|
||||
msgstr "Enlace"
|
||||
|
||||
#: dashboard/modules.py:365
|
||||
msgid "Models"
|
||||
msgstr "Modelos"
|
||||
|
||||
#: dashboard/modules.py:408 dashboard/modules.py:515
|
||||
msgid "Items limit"
|
||||
msgstr "Límite de elementos"
|
||||
|
||||
#: dashboard/modules.py:516
|
||||
msgid "Feed URL"
|
||||
msgstr "URL de Alimentador"
|
||||
|
||||
#: dashboard/modules.py:547
|
||||
msgid "RSS Feed"
|
||||
msgstr "Alimentador RSS"
|
||||
|
||||
#: dashboard/modules.py:593
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Debe instalar el módulo python FeedParser"
|
||||
|
||||
#: dashboard/modules.py:598
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Debe proveer un URL de alimentador válido"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "Eliminar Artilugio"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "¿Está seguro de que desea eliminar este artilugio?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:12
|
||||
msgid "widgets"
|
||||
msgstr "artilugios"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "available"
|
||||
msgstr "habilitado"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:18
|
||||
msgid "initials"
|
||||
msgstr "iniciales"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:18
|
||||
#: dashboard/templates/jet.dashboard/modules/model_list.html:8
|
||||
msgid "Add"
|
||||
msgstr "Añadir"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:26
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:32
|
||||
msgid "Reset widgets"
|
||||
msgstr "Reiniciar artilugios"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:33
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Está seguro de que quiere reiniciar este artilugio?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/module.html:19
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:24
|
||||
#: dashboard/templates/jet.dashboard/modules/model_list.html:14
|
||||
#: dashboard/views.py:89
|
||||
msgid "Change"
|
||||
msgstr "Cambiar"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/module.html:22
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:62
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:64
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:7
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:10
|
||||
#, python-format
|
||||
msgid "Models in the %(name)s application"
|
||||
msgstr "Modelos en la aplicación %(name)s"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "Nada para mostrar"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:14
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:14
|
||||
msgid "Date"
|
||||
msgstr "Fecha"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/recent_actions.html:6
|
||||
msgid "None available"
|
||||
msgstr "Ninguno habilitado"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/recent_actions.html:30
|
||||
msgid "Unknown content"
|
||||
msgstr "Contenido desconocido"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:14
|
||||
msgid "Home"
|
||||
msgstr "Inicio"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:32
|
||||
msgid "Please correct the errors below."
|
||||
msgstr "Por favor corrija los presentes debajo."
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:76
|
||||
#, python-format
|
||||
msgid "Add another %(verbose_name)s"
|
||||
msgstr "Añadir otro %(verbose_name)s"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:88
|
||||
msgid "Save"
|
||||
msgstr "Guardar"
|
||||
|
||||
#: dashboard/views.py:18
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "El artilugio fue actualizado exitosamente"
|
||||
|
||||
#: dashboard/views.py:93 dashboard/views.py:94
|
||||
msgid "Items"
|
||||
msgstr "Elementos"
|
||||
|
||||
#: dashboard/views.py:160
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "El artilugio ha sido exitosamente añadido"
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "Eliminar"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "Sí"
|
||||
@@ -0,0 +1,497 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-05-25 12:27+0430\n"
|
||||
"PO-Revision-Date: 2017-05-24 23:51+0430\n"
|
||||
"Last-Translator: Pyzenberg <pyzenberg@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"Language: fa\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
"X-Generator: Poedit 1.8.9\n"
|
||||
|
||||
#: dashboard/dashboard.py:215
|
||||
msgid "Quick links"
|
||||
msgstr "لینک های سریع"
|
||||
|
||||
#: dashboard/dashboard.py:221
|
||||
msgid "Return to site"
|
||||
msgstr "بازگش به سایت"
|
||||
|
||||
#: dashboard/dashboard.py:222
|
||||
msgid "Change password"
|
||||
msgstr "تغییر رمزعبور"
|
||||
|
||||
#: dashboard/dashboard.py:224
|
||||
msgid "Log out"
|
||||
msgstr "خروج"
|
||||
|
||||
#: dashboard/dashboard.py:232 dashboard/modules.py:299
|
||||
msgid "Applications"
|
||||
msgstr "اپلیکیشن ها"
|
||||
|
||||
#: dashboard/dashboard.py:240
|
||||
msgid "Administration"
|
||||
msgstr "راهبری"
|
||||
|
||||
#: dashboard/dashboard.py:248 dashboard/modules.py:446
|
||||
msgid "Recent Actions"
|
||||
msgstr "کنشهای اخیر"
|
||||
|
||||
#: dashboard/dashboard.py:256
|
||||
msgid "Latest Django News"
|
||||
msgstr "آخرین خبرهای جنگو"
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Support"
|
||||
msgstr "پشتیبانی"
|
||||
|
||||
#: dashboard/dashboard.py:268
|
||||
msgid "Django documentation"
|
||||
msgstr "مستندات جنگو"
|
||||
|
||||
#: dashboard/dashboard.py:273
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "فهرست ایمیلی جنگو (django-users)"
|
||||
|
||||
#: dashboard/dashboard.py:278
|
||||
msgid "Django irc channel"
|
||||
msgstr "کانالهای irc جنگو"
|
||||
|
||||
#: dashboard/dashboard.py:293
|
||||
msgid "Application models"
|
||||
msgstr "مدلهای اپلیکیشن"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:107
|
||||
msgid "Revoke access"
|
||||
msgstr "گرفتن دسترسی"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:154
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:112
|
||||
msgid "Grant access"
|
||||
msgstr "دادن دسترسی"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Access"
|
||||
msgstr "دسترسی"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Counter"
|
||||
msgstr "شمارشگر"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Statistics period"
|
||||
msgstr "دوره آماری"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:125
|
||||
msgid "Today"
|
||||
msgstr "امروز"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:171
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:126
|
||||
msgid "Last week"
|
||||
msgstr "هفته پیش"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:172
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:127
|
||||
msgid "Last month"
|
||||
msgstr "ماه پیش"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:173
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:128
|
||||
msgid "Last quarter"
|
||||
msgstr "سه ماه پیش"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:174
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:129
|
||||
msgid "Last year"
|
||||
msgstr "سال پیش"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:184
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:139
|
||||
msgid "none"
|
||||
msgstr "هیچکدام"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:187
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "grant access first"
|
||||
msgstr "ابتدا دسترسی بدهید"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:187
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "counters loading failed"
|
||||
msgstr "بارگذاری شمارشگر ناموفق بود"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:192
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:147
|
||||
msgid "Show"
|
||||
msgstr "نمایش"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
msgid "users"
|
||||
msgstr "کاربران"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:331
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
msgid "sessions"
|
||||
msgstr "نشستها"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:332
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:271
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
msgid "views"
|
||||
msgstr "نماها"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:197
|
||||
#: dashboard/dashboard_modules/google_analytics.py:205
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:152
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:160
|
||||
msgid "Group"
|
||||
msgstr "گروه"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:198
|
||||
#: dashboard/dashboard_modules/google_analytics.py:206
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:153
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:161
|
||||
msgid "By day"
|
||||
msgstr "روزانه"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:199
|
||||
#: dashboard/dashboard_modules/google_analytics.py:207
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:154
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:162
|
||||
msgid "By week"
|
||||
msgstr "هفتگی"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:200
|
||||
#: dashboard/dashboard_modules/google_analytics.py:208
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:155
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:163
|
||||
msgid "By month"
|
||||
msgstr "ماهانه"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:281
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"لطفا برای شروع به کار این ویجت <a href=\"%s\">حساب گوگل را متصل و Google "
|
||||
"Analytics را انتخاب</a> نمایید"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:284
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"لطفا برای شروع به کار این ویجت <a href=\"%s\">شمارنده Google Analytics را "
|
||||
"انتخاب</a> نمایید"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:303
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:240
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:41
|
||||
msgid "API request failed."
|
||||
msgstr "درخواست API ناموفق بود."
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:305
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:242
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr " سعی کنید تا مجددا <a href=\"%s\">دسترسی را گرفته یا بدهید</a> again"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:315
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "تعداد کل بازدیدکننده های Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:334
|
||||
#: dashboard/dashboard_modules/google_analytics.py:392
|
||||
#: dashboard/dashboard_modules/google_analytics.py:442
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:273
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:325
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:369
|
||||
msgid "Bad server response"
|
||||
msgstr "پاسخ نامناسب از سمت سرور"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:344
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "نمودار بازدیدکنندگان Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:402
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "بازدیدکنندگان دوره ای Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:30
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:50
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:27
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:49
|
||||
msgid "Module not found"
|
||||
msgstr "ماژول پیدا نشد"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:48
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:47
|
||||
msgid "Bad arguments"
|
||||
msgstr "پارامترهای نامناسب"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
msgid "visitors"
|
||||
msgstr "بازدیدکنندگان"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:270
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
msgid "visits"
|
||||
msgstr "بازدیدها"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:223
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"لطفا Please <a href=\"%s\">حساب Yandex را متصل و شمارشگر Yandex Metrika</a> "
|
||||
"را انتخاب نمایید"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:226
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"لطفا <a href=\"%s\">شمارشگر Yandex Metrika</a> را برای شروع انتخاب نمایید"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:254
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr "کل بازدیدهای Yandex Metrika"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:283
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr "نمودار بازدیدهای Yandex Metrika"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:335
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr "بازدیدکنندگان دوره ای Yandex Metrika"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:164
|
||||
msgid "Title"
|
||||
msgstr "عنوان"
|
||||
|
||||
#: dashboard/models.py:12
|
||||
msgid "module"
|
||||
msgstr "ماژول"
|
||||
|
||||
#: dashboard/models.py:13
|
||||
msgid "application name"
|
||||
msgstr "نام اپلیکیشن"
|
||||
|
||||
#: dashboard/models.py:14
|
||||
msgid "user"
|
||||
msgstr "کاربر"
|
||||
|
||||
#: dashboard/models.py:15
|
||||
msgid "column"
|
||||
msgstr "ستون"
|
||||
|
||||
#: dashboard/models.py:16
|
||||
msgid "order"
|
||||
msgstr "ترتیب"
|
||||
|
||||
#: dashboard/models.py:17
|
||||
msgid "settings"
|
||||
msgstr "تنظیمات"
|
||||
|
||||
#: dashboard/models.py:18
|
||||
msgid "children"
|
||||
msgstr "زیرگروهها"
|
||||
|
||||
#: dashboard/models.py:19
|
||||
msgid "collapsed"
|
||||
msgstr "بازشده"
|
||||
|
||||
#: dashboard/models.py:22
|
||||
msgid "user dashboard module"
|
||||
msgstr "ماژول داشبورد کاربر"
|
||||
|
||||
#: dashboard/models.py:23
|
||||
msgid "user dashboard modules"
|
||||
msgstr "ماژول های داشبورد کاربر"
|
||||
|
||||
#: dashboard/modules.py:163
|
||||
msgid "URL"
|
||||
msgstr "نشانی اینترنتی"
|
||||
|
||||
#: dashboard/modules.py:165
|
||||
msgid "External link"
|
||||
msgstr "لینک های خارجی"
|
||||
|
||||
#: dashboard/modules.py:169
|
||||
msgid "Layout"
|
||||
msgstr "چینش"
|
||||
|
||||
#: dashboard/modules.py:169
|
||||
msgid "Stacked"
|
||||
msgstr "پشته شدن"
|
||||
|
||||
#: dashboard/modules.py:169
|
||||
msgid "Inline"
|
||||
msgstr "درون خطی"
|
||||
|
||||
#: dashboard/modules.py:215 dashboard/modules.py:239
|
||||
msgid "Links"
|
||||
msgstr "لینکها"
|
||||
|
||||
#: dashboard/modules.py:238
|
||||
msgid "Link"
|
||||
msgstr "لینک"
|
||||
|
||||
#: dashboard/modules.py:372
|
||||
msgid "Models"
|
||||
msgstr "مدلها"
|
||||
|
||||
#: dashboard/modules.py:416 dashboard/modules.py:523
|
||||
msgid "Items limit"
|
||||
msgstr "محدوده آیتمها"
|
||||
|
||||
#: dashboard/modules.py:524
|
||||
msgid "Feed URL"
|
||||
msgstr "نشانی فید"
|
||||
|
||||
#: dashboard/modules.py:555
|
||||
msgid "RSS Feed"
|
||||
msgstr "فید RSS"
|
||||
|
||||
#: dashboard/modules.py:601
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "ابتدا باید ماژول پایتونی FeedParser را نصب کنید"
|
||||
|
||||
#: dashboard/modules.py:606
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "ابتدا باید نشانی صحیح فید را وارد کنید"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "حذف ویجت"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "آیا میخواهید این ویجت حذف شود؟"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:12
|
||||
msgid "widgets"
|
||||
msgstr "ویجتها"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "available"
|
||||
msgstr "موجود"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:18
|
||||
msgid "initials"
|
||||
msgstr "مقادیر اولیه"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:18
|
||||
#: dashboard/templates/jet.dashboard/modules/model_list.html:8
|
||||
msgid "Add"
|
||||
msgstr "افزودن"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:26
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:32
|
||||
msgid "Reset widgets"
|
||||
msgstr "بازنشانی ویجتها"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:33
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "آیا میخواهید ویجت ها بازنشانی شوند؟"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/module.html:9
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:24
|
||||
#: dashboard/templates/jet.dashboard/modules/model_list.html:14
|
||||
#: dashboard/views.py:94
|
||||
msgid "Change"
|
||||
msgstr "تغییر"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/module.html:12
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:55
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:57
|
||||
msgid "Delete"
|
||||
msgstr "حذف"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:7
|
||||
#: dashboard/templates/jet.dashboard/modules/app_list.html:10
|
||||
#, python-format
|
||||
msgid "Models in the %(name)s application"
|
||||
msgstr "مدلها در اپلیکیشن %(name)s "
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "چیزی برای نمایش وجود ندارد"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:14
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:14
|
||||
msgid "Date"
|
||||
msgstr "تاریخ"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/recent_actions.html:6
|
||||
msgid "None available"
|
||||
msgstr "هیچکدام آماده نیست"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/recent_actions.html:30
|
||||
msgid "Unknown content"
|
||||
msgstr "محتوای ناشناخته"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:7
|
||||
msgid "Home"
|
||||
msgstr "خانه"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:25
|
||||
msgid "Please correct the errors below."
|
||||
msgstr "لطفا خطاهای زیر را برطرف نمایید."
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:69
|
||||
#, python-format
|
||||
msgid "Add another %(verbose_name)s"
|
||||
msgstr "افزودن یک %(verbose_name)s دیگر"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/update_module.html:81
|
||||
msgid "Save"
|
||||
msgstr "ذخیره"
|
||||
|
||||
#: dashboard/views.py:23
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "ویجت با موفقیت بروزرسانی شد"
|
||||
|
||||
#: dashboard/views.py:98 dashboard/views.py:99
|
||||
msgid "Items"
|
||||
msgstr "آیتمها"
|
||||
|
||||
#: dashboard/views.py:165
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "ویجت با موفقیت افزوده شد"
|
||||
@@ -0,0 +1,30 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: 2017-05-25 12:31+0430\n"
|
||||
"Language: fa\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Last-Translator: Pyzenberg <pyzenberg@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"X-Generator: Poedit 1.8.9\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79
|
||||
#: static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "لغو"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "حذف"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "بله"
|
||||
@@ -0,0 +1,391 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: dashboard/modules.py:138 templates/admin/base.html:281
|
||||
msgid "URL"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:207
|
||||
msgid "Quick links"
|
||||
msgstr "Liens rapides"
|
||||
|
||||
#: dashboard/dashboard.py:213
|
||||
msgid "Return to site"
|
||||
msgstr "Retourner au site"
|
||||
|
||||
#: dashboard/dashboard.py:224 dashboard/modules.py:268
|
||||
msgid "Applications"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:232
|
||||
msgid "Administration"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard.py:240 dashboard/modules.py:413
|
||||
msgid "Recent Actions"
|
||||
msgstr "Actions récentes"
|
||||
|
||||
#: dashboard/dashboard.py:248
|
||||
msgid "Latest Django News"
|
||||
msgstr "Dernières nouvelles de Django"
|
||||
|
||||
#: dashboard/dashboard.py:257
|
||||
msgid "Support"
|
||||
msgstr "Support"
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Django documentation"
|
||||
msgstr "Documentation de Django"
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Mailing liste de Django \"django-users\""
|
||||
|
||||
#: dashboard/dashboard.py:270
|
||||
msgid "Django irc channel"
|
||||
msgstr "Canal IRC de Django"
|
||||
|
||||
#: dashboard/dashboard.py:285
|
||||
msgid "Application models"
|
||||
msgstr "Modèles d'application"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:139
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
|
||||
#: dashboard/modules.py:140
|
||||
msgid "External link"
|
||||
msgstr "Lien externe"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Layout"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Inline"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/modules.py:190 dashboard/modules.py:214
|
||||
msgid "Links"
|
||||
msgstr "Liens"
|
||||
|
||||
#: dashboard/modules.py:213
|
||||
msgid "Link"
|
||||
msgstr "Lien"
|
||||
|
||||
#: dashboard/modules.py:340
|
||||
msgid "Models"
|
||||
msgstr "Modèles"
|
||||
|
||||
#: dashboard/modules.py:383 dashboard/modules.py:490
|
||||
msgid "Items limit"
|
||||
msgstr "Limite de résultats"
|
||||
|
||||
#: dashboard/modules.py:491
|
||||
msgid "Feed URL"
|
||||
msgstr "URL du flux"
|
||||
|
||||
#: dashboard/modules.py:522
|
||||
msgid "RSS Feed"
|
||||
msgstr "Flux RSS"
|
||||
|
||||
#: dashboard/modules.py:568
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Installation du module python FeedParser requis"
|
||||
|
||||
#: dashboard/modules.py:573
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Merci de fournir une URL de feed valide"
|
||||
|
||||
#: dashboard/views.py:17
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Greffon mit à jour avec succès"
|
||||
|
||||
#: dashboard/views.py:89 dashboard/views.py:90
|
||||
msgid "Items"
|
||||
msgstr "Résultats"
|
||||
|
||||
#: dashboard/views.py:152
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Greffon ajouté avec succès"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:102
|
||||
msgid "Revoke access"
|
||||
msgstr "Révoquer l'accès"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:107
|
||||
msgid "Grant access"
|
||||
msgstr "Autoriser l'accès"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:117
|
||||
msgid "Access"
|
||||
msgstr "Accès"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Counter"
|
||||
msgstr "Compteur"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Statistics period"
|
||||
msgstr "Période de statistiques"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Today"
|
||||
msgstr "Aujourd'hui"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Last week"
|
||||
msgstr "Dernière semaine"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last month"
|
||||
msgstr "Dernier mois"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last quarter"
|
||||
msgstr "Dernier trimestre"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last year"
|
||||
msgstr "L'an dernier"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:134
|
||||
msgid "none"
|
||||
msgstr "aucun"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "grant access first"
|
||||
msgstr "autoriser l'accès préalablement"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "counters loading failed"
|
||||
msgstr "échec de chargement des compteurs"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "Show"
|
||||
msgstr "Voir"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:147
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:155
|
||||
msgid "Group"
|
||||
msgstr "Groupe"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "By day"
|
||||
msgstr "Par jour"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By week"
|
||||
msgstr "Par semaine"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By month"
|
||||
msgstr "Par mois"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Merci d'<a href=\"%s\">attacher un compte Google et choisir un compteur "
|
||||
"Google Analytics</a> pour commencer à utiliser le greffon"
|
||||
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"Merci de <a href=\"%s\">séléctionner un compteur Google Analytics</a> to "
|
||||
"pour commencer à utiliser le greffon "
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "Échec de requête API."
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr " Essayez de <a href=\"%s\">révoquer et autoriser l'accès</a> à nouveau"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "Total de visiteureuses Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
msgid "users"
|
||||
msgstr "utilisateureuses"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
msgid "sessions"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
msgid "views"
|
||||
msgstr "vues"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "Réponse serveur invalide"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "Graphique visiteureuses Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "Visiteureuses par période Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "Module non trouvé"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "Arguments invalides"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
msgid "visitors"
|
||||
msgstr "visiteureuses"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
msgid "visits"
|
||||
msgstr "visites"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "Éffacer le greffon"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "Voulez-vous vraiment éffacer ce greffon?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:7
|
||||
msgid "widgets"
|
||||
msgstr "greffons"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:8
|
||||
msgid "available"
|
||||
msgstr "disponnible"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "initials"
|
||||
msgstr "initiaux"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:21
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:27
|
||||
msgid "Reset widgets"
|
||||
msgstr "Réinitialiser les greffons"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:28
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Voulez-vous vraiment réinitialiser les gréffons?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "Rien à montrer"
|
||||
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "Annuler"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "Éffacer"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "Oui"
|
||||
Binary file not shown.
@@ -0,0 +1,490 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-02-01 17:53+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
|
||||
"|| n%100>=20) ? 1 : 2);\n"
|
||||
#: jet/dashboard/dashboard.py:210
|
||||
msgid "Quick links"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard.py:216
|
||||
msgid "Return to site"
|
||||
msgstr "Powrót na stronę"
|
||||
|
||||
#: jet/dashboard/dashboard.py:217
|
||||
msgid "Change password"
|
||||
msgstr "Zmień hasło"
|
||||
|
||||
#: jet/dashboard/dashboard.py:219
|
||||
msgid "Log out"
|
||||
msgstr "Wyloguj"
|
||||
|
||||
#: jet/dashboard/dashboard.py:227 jet/dashboard/modules.py:299
|
||||
msgid "Applications"
|
||||
msgstr "Aplikacje"
|
||||
|
||||
#: jet/dashboard/dashboard.py:235
|
||||
msgid "Administration"
|
||||
msgstr "Administracja"
|
||||
|
||||
#: jet/dashboard/dashboard.py:243 jet/dashboard/modules.py:446
|
||||
msgid "Recent Actions"
|
||||
msgstr "Ostatnie akcje"
|
||||
|
||||
#: jet/dashboard/dashboard.py:251
|
||||
msgid "Latest Django News"
|
||||
msgstr "Wiadomości o Django"
|
||||
|
||||
#: jet/dashboard/dashboard.py:260
|
||||
msgid "Support"
|
||||
msgstr "Wsparcie"
|
||||
|
||||
#: jet/dashboard/dashboard.py:263
|
||||
msgid "Django documentation"
|
||||
msgstr "Dokumentacja Django"
|
||||
|
||||
#: jet/dashboard/dashboard.py:268
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Lista mailingowa Django"
|
||||
|
||||
#: jet/dashboard/dashboard.py:273
|
||||
msgid "Django irc channel"
|
||||
msgstr "Kanał IRC Django"
|
||||
|
||||
#: jet/dashboard/dashboard.py:288
|
||||
msgid "Application models"
|
||||
msgstr "Modele aplikacji"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:103
|
||||
msgid "Revoke access"
|
||||
msgstr "Cofnij dostęp"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:108
|
||||
msgid "Grant access"
|
||||
msgstr "Przyznaj dostęp"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Access"
|
||||
msgstr "Dostęp"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Counter"
|
||||
msgstr "Licznik"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Statistics period"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Today"
|
||||
msgstr "Dzisiaj"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last week"
|
||||
msgstr "Zeszły tydzień"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last month"
|
||||
msgstr "Zeszły miesiąc"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last quarter"
|
||||
msgstr "Zeszły kwartał"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:125
|
||||
msgid "Last year"
|
||||
msgstr "Zeszły rok"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:135
|
||||
msgid "none"
|
||||
msgstr "brak"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:138
|
||||
msgid "grant access first"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:138
|
||||
msgid "counters loading failed"
|
||||
msgstr "ładowanie liczników nie powiodło się"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:143
|
||||
msgid "Show"
|
||||
msgstr "Pokaż"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:326
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
msgid "users"
|
||||
msgstr "użytkownicy"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:327
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
msgid "sessions"
|
||||
msgstr "sesje"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
msgid "views"
|
||||
msgstr "wyświetlenia"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "Group"
|
||||
msgstr "Groupa"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By day"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By week"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:151
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:159
|
||||
msgid "By month"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: jet/dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "Zapytanie do API nie powiodło się"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "Niepoprawna odpowiedź serwera"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: jet/dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "Nie znaleziono modułu"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "Niepoprawne argumenty"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
msgid "visitors"
|
||||
msgstr "goście"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
msgid "visits"
|
||||
msgstr "odwiedzenia"
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/models.py:11 jet/dashboard/modules.py:164
|
||||
msgid "Title"
|
||||
msgstr "Tytuł"
|
||||
|
||||
#: jet/dashboard/models.py:12
|
||||
msgid "module"
|
||||
msgstr "moduł"
|
||||
|
||||
#: jet/dashboard/models.py:13
|
||||
msgid "application name"
|
||||
msgstr "nazwa aplikacji"
|
||||
|
||||
#: jet/dashboard/models.py:14
|
||||
msgid "user"
|
||||
msgstr "użytkownik"
|
||||
|
||||
#: jet/dashboard/models.py:15
|
||||
msgid "column"
|
||||
msgstr "kolumna"
|
||||
|
||||
#: jet/dashboard/models.py:16
|
||||
msgid "order"
|
||||
msgstr "kolejność"
|
||||
|
||||
#: jet/dashboard/models.py:17
|
||||
msgid "settings"
|
||||
msgstr "ustawienia"
|
||||
|
||||
#: jet/dashboard/models.py:18
|
||||
msgid "children"
|
||||
msgstr "dzieci"
|
||||
|
||||
#: jet/dashboard/models.py:19
|
||||
msgid "collapsed"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/models.py:22
|
||||
msgid "user dashboard module"
|
||||
msgstr "moduł panelu użytkowika"
|
||||
|
||||
#: jet/dashboard/models.py:23
|
||||
msgid "user dashboard modules"
|
||||
msgstr "moduły panelu użytkowika"
|
||||
|
||||
#: jet/dashboard/modules.py:163
|
||||
msgid "URL"
|
||||
msgstr "Adres URL"
|
||||
|
||||
#: jet/dashboard/modules.py:165
|
||||
msgid "External link"
|
||||
msgstr "Link zewnętrzny"
|
||||
|
||||
#: jet/dashboard/modules.py:169
|
||||
msgid "Layout"
|
||||
msgstr "Układ"
|
||||
|
||||
#: jet/dashboard/modules.py:169
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/modules.py:169
|
||||
msgid "Inline"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/modules.py:215 jet/dashboard/modules.py:239
|
||||
msgid "Links"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/modules.py:238
|
||||
msgid "Link"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/modules.py:372
|
||||
msgid "Models"
|
||||
msgstr "Modele"
|
||||
|
||||
#: jet/dashboard/modules.py:416 jet/dashboard/modules.py:523
|
||||
msgid "Items limit"
|
||||
msgstr "Limit pozycji"
|
||||
|
||||
#: jet/dashboard/modules.py:524
|
||||
msgid "Feed URL"
|
||||
msgstr "RSS URL"
|
||||
|
||||
#: jet/dashboard/modules.py:555
|
||||
msgid "RSS Feed"
|
||||
msgstr "Kanał RSS"
|
||||
|
||||
#: jet/dashboard/modules.py:601
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Zainstaluj moduł FeedParser w pythonie"
|
||||
|
||||
#: jet/dashboard/modules.py:606
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Podaj prawidłowy adres URL"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "Usuń widget"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "Czy jesteś pewien że chcesz usunąć ten widget"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:12
|
||||
msgid "widgets"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "available"
|
||||
msgstr "dostępny"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:18
|
||||
msgid "initials"
|
||||
msgstr "inicjały"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:23
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/app_list.html:18
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/model_list.html:8
|
||||
msgid "Add"
|
||||
msgstr "Dodaj"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:26
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:32
|
||||
msgid "Reset widgets"
|
||||
msgstr "Resetuj widżety"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/dashboard_tools.html:33
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Czy jesteś pewien że chcesz zrestartować widgety?"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/module.html:9
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/app_list.html:24
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/model_list.html:14
|
||||
#: jet/dashboard/views.py:90
|
||||
msgid "Change"
|
||||
msgstr "Zmiana"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/module.html:12
|
||||
#: jet/dashboard/templates/jet.dashboard/update_module.html:55
|
||||
#: jet/dashboard/templates/jet.dashboard/update_module.html:57
|
||||
msgid "Delete"
|
||||
msgstr "Usuń"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/app_list.html:7
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/app_list.html:10
|
||||
#, python-format
|
||||
msgid "Models in the %(name)s application"
|
||||
msgstr "Modele w aplikacji %(name)s"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "Brak danych do wyświetlenia"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:14
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:14
|
||||
msgid "Date"
|
||||
msgstr "Data"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/recent_actions.html:6
|
||||
msgid "None available"
|
||||
msgstr "Brak dostępnych akcji"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/modules/recent_actions.html:30
|
||||
msgid "Unknown content"
|
||||
msgstr ""
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/update_module.html:7
|
||||
msgid "Home"
|
||||
msgstr "Strona główna"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/update_module.html:25
|
||||
msgid "Please correct the errors below."
|
||||
msgstr "Proszę popraw poniższe błędy"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/update_module.html:69
|
||||
#, python-format
|
||||
msgid "Add another %(verbose_name)s"
|
||||
msgstr "Dodaj kolejny %(verbose_name)s"
|
||||
|
||||
#: jet/dashboard/templates/jet.dashboard/update_module.html:81
|
||||
msgid "Save"
|
||||
msgstr "Zapisz"
|
||||
|
||||
#: jet/dashboard/views.py:19
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Widget został pomyślnie zaktualizowany"
|
||||
|
||||
#: jet/dashboard/views.py:94 jet/dashboard/views.py:95
|
||||
msgid "Items"
|
||||
msgstr "Pozycje"
|
||||
|
||||
#: jet/dashboard/views.py:161
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Widget został pomyślnie dodany"
|
||||
Binary file not shown.
@@ -0,0 +1,393 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: \n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2016-09-21 10:34-0300\n"
|
||||
"PO-Revision-Date: 2016-09-21 10:34-0300\n"
|
||||
"Last-Translator: Allan george <mord4z@gmail.com>\n"
|
||||
"Language: pt_BR\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 "
|
||||
"&& (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
"Language-Team: \n"
|
||||
"X-Generator: Poedit 1.8.9\n"
|
||||
|
||||
#: dashboard/modules.py:138 templates/admin/base.html:281
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: dashboard/dashboard.py:207
|
||||
msgid "Quick links"
|
||||
msgstr "Atalhos"
|
||||
|
||||
#: dashboard/dashboard.py:213
|
||||
msgid "Return to site"
|
||||
msgstr "Voltar ao site"
|
||||
|
||||
#: dashboard/dashboard.py:224 dashboard/modules.py:268
|
||||
msgid "Applications"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#: dashboard/dashboard.py:232
|
||||
msgid "Administration"
|
||||
msgstr "Administração"
|
||||
|
||||
#: dashboard/dashboard.py:240 dashboard/modules.py:413
|
||||
msgid "Recent Actions"
|
||||
msgstr "Ações Recentes"
|
||||
|
||||
#: dashboard/dashboard.py:248
|
||||
msgid "Latest Django News"
|
||||
msgstr "Últimas notícias do Django"
|
||||
|
||||
#: dashboard/dashboard.py:257
|
||||
msgid "Support"
|
||||
msgstr "Suporte"
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Django documentation"
|
||||
msgstr "Documentação do Django"
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Lista de discussão de Django \"django-usuários\""
|
||||
|
||||
#: dashboard/dashboard.py:270
|
||||
msgid "Django irc channel"
|
||||
msgstr "Canal irc do Django"
|
||||
|
||||
#: dashboard/dashboard.py:285
|
||||
msgid "Application models"
|
||||
msgstr "Aplicativos"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:139
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
|
||||
#: dashboard/modules.py:140
|
||||
msgid "External link"
|
||||
msgstr "Link Externo"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Layout"
|
||||
msgstr "Layout"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Stacked"
|
||||
msgstr "Empilhado"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Inline"
|
||||
msgstr "Em linha"
|
||||
|
||||
#: dashboard/modules.py:190 dashboard/modules.py:214
|
||||
msgid "Links"
|
||||
msgstr "Links"
|
||||
|
||||
#: dashboard/modules.py:213
|
||||
msgid "Link"
|
||||
msgstr "Link"
|
||||
|
||||
#: dashboard/modules.py:340
|
||||
msgid "Models"
|
||||
msgstr "Models"
|
||||
|
||||
#: dashboard/modules.py:383 dashboard/modules.py:490
|
||||
msgid "Items limit"
|
||||
msgstr "Limite de itens"
|
||||
|
||||
#: dashboard/modules.py:491
|
||||
msgid "Feed URL"
|
||||
msgstr "URL de Feed"
|
||||
|
||||
#: dashboard/modules.py:522
|
||||
msgid "RSS Feed"
|
||||
msgstr "Feed RSS"
|
||||
|
||||
#: dashboard/modules.py:568
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Você deve instalar o módulo FeedParser"
|
||||
|
||||
#: dashboard/modules.py:573
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Você deve informar uma URL de feed válida"
|
||||
|
||||
#: dashboard/views.py:17
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Widget atualizado com sucesso"
|
||||
|
||||
#: dashboard/views.py:89 dashboard/views.py:90
|
||||
msgid "Items"
|
||||
msgstr "Itens"
|
||||
|
||||
#: dashboard/views.py:152
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Widget adicionado com sucesso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:102
|
||||
msgid "Revoke access"
|
||||
msgstr "Revogar acesso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:107
|
||||
msgid "Grant access"
|
||||
msgstr "Permitir acesso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:117
|
||||
msgid "Access"
|
||||
msgstr "Acesso"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Counter"
|
||||
msgstr "Contador"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Statistics period"
|
||||
msgstr "Período de Estatísticas"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Today"
|
||||
msgstr "Hoje"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Last week"
|
||||
msgstr "Última semana"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last month"
|
||||
msgstr "Último mês"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last quarter"
|
||||
msgstr "Último trimestre"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last year"
|
||||
msgstr "Último ano"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:134
|
||||
msgid "none"
|
||||
msgstr "nenhum"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "grant access first"
|
||||
msgstr "conceder acesso antes"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:137
|
||||
msgid "counters loading failed"
|
||||
msgstr "carregamento do contador falhou"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:142
|
||||
msgid "Show"
|
||||
msgstr "Exibir"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:147
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:155
|
||||
msgid "Group"
|
||||
msgstr "Grupo"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "By day"
|
||||
msgstr "Por dia"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By week"
|
||||
msgstr "Por semana"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By month"
|
||||
msgstr "Por mês"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics counter</"
|
||||
"a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\"> anexe uma conta do Google e selecione contadorGoogle "
|
||||
"Analytics</a> para usar o widget "
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">selecione contador google Analytics</a> para usar o "
|
||||
"widget"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "Requisição da API falhou"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr "Tente <a href=\"%s\">revogar e conceder acesso</a> novamente"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "Total de visitantes pelo Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
msgid "users"
|
||||
msgstr "usuários"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
msgid "sessions"
|
||||
msgstr "sessões"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
msgid "views"
|
||||
msgstr "views"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "Resposta ruim do servidor"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "Gráfico de visitantes Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "Período de visitas Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "Módulo não encontrado"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "Argumentos ruins"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika counter</"
|
||||
"a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">anexe uma conta Yandex e selecione contador Yandex "
|
||||
"Metrika</a> para usar o widget"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Por favor <a href=\"%s\">selecione contador Yandex Metrika</a> para usar o widget"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr "Totais de visitantes Yandex Metrika"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
msgid "visitors"
|
||||
msgstr "visitantes"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
msgid "visits"
|
||||
msgstr "visitas"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr "Gráfico de visitantes Yandex Metrika"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr "Visitantes no período Yandex Metrika"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "Deletar widget"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "Tem certeza que deseja deletar este widget?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:7
|
||||
msgid "widgets"
|
||||
msgstr "widgets"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:8
|
||||
msgid "available"
|
||||
msgstr "disponível"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "initials"
|
||||
msgstr "iniciais"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:21
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:27
|
||||
msgid "Reset widgets"
|
||||
msgstr "Reiniciar widgets"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:28
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Tem certeza que deseja reiniciar os widgets?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "Nada para exibir"
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: Allan george <mord4z@gmail.com>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: Brazilian Portuguese\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "Deletar"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "Sim"
|
||||
Binary file not shown.
@@ -0,0 +1,392 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-12-28 13:32+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
|
||||
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#: dashboard/modules.py:138 templates/admin/base.html:281
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: dashboard/dashboard.py:207
|
||||
msgid "Quick links"
|
||||
msgstr "Быстрые ссылки"
|
||||
|
||||
#: dashboard/dashboard.py:213
|
||||
msgid "Return to site"
|
||||
msgstr "Вернуться на сайт"
|
||||
|
||||
#: dashboard/dashboard.py:224 dashboard/modules.py:268
|
||||
msgid "Applications"
|
||||
msgstr "Приложения"
|
||||
|
||||
#: dashboard/dashboard.py:232
|
||||
msgid "Administration"
|
||||
msgstr "Администрирование"
|
||||
|
||||
#: dashboard/dashboard.py:240 dashboard/modules.py:413
|
||||
msgid "Recent Actions"
|
||||
msgstr "Последние действия"
|
||||
|
||||
#: dashboard/dashboard.py:248
|
||||
msgid "Latest Django News"
|
||||
msgstr "Новости от Django"
|
||||
|
||||
#: dashboard/dashboard.py:257
|
||||
msgid "Support"
|
||||
msgstr "Поддержка"
|
||||
|
||||
#: dashboard/dashboard.py:260
|
||||
msgid "Django documentation"
|
||||
msgstr "Документация по Django"
|
||||
|
||||
#: dashboard/dashboard.py:265
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Гугл-группа \"django-users\""
|
||||
|
||||
#: dashboard/dashboard.py:270
|
||||
msgid "Django irc channel"
|
||||
msgstr "IRC канал Django"
|
||||
|
||||
#: dashboard/dashboard.py:285
|
||||
msgid "Application models"
|
||||
msgstr "Модели приложения"
|
||||
|
||||
#: dashboard/models.py:11 dashboard/modules.py:139
|
||||
msgid "Title"
|
||||
msgstr "Название"
|
||||
|
||||
#: dashboard/modules.py:140
|
||||
msgid "External link"
|
||||
msgstr "Внешняя ссылка"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Layout"
|
||||
msgstr "Отображение"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Stacked"
|
||||
msgstr "Списком"
|
||||
|
||||
#: dashboard/modules.py:144
|
||||
msgid "Inline"
|
||||
msgstr "В строчку"
|
||||
|
||||
#: dashboard/modules.py:190 dashboard/modules.py:214
|
||||
msgid "Links"
|
||||
msgstr "Ссылки"
|
||||
|
||||
#: dashboard/modules.py:213
|
||||
msgid "Link"
|
||||
msgstr "Ссылка"
|
||||
|
||||
#: dashboard/modules.py:340
|
||||
msgid "Models"
|
||||
msgstr "Модели"
|
||||
|
||||
#: dashboard/modules.py:383 dashboard/modules.py:490
|
||||
msgid "Items limit"
|
||||
msgstr "Количество элементов"
|
||||
|
||||
#: dashboard/modules.py:491
|
||||
msgid "Feed URL"
|
||||
msgstr "URL потока"
|
||||
|
||||
#: dashboard/modules.py:522
|
||||
msgid "RSS Feed"
|
||||
msgstr "RSS поток"
|
||||
|
||||
#: dashboard/modules.py:568
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr "Необходимо установить python модуль FeedParser"
|
||||
|
||||
#: dashboard/modules.py:573
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr "Необходимо указать корректный URL потока"
|
||||
|
||||
#: dashboard/views.py:17
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Виджет успешно изменен"
|
||||
|
||||
#: dashboard/views.py:89 dashboard/views.py:90
|
||||
msgid "Items"
|
||||
msgstr "Элементы"
|
||||
|
||||
#: dashboard/views.py:152
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Виджет успешно добавлен"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:145
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:103
|
||||
msgid "Revoke access"
|
||||
msgstr "Убрать доступ"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:108
|
||||
msgid "Grant access"
|
||||
msgstr "Предоставить доступ"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:163
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Access"
|
||||
msgstr "Доступ"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:164
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Counter"
|
||||
msgstr "Счетчик"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:165
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Statistics period"
|
||||
msgstr "Статистика за период"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:166
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Today"
|
||||
msgstr "Сегодня"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:167
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last week"
|
||||
msgstr "Последняя неделя"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:168
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last month"
|
||||
msgstr "Последний месяц"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:169
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last quarter"
|
||||
msgstr "Последний квартал"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:170
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:125
|
||||
msgid "Last year"
|
||||
msgstr "Последний год"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:180
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:135
|
||||
msgid "none"
|
||||
msgstr "не указано"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:138
|
||||
msgid "grant access first"
|
||||
msgstr "сначала предоставьте доступ"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:183
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:138
|
||||
msgid "counters loading failed"
|
||||
msgstr "не удалось загрузить счетчики"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:188
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:143
|
||||
msgid "Show"
|
||||
msgstr "Показывать"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:193
|
||||
#: dashboard/dashboard_modules/google_analytics.py:201
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:156
|
||||
msgid "Group"
|
||||
msgstr "Группировать"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:194
|
||||
#: dashboard/dashboard_modules/google_analytics.py:202
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By day"
|
||||
msgstr "По дням"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:195
|
||||
#: dashboard/dashboard_modules/google_analytics.py:203
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By week"
|
||||
msgstr "По неделям"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:196
|
||||
#: dashboard/dashboard_modules/google_analytics.py:204
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:151
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:159
|
||||
msgid "By month"
|
||||
msgstr "По месяцам"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Пожалуйста <a href=\"%s\">прикрепите аккаунт Google и выберите счетчик "
|
||||
"Google Analytics</a> для виджета"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
"Пожалуйста <a href=\"%s\">выберите счетчик Google Analytics</a> для виджета"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:299
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "Ошибка запроса к API."
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:301
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr " Попробуйте <a href=\"%s\">убрать и предоставить доступ</a> заново"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr "Данные о посещениях Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:189
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/google_analytics.py:326
|
||||
msgid "users"
|
||||
msgstr "пользователи"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:190
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/google_analytics.py:327
|
||||
msgid "sessions"
|
||||
msgstr "сессии"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:191
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
#: dashboard/dashboard_modules/google_analytics.py:328
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:267
|
||||
msgid "views"
|
||||
msgstr "просмотры"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:330
|
||||
#: dashboard/dashboard_modules/google_analytics.py:388
|
||||
#: dashboard/dashboard_modules/google_analytics.py:438
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "Некорректный ответ сервера"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr "График посещений Google Analytics"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr "Посещения Google Analytics за период"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "Модуль не найден"
|
||||
|
||||
#: dashboard/dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard/dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "Некорректные аргументы"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Пожалуйста <a href=\"%s\">прикрепите аккаунт Яндекс и выберите счетчик "
|
||||
"Яндекс Метрики</a> для виджета"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
"Пожалуйста <a href=\"%s\">выберите счетчик Яндекс Метрики</a> для виджета"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr "Данные о посещениях Яндекс Метрики"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:265
|
||||
msgid "visitors"
|
||||
msgstr "посетители"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:266
|
||||
msgid "visits"
|
||||
msgstr "визиты"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr "График посещений Яндекс Метрики"
|
||||
|
||||
#: dashboard/dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr "Посещения Яндекс Метрики за период"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "Удалить виджет"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "Вы точно хотите удалить этот виджет?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:7
|
||||
msgid "widgets"
|
||||
msgstr "виджеты"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:8
|
||||
msgid "available"
|
||||
msgstr "доступные"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "initials"
|
||||
msgstr "изначальные"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:21
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:27
|
||||
msgid "Reset widgets"
|
||||
msgstr "Сбросить виджеты"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/dashboard_tools.html:28
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "Вы точно хотите сбросить виджеты?"
|
||||
|
||||
#: dashboard/templates/jet.dashboard/modules/feed.html:13
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: dashboard/templates/jet.dashboard/modules/link_list.html:26
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: dashboard/templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "Содержимое отсутствует"
|
||||
Binary file not shown.
@@ -0,0 +1,28 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2015-09-11 12:44+0000\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:79 static/jet/js/src/features/dashboard.js:208
|
||||
msgid "Cancel"
|
||||
msgstr "Отмена"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:203
|
||||
msgid "Delete"
|
||||
msgstr "Удалить"
|
||||
|
||||
#: static/jet/js/src/features/dashboard.js:74
|
||||
msgid "Yes"
|
||||
msgstr "Да"
|
||||
Binary file not shown.
@@ -0,0 +1,488 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-01-20 10:30+0800\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"Language: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: dashboard.py:210
|
||||
msgid "Quick links"
|
||||
msgstr "快捷链接"
|
||||
|
||||
#: dashboard.py:216
|
||||
msgid "Return to site"
|
||||
msgstr "返回站点"
|
||||
|
||||
#: dashboard.py:217
|
||||
msgid "Change password"
|
||||
msgstr "修改密码"
|
||||
|
||||
#: dashboard.py:219
|
||||
msgid "Log out"
|
||||
msgstr "退出"
|
||||
|
||||
#: dashboard.py:227 modules.py:299
|
||||
msgid "Applications"
|
||||
msgstr "应用"
|
||||
|
||||
#: dashboard.py:235
|
||||
msgid "Administration"
|
||||
msgstr "管理"
|
||||
|
||||
#: dashboard.py:243 modules.py:446
|
||||
msgid "Recent Actions"
|
||||
msgstr "最近操作"
|
||||
|
||||
#: dashboard.py:251
|
||||
msgid "Latest Django News"
|
||||
msgstr "Django动态"
|
||||
|
||||
#: dashboard.py:260
|
||||
msgid "Support"
|
||||
msgstr "支持"
|
||||
|
||||
#: dashboard.py:263
|
||||
msgid "Django documentation"
|
||||
msgstr "Django文档"
|
||||
|
||||
#: dashboard.py:268
|
||||
msgid "Django \"django-users\" mailing list"
|
||||
msgstr "Django \"django-users\" 邮件列表"
|
||||
|
||||
#: dashboard.py:273
|
||||
msgid "Django irc channel"
|
||||
msgstr "Django IRC频道"
|
||||
|
||||
#: dashboard.py:288
|
||||
msgid "Application models"
|
||||
msgstr "应用Models"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:145
|
||||
#: dashboard_modules/yandex_metrika.py:103
|
||||
msgid "Revoke access"
|
||||
msgstr "收回访问权"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:150
|
||||
#: dashboard_modules/yandex_metrika.py:108
|
||||
msgid "Grant access"
|
||||
msgstr "分配访问权"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:163
|
||||
#: dashboard_modules/yandex_metrika.py:118
|
||||
msgid "Access"
|
||||
msgstr "访问"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:164
|
||||
#: dashboard_modules/yandex_metrika.py:119
|
||||
msgid "Counter"
|
||||
msgstr "统计"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:165
|
||||
#: dashboard_modules/yandex_metrika.py:120
|
||||
msgid "Statistics period"
|
||||
msgstr "统计周期"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:166
|
||||
#: dashboard_modules/yandex_metrika.py:121
|
||||
msgid "Today"
|
||||
msgstr "今日"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:167
|
||||
#: dashboard_modules/yandex_metrika.py:122
|
||||
msgid "Last week"
|
||||
msgstr "上周"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:168
|
||||
#: dashboard_modules/yandex_metrika.py:123
|
||||
msgid "Last month"
|
||||
msgstr "上月"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:169
|
||||
#: dashboard_modules/yandex_metrika.py:124
|
||||
msgid "Last quarter"
|
||||
msgstr "最近15分钟"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:170
|
||||
#: dashboard_modules/yandex_metrika.py:125
|
||||
msgid "Last year"
|
||||
msgstr "去年"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:180
|
||||
#: dashboard_modules/yandex_metrika.py:135
|
||||
msgid "none"
|
||||
msgstr "无"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:183
|
||||
#: dashboard_modules/yandex_metrika.py:138
|
||||
msgid "grant access first"
|
||||
msgstr "优先分配访问权"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:183
|
||||
#: dashboard_modules/yandex_metrika.py:138
|
||||
msgid "counters loading failed"
|
||||
msgstr "统计信息加载失败"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:188
|
||||
#: dashboard_modules/yandex_metrika.py:143
|
||||
msgid "Show"
|
||||
msgstr "显示"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:189
|
||||
#: dashboard_modules/google_analytics.py:326
|
||||
#: templates/jet.dashboard/modules/google_analytics_period_visitors.html:15
|
||||
msgid "users"
|
||||
msgstr "用户"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:190
|
||||
#: dashboard_modules/google_analytics.py:327
|
||||
#: templates/jet.dashboard/modules/google_analytics_period_visitors.html:16
|
||||
msgid "sessions"
|
||||
msgstr "用户会话"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:191
|
||||
#: dashboard_modules/google_analytics.py:328
|
||||
#: dashboard_modules/yandex_metrika.py:146
|
||||
#: dashboard_modules/yandex_metrika.py:267
|
||||
#: templates/jet.dashboard/modules/google_analytics_period_visitors.html:17
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:17
|
||||
msgid "views"
|
||||
msgstr "视图"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:193
|
||||
#: dashboard_modules/google_analytics.py:201
|
||||
#: dashboard_modules/yandex_metrika.py:148
|
||||
#: dashboard_modules/yandex_metrika.py:156
|
||||
msgid "Group"
|
||||
msgstr "组"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:194
|
||||
#: dashboard_modules/google_analytics.py:202
|
||||
#: dashboard_modules/yandex_metrika.py:149
|
||||
#: dashboard_modules/yandex_metrika.py:157
|
||||
msgid "By day"
|
||||
msgstr "按天"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:195
|
||||
#: dashboard_modules/google_analytics.py:203
|
||||
#: dashboard_modules/yandex_metrika.py:150
|
||||
#: dashboard_modules/yandex_metrika.py:158
|
||||
msgid "By week"
|
||||
msgstr "按周"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:196
|
||||
#: dashboard_modules/google_analytics.py:204
|
||||
#: dashboard_modules/yandex_metrika.py:151
|
||||
#: dashboard_modules/yandex_metrika.py:159
|
||||
msgid "By month"
|
||||
msgstr "按月"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:277
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Google account and choose Google Analytics "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/google_analytics.py:280
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Google Analytics counter</a> to start using "
|
||||
"widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/google_analytics.py:299
|
||||
#: dashboard_modules/google_analytics_views.py:42
|
||||
#: dashboard_modules/yandex_metrika.py:236
|
||||
#: dashboard_modules/yandex_metrika_views.py:37
|
||||
msgid "API request failed."
|
||||
msgstr "API请求失败"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:301
|
||||
#: dashboard_modules/yandex_metrika.py:238
|
||||
#, python-format
|
||||
msgid " Try to <a href=\"%s\">revoke and grant access</a> again"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/google_analytics.py:311
|
||||
msgid "Google Analytics visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/google_analytics.py:330
|
||||
#: dashboard_modules/google_analytics.py:388
|
||||
#: dashboard_modules/google_analytics.py:438
|
||||
#: dashboard_modules/yandex_metrika.py:269
|
||||
#: dashboard_modules/yandex_metrika.py:321
|
||||
#: dashboard_modules/yandex_metrika.py:365
|
||||
msgid "Bad server response"
|
||||
msgstr "服务器响应异常"
|
||||
|
||||
#: dashboard_modules/google_analytics.py:340
|
||||
msgid "Google Analytics visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/google_analytics.py:398
|
||||
msgid "Google Analytics period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/google_analytics_views.py:26
|
||||
#: dashboard_modules/google_analytics_views.py:46
|
||||
#: dashboard_modules/yandex_metrika_views.py:23
|
||||
#: dashboard_modules/yandex_metrika_views.py:45
|
||||
msgid "Module not found"
|
||||
msgstr "未找到模块"
|
||||
|
||||
#: dashboard_modules/google_analytics_views.py:44
|
||||
#: dashboard_modules/yandex_metrika_views.py:43
|
||||
msgid "Bad arguments"
|
||||
msgstr "参数错误"
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:144
|
||||
#: dashboard_modules/yandex_metrika.py:265
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:15
|
||||
msgid "visitors"
|
||||
msgstr "访问者"
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:145
|
||||
#: dashboard_modules/yandex_metrika.py:266
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:16
|
||||
msgid "visits"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:219
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">attach Yandex account and choose Yandex Metrika "
|
||||
"counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:222
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please <a href=\"%s\">select Yandex Metrika counter</a> to start using widget"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:250
|
||||
msgid "Yandex Metrika visitors totals"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:279
|
||||
msgid "Yandex Metrika visitors chart"
|
||||
msgstr ""
|
||||
|
||||
#: dashboard_modules/yandex_metrika.py:331
|
||||
msgid "Yandex Metrika period visitors"
|
||||
msgstr ""
|
||||
|
||||
#: models.py:11 modules.py:164
|
||||
msgid "Title"
|
||||
msgstr "标题"
|
||||
|
||||
#: models.py:12
|
||||
msgid "module"
|
||||
msgstr "模块"
|
||||
|
||||
#: models.py:13
|
||||
msgid "application name"
|
||||
msgstr "应用名称"
|
||||
|
||||
#: models.py:14
|
||||
msgid "user"
|
||||
msgstr "用户"
|
||||
|
||||
#: models.py:15
|
||||
msgid "column"
|
||||
msgstr "列"
|
||||
|
||||
#: models.py:16
|
||||
msgid "order"
|
||||
msgstr "排序"
|
||||
|
||||
#: models.py:17
|
||||
msgid "settings"
|
||||
msgstr "设置"
|
||||
|
||||
#: models.py:18
|
||||
msgid "children"
|
||||
msgstr "子项"
|
||||
|
||||
#: models.py:19
|
||||
msgid "collapsed"
|
||||
msgstr "展开"
|
||||
|
||||
#: models.py:22
|
||||
msgid "user dashboard module"
|
||||
msgstr "用户dashboard模块"
|
||||
|
||||
#: models.py:23
|
||||
msgid "user dashboard modules"
|
||||
msgstr "用户dashboard模块"
|
||||
|
||||
#: modules.py:163
|
||||
msgid "URL"
|
||||
msgstr "URL"
|
||||
|
||||
#: modules.py:165
|
||||
msgid "External link"
|
||||
msgstr "外部链接"
|
||||
|
||||
#: modules.py:169
|
||||
msgid "Layout"
|
||||
msgstr "布局"
|
||||
|
||||
#: modules.py:169
|
||||
msgid "Stacked"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:169
|
||||
msgid "Inline"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:215 modules.py:239
|
||||
msgid "Links"
|
||||
msgstr "链接"
|
||||
|
||||
#: modules.py:238
|
||||
msgid "Link"
|
||||
msgstr "链接"
|
||||
|
||||
#: modules.py:372
|
||||
msgid "Models"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:416 modules.py:523
|
||||
msgid "Items limit"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:524
|
||||
msgid "Feed URL"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:555
|
||||
msgid "RSS Feed"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:601
|
||||
msgid "You must install the FeedParser python module"
|
||||
msgstr ""
|
||||
|
||||
#: modules.py:606
|
||||
msgid "You must provide a valid feed URL"
|
||||
msgstr ""
|
||||
|
||||
#: templates/jet.dashboard/dashboard.html:17
|
||||
msgid "Delete widget"
|
||||
msgstr "删除widget"
|
||||
|
||||
#: templates/jet.dashboard/dashboard.html:18
|
||||
msgid "Are you sure want to delete this widget?"
|
||||
msgstr "你确定要删除这个widget吗?"
|
||||
|
||||
#: templates/jet.dashboard/dashboard_tools.html:12
|
||||
msgid "widgets"
|
||||
msgstr ""
|
||||
|
||||
#: templates/jet.dashboard/dashboard_tools.html:13
|
||||
msgid "available"
|
||||
msgstr "可用的"
|
||||
|
||||
#: templates/jet.dashboard/dashboard_tools.html:18
|
||||
msgid "initials"
|
||||
msgstr ""
|
||||
|
||||
#: templates/jet.dashboard/dashboard_tools.html:23
|
||||
#: templates/jet.dashboard/modules/app_list.html:18
|
||||
#: templates/jet.dashboard/modules/model_list.html:8
|
||||
msgid "Add"
|
||||
msgstr "添加"
|
||||
|
||||
#: templates/jet.dashboard/dashboard_tools.html:26
|
||||
#: templates/jet.dashboard/dashboard_tools.html:32
|
||||
msgid "Reset widgets"
|
||||
msgstr "重置widgets"
|
||||
|
||||
#: templates/jet.dashboard/dashboard_tools.html:33
|
||||
msgid "Are you sure want to reset widgets?"
|
||||
msgstr "你确定要重置widgets吗?"
|
||||
|
||||
#: templates/jet.dashboard/module.html:9
|
||||
#: templates/jet.dashboard/modules/app_list.html:24
|
||||
#: templates/jet.dashboard/modules/model_list.html:14 views.py:90
|
||||
msgid "Change"
|
||||
msgstr "修改"
|
||||
|
||||
#: templates/jet.dashboard/module.html:12
|
||||
#: templates/jet.dashboard/update_module.html:55
|
||||
#: templates/jet.dashboard/update_module.html:57
|
||||
msgid "Delete"
|
||||
msgstr "删除"
|
||||
|
||||
#: templates/jet.dashboard/modules/app_list.html:7
|
||||
#: templates/jet.dashboard/modules/app_list.html:10
|
||||
#, python-format
|
||||
msgid "Models in the %(name)s application"
|
||||
msgstr "在%(name)s应用下的Models"
|
||||
|
||||
#: templates/jet.dashboard/modules/feed.html:13
|
||||
#: templates/jet.dashboard/modules/google_analytics_period_visitors.html:34
|
||||
#: templates/jet.dashboard/modules/google_analytics_visitors_chart.html:30
|
||||
#: templates/jet.dashboard/modules/google_analytics_visitors_totals.html:23
|
||||
#: templates/jet.dashboard/modules/link_list.html:26
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:34
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_visitors_chart.html:30
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_visitors_totals.html:23
|
||||
msgid "Nothing to show"
|
||||
msgstr "没有内容"
|
||||
|
||||
#: templates/jet.dashboard/modules/google_analytics_period_visitors.html:14
|
||||
#: templates/jet.dashboard/modules/yandex_metrika_period_visitors.html:14
|
||||
msgid "Date"
|
||||
msgstr "日期"
|
||||
|
||||
#: templates/jet.dashboard/modules/recent_actions.html:6
|
||||
msgid "None available"
|
||||
msgstr "没有可用内容"
|
||||
|
||||
#: templates/jet.dashboard/modules/recent_actions.html:30
|
||||
msgid "Unknown content"
|
||||
msgstr "未知内容"
|
||||
|
||||
#: templates/jet.dashboard/update_module.html:7
|
||||
msgid "Home"
|
||||
msgstr "首页"
|
||||
|
||||
#: templates/jet.dashboard/update_module.html:25
|
||||
msgid "Please correct the errors below."
|
||||
msgstr "请修正以下错误"
|
||||
|
||||
#: templates/jet.dashboard/update_module.html:69
|
||||
#, python-format
|
||||
msgid "Add another %(verbose_name)s"
|
||||
msgstr "新增%(verbose_name)s"
|
||||
|
||||
#: templates/jet.dashboard/update_module.html:81
|
||||
msgid "Save"
|
||||
msgstr "保存"
|
||||
|
||||
#: views.py:19
|
||||
msgid "Widget was successfully updated"
|
||||
msgstr "Widget成功更新"
|
||||
|
||||
#: views.py:94 views.py:95
|
||||
msgid "Items"
|
||||
msgstr ""
|
||||
|
||||
#: views.py:161
|
||||
msgid "Widget has been successfully added"
|
||||
msgstr "Widget成功添加"
|
||||
@@ -0,0 +1,33 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='UserDashboardModule',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', primary_key=True, serialize=False, auto_created=True)),
|
||||
('title', models.CharField(verbose_name='Title', max_length=255)),
|
||||
('module', models.CharField(verbose_name='module', max_length=255)),
|
||||
('app_label', models.CharField(verbose_name='application name', max_length=255, blank=True, null=True)),
|
||||
('user', models.PositiveIntegerField(verbose_name='user')),
|
||||
('column', models.PositiveIntegerField(verbose_name='column')),
|
||||
('order', models.IntegerField(verbose_name='order')),
|
||||
('settings', models.TextField(verbose_name='settings', blank=True, default='')),
|
||||
('children', models.TextField(verbose_name='children', blank=True, default='')),
|
||||
('collapsed', models.BooleanField(verbose_name='collapsed', default=False)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'user dashboard module',
|
||||
'verbose_name_plural': 'user dashboard modules',
|
||||
'ordering': ('column', 'order'),
|
||||
},
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Binary file not shown.
59
.venv/lib/python3.10/site-packages/jet/dashboard/models.py
Normal file
59
.venv/lib/python3.10/site-packages/jet/dashboard/models.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from importlib import import_module
|
||||
import json
|
||||
from django.db import models
|
||||
from django.utils.encoding import python_2_unicode_compatible
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.utils import LazyDateTimeEncoder
|
||||
|
||||
|
||||
@python_2_unicode_compatible
|
||||
class UserDashboardModule(models.Model):
|
||||
title = models.CharField(verbose_name=_('Title'), max_length=255)
|
||||
module = models.CharField(verbose_name=_('module'), max_length=255)
|
||||
app_label = models.CharField(verbose_name=_('application name'), max_length=255, null=True, blank=True)
|
||||
user = models.PositiveIntegerField(verbose_name=_('user'))
|
||||
column = models.PositiveIntegerField(verbose_name=_('column'))
|
||||
order = models.IntegerField(verbose_name=_('order'))
|
||||
settings = models.TextField(verbose_name=_('settings'), default='', blank=True)
|
||||
children = models.TextField(verbose_name=_('children'), default='', blank=True)
|
||||
collapsed = models.BooleanField(verbose_name=_('collapsed'), default=False)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('user dashboard module')
|
||||
verbose_name_plural = _('user dashboard modules')
|
||||
ordering = ('column', 'order')
|
||||
|
||||
def __str__(self):
|
||||
return self.module
|
||||
|
||||
def load_module(self):
|
||||
try:
|
||||
package, module_name = self.module.rsplit('.', 1)
|
||||
package = import_module(package)
|
||||
module = getattr(package, module_name)
|
||||
|
||||
return module
|
||||
except AttributeError:
|
||||
return None
|
||||
except ImportError:
|
||||
return None
|
||||
|
||||
def pop_settings(self, pop_settings):
|
||||
settings = json.loads(self.settings)
|
||||
|
||||
for setting in pop_settings:
|
||||
if setting in settings:
|
||||
settings.pop(setting)
|
||||
|
||||
self.settings = json.dumps(settings, cls=LazyDateTimeEncoder)
|
||||
self.save()
|
||||
|
||||
def update_settings(self, update_settings):
|
||||
settings = json.loads(self.settings)
|
||||
|
||||
settings.update(update_settings)
|
||||
|
||||
self.settings = json.dumps(settings, cls=LazyDateTimeEncoder)
|
||||
self.save()
|
||||
|
||||
|
||||
609
.venv/lib/python3.10/site-packages/jet/dashboard/modules.py
Normal file
609
.venv/lib/python3.10/site-packages/jet/dashboard/modules.py
Normal file
@@ -0,0 +1,609 @@
|
||||
import json
|
||||
from django import forms
|
||||
from django.contrib.admin.models import LogEntry
|
||||
from django.db.models import Q
|
||||
from django.template.loader import render_to_string
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.utils import get_app_list, LazyDateTimeEncoder, context_to_dict
|
||||
import datetime
|
||||
|
||||
|
||||
class DashboardModule(object):
|
||||
"""
|
||||
Base dashboard module class. All dashboard modules (widgets) should inherit it.
|
||||
"""
|
||||
|
||||
#: Path to widget's template. There is no need to extend such templates from any base templates.
|
||||
template = 'jet.dashboard/module.html'
|
||||
enabled = True
|
||||
|
||||
#: Specify if module can be draggable or has static position.
|
||||
draggable = True
|
||||
|
||||
#: Specify if module can be collapsed.
|
||||
collapsible = True
|
||||
|
||||
#: Specify if module can be deleted.
|
||||
deletable = True
|
||||
show_title = True
|
||||
|
||||
#: Default widget title that will be displayed for widget in the dashboard. User can change it later
|
||||
#: for every widget.
|
||||
title = ''
|
||||
|
||||
#: Specify title url. ``None`` if title shouldn't be clickable.
|
||||
title_url = None
|
||||
css_classes = None
|
||||
|
||||
#: HTML content that will be displayed before widget content.
|
||||
pre_content = None
|
||||
|
||||
#: HTML content that will be displayed after widget content.
|
||||
post_content = None
|
||||
children = None
|
||||
|
||||
#: A ``django.forms.Form`` class which may contain custom widget settings. Not required.
|
||||
settings_form = None
|
||||
|
||||
#: A ``django.forms.Form`` class which may contain custom widget child settings, if it has any. Not required.
|
||||
child_form = None
|
||||
|
||||
#: Child name that will be displayed when editing module contents. Required if ``child_form`` set.
|
||||
child_name = None
|
||||
|
||||
#: Same as child name, but plural.
|
||||
child_name_plural = None
|
||||
settings = None
|
||||
column = None
|
||||
order = None
|
||||
|
||||
#: A boolean field which specify if widget should be rendered on dashboard page load or fetched
|
||||
#: later via AJAX.
|
||||
ajax_load = False
|
||||
|
||||
#: A boolean field which makes widget ui color contrast.
|
||||
contrast = False
|
||||
|
||||
#: Optional style attributes which will be applied to widget content container.
|
||||
style = False
|
||||
|
||||
class Media:
|
||||
css = ()
|
||||
js = ()
|
||||
|
||||
def __init__(self, title=None, model=None, context=None, **kwargs):
|
||||
if title is not None:
|
||||
self.title = title
|
||||
self.model = model
|
||||
self.context = context or {}
|
||||
|
||||
for key in kwargs:
|
||||
if hasattr(self.__class__, key):
|
||||
setattr(self, key, kwargs[key])
|
||||
|
||||
self.children = self.children or []
|
||||
|
||||
if self.model:
|
||||
self.load_from_model()
|
||||
|
||||
def fullname(self):
|
||||
return self.__module__ + "." + self.__class__.__name__
|
||||
|
||||
def load_settings(self, settings):
|
||||
"""
|
||||
Should be implemented to restore saved in database settings. Required if you have custom settings.
|
||||
"""
|
||||
pass
|
||||
|
||||
def load_children(self, children):
|
||||
self.children = children
|
||||
|
||||
def store_children(self):
|
||||
"""
|
||||
Specify if children field should be saved to database.
|
||||
"""
|
||||
return False
|
||||
|
||||
def settings_dict(self):
|
||||
"""
|
||||
Should be implemented to save settings to database. This method should return ``dict`` which will be serialized
|
||||
using ``json``. Required if you have custom settings.
|
||||
"""
|
||||
pass
|
||||
|
||||
def dump_settings(self, settings=None):
|
||||
settings = settings or self.settings_dict()
|
||||
if settings:
|
||||
return json.dumps(settings, cls=LazyDateTimeEncoder)
|
||||
else:
|
||||
return ''
|
||||
|
||||
def dump_children(self):
|
||||
if self.store_children():
|
||||
return json.dumps(self.children, cls=LazyDateTimeEncoder)
|
||||
else:
|
||||
return ''
|
||||
|
||||
def load_from_model(self):
|
||||
self.title = self.model.title
|
||||
|
||||
if self.model.settings:
|
||||
try:
|
||||
self.settings = json.loads(self.model.settings)
|
||||
self.load_settings(self.settings)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
if self.store_children() and self.model.children:
|
||||
try:
|
||||
children = json.loads(self.model.children)
|
||||
self.load_children(children)
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
def init_with_context(self, context):
|
||||
"""
|
||||
Allows you to load data and initialize module's state.
|
||||
"""
|
||||
pass
|
||||
|
||||
def get_context_data(self):
|
||||
context = context_to_dict(self.context)
|
||||
context.update({
|
||||
'module': self
|
||||
})
|
||||
return context
|
||||
|
||||
def render(self):
|
||||
self.init_with_context(self.context)
|
||||
return render_to_string(self.template, self.get_context_data())
|
||||
|
||||
|
||||
class LinkListItemForm(forms.Form):
|
||||
url = forms.CharField(label=_('URL'))
|
||||
title = forms.CharField(label=_('Title'))
|
||||
external = forms.BooleanField(label=_('External link'), required=False)
|
||||
|
||||
|
||||
class LinkListSettingsForm(forms.Form):
|
||||
layout = forms.ChoiceField(label=_('Layout'), choices=(('stacked', _('Stacked')), ('inline', _('Inline'))))
|
||||
|
||||
|
||||
class LinkList(DashboardModule):
|
||||
"""
|
||||
List of links widget.
|
||||
|
||||
Usage example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.dashboard import Dashboard, AppIndexDashboard
|
||||
|
||||
|
||||
class CustomIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.available_children.append(modules.LinkList)
|
||||
self.children.append(modules.LinkList(
|
||||
_('Support'),
|
||||
children=[
|
||||
{
|
||||
'title': _('Django documentation'),
|
||||
'url': 'http://docs.djangoproject.com/',
|
||||
'external': True,
|
||||
},
|
||||
{
|
||||
'title': _('Django "django-users" mailing list'),
|
||||
'url': 'http://groups.google.com/group/django-users',
|
||||
'external': True,
|
||||
},
|
||||
{
|
||||
'title': _('Django irc channel'),
|
||||
'url': 'irc://irc.freenode.net/django',
|
||||
'external': True,
|
||||
},
|
||||
],
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
"""
|
||||
|
||||
title = _('Links')
|
||||
template = 'jet.dashboard/modules/link_list.html'
|
||||
|
||||
#: Specify widget layout.
|
||||
#: Allowed values ``stacked`` and ``inline``.
|
||||
layout = 'stacked'
|
||||
|
||||
#: Links are contained in ``children`` attribute which you can pass as constructor parameter
|
||||
#: to make your own preinstalled link lists.
|
||||
#:
|
||||
#: ``children`` is an array of dictinaries::
|
||||
#:
|
||||
#: [
|
||||
#: {
|
||||
#: 'title': _('Django documentation'),
|
||||
#: 'url': 'http://docs.djangoproject.com/',
|
||||
#: 'external': True,
|
||||
#: },
|
||||
#: ...
|
||||
#: ]
|
||||
children = []
|
||||
settings_form = LinkListSettingsForm
|
||||
child_form = LinkListItemForm
|
||||
child_name = _('Link')
|
||||
child_name_plural = _('Links')
|
||||
|
||||
def __init__(self, title=None, children=list(), **kwargs):
|
||||
children = list(map(self.parse_link, children))
|
||||
kwargs.update({'children': children})
|
||||
super(LinkList, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'draggable': self.draggable,
|
||||
'deletable': self.deletable,
|
||||
'collapsible': self.collapsible,
|
||||
'layout': self.layout
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
self.draggable = settings.get('draggable', self.draggable)
|
||||
self.deletable = settings.get('deletable', self.deletable)
|
||||
self.collapsible = settings.get('collapsible', self.collapsible)
|
||||
self.layout = settings.get('layout', self.layout)
|
||||
|
||||
def store_children(self):
|
||||
return True
|
||||
|
||||
def parse_link(self, link):
|
||||
if isinstance(link, (tuple, list)):
|
||||
link_dict = {'title': link[0], 'url': link[1]}
|
||||
if len(link) >= 3:
|
||||
link_dict['external'] = link[2]
|
||||
return link_dict
|
||||
elif isinstance(link, (dict,)):
|
||||
return link
|
||||
|
||||
|
||||
class AppList(DashboardModule):
|
||||
"""
|
||||
Shows applications and containing models links. For each model "created" and "change" links are displayed.
|
||||
|
||||
Usage example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.dashboard import Dashboard, AppIndexDashboard
|
||||
|
||||
|
||||
class CustomIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.children.append(modules.AppList(
|
||||
_('Applications'),
|
||||
exclude=('auth.*',),
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
"""
|
||||
|
||||
title = _('Applications')
|
||||
template = 'jet.dashboard/modules/app_list.html'
|
||||
|
||||
#: Specify models which should be displayed. ``models`` is an array of string formatted as ``app_label.model``.
|
||||
#: Also its possible to specify all application models with * sign (e.g. ``auth.*``).
|
||||
models = None
|
||||
|
||||
#: Specify models which should NOT be displayed. ``exclude`` is an array of string formatted as ``app_label.model``.
|
||||
#: Also its possible to specify all application models with * sign (e.g. ``auth.*``).
|
||||
exclude = None
|
||||
hide_empty = True
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'models': self.models,
|
||||
'exclude': self.exclude
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
self.models = settings.get('models')
|
||||
self.exclude = settings.get('exclude')
|
||||
|
||||
def init_with_context(self, context):
|
||||
app_list = get_app_list(context)
|
||||
app_to_remove = []
|
||||
|
||||
for app in app_list:
|
||||
app_name = app.get('app_label', app.get('name', ''))
|
||||
app['models'] = filter(
|
||||
lambda model: self.models is None or ('%s.%s' % (app_name, model['object_name'])) in self.models or ('%s.*' % app_name) in self.models,
|
||||
app['models']
|
||||
)
|
||||
app['models'] = filter(
|
||||
lambda model: self.exclude is None or (('%s.%s' % (app_name, model['object_name'])) not in self.exclude and ('%s.*' % app_name) not in self.exclude),
|
||||
app['models']
|
||||
)
|
||||
app['models'] = list(app['models'])
|
||||
|
||||
if self.hide_empty and len(list(app['models'])) == 0:
|
||||
app_to_remove.append(app)
|
||||
|
||||
for app in app_to_remove:
|
||||
app_list.remove(app)
|
||||
|
||||
self.children = app_list
|
||||
|
||||
|
||||
class ModelList(DashboardModule):
|
||||
"""
|
||||
Shows models links. For each model "created" and "change" links are displayed.
|
||||
|
||||
Usage example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.dashboard import Dashboard, AppIndexDashboard
|
||||
|
||||
|
||||
class CustomIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.children.append(modules.ModelList(
|
||||
_('Models'),
|
||||
exclude=('auth.*',),
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
"""
|
||||
|
||||
title = _('Models')
|
||||
template = 'jet.dashboard/modules/model_list.html'
|
||||
|
||||
#: Specify models which should be displayed. ``models`` is an array of string formatted as ``app_label.model``.
|
||||
#: Also its possible to specify all application models with * sign (e.g. ``auth.*``).
|
||||
models = None
|
||||
|
||||
#: Specify models which should NOT be displayed. ``exclude`` is an array of string formatted as ``app_label.model``.
|
||||
#: Also its possible to specify all application models with * sign (e.g. ``auth.*``).
|
||||
exclude = None
|
||||
hide_empty = True
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'models': self.models,
|
||||
'exclude': self.exclude
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
self.models = settings.get('models')
|
||||
self.exclude = settings.get('exclude')
|
||||
|
||||
def init_with_context(self, context):
|
||||
app_list = get_app_list(context)
|
||||
models = []
|
||||
|
||||
for app in app_list:
|
||||
app_name = app.get('app_label', app.get('name', ''))
|
||||
app['models'] = filter(
|
||||
lambda model: self.models is None or ('%s.%s' % (app_name, model['object_name'])) in self.models or ('%s.*' % app_name) in self.models,
|
||||
app['models']
|
||||
)
|
||||
app['models'] = filter(
|
||||
lambda model: self.exclude is None or (('%s.%s' % (app_name, model['object_name'])) not in self.exclude and ('%s.*' % app_name) not in self.exclude),
|
||||
app['models']
|
||||
)
|
||||
app['models'] = list(app['models'])
|
||||
|
||||
models.extend(app['models'])
|
||||
|
||||
self.children = models
|
||||
|
||||
|
||||
class RecentActionsSettingsForm(forms.Form):
|
||||
limit = forms.IntegerField(label=_('Items limit'), min_value=1)
|
||||
|
||||
|
||||
class RecentActions(DashboardModule):
|
||||
"""
|
||||
Display list of most recent admin actions with following information:
|
||||
entity name, type of action, author, date
|
||||
|
||||
Usage example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.dashboard import Dashboard, AppIndexDashboard
|
||||
|
||||
|
||||
class CustomIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.children.append(modules.RecentActions(
|
||||
_('Recent Actions'),
|
||||
10,
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
"""
|
||||
|
||||
title = _('Recent Actions')
|
||||
template = 'jet.dashboard/modules/recent_actions.html'
|
||||
|
||||
#: Number if entries to be shown (may be changed by each user personally).
|
||||
limit = 10
|
||||
|
||||
#: Specify actions of which models should be displayed. ``include_list`` is an array of string
|
||||
#: formatted as ``app_label.model``. Also its possible to specify all application models
|
||||
#: with * sign (e.g. ``auth.*``).
|
||||
include_list = None
|
||||
|
||||
#: Specify actions of which models should NOT be displayed. ``exclude_list`` is an array of string
|
||||
#: formatted as ``app_label.model``. Also its possible to specify all application models
|
||||
#: with * sign (e.g. ``auth.*``).
|
||||
exclude_list = None
|
||||
settings_form = RecentActionsSettingsForm
|
||||
user = None
|
||||
|
||||
def __init__(self, title=None, limit=10, **kwargs):
|
||||
kwargs.update({'limit': limit})
|
||||
super(RecentActions, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'limit': self.limit,
|
||||
'include_list': self.include_list,
|
||||
'exclude_list': self.exclude_list,
|
||||
'user': self.user
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
self.limit = settings.get('limit', self.limit)
|
||||
self.include_list = settings.get('include_list')
|
||||
self.exclude_list = settings.get('exclude_list')
|
||||
self.user = settings.get('user', None)
|
||||
|
||||
def init_with_context(self, context):
|
||||
def get_qset(list):
|
||||
qset = None
|
||||
for contenttype in list:
|
||||
try:
|
||||
app_label, model = contenttype.split('.')
|
||||
|
||||
if model == '*':
|
||||
current_qset = Q(
|
||||
content_type__app_label=app_label
|
||||
)
|
||||
else:
|
||||
current_qset = Q(
|
||||
content_type__app_label=app_label,
|
||||
content_type__model=model
|
||||
)
|
||||
except:
|
||||
raise ValueError('Invalid contenttype: "%s"' % contenttype)
|
||||
|
||||
if qset is None:
|
||||
qset = current_qset
|
||||
else:
|
||||
qset = qset | current_qset
|
||||
return qset
|
||||
|
||||
qs = LogEntry.objects
|
||||
|
||||
if self.user:
|
||||
qs = qs.filter(
|
||||
user__pk=int(self.user)
|
||||
)
|
||||
|
||||
if self.include_list:
|
||||
qs = qs.filter(get_qset(self.include_list))
|
||||
if self.exclude_list:
|
||||
qs = qs.exclude(get_qset(self.exclude_list))
|
||||
|
||||
self.children = qs.select_related('content_type', 'user')[:int(self.limit)]
|
||||
|
||||
|
||||
class FeedSettingsForm(forms.Form):
|
||||
limit = forms.IntegerField(label=_('Items limit'), min_value=1)
|
||||
feed_url = forms.URLField(label=_('Feed URL'))
|
||||
|
||||
|
||||
class Feed(DashboardModule):
|
||||
"""
|
||||
Display RSS Feed entries with following information:
|
||||
entry title, date and link to the full version
|
||||
|
||||
Usage example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from jet.dashboard import modules
|
||||
from jet.dashboard.dashboard import Dashboard, AppIndexDashboard
|
||||
|
||||
|
||||
class CustomIndexDashboard(Dashboard):
|
||||
columns = 3
|
||||
|
||||
def init_with_context(self, context):
|
||||
self.children.append(modules.Feed(
|
||||
_('Latest Django News'),
|
||||
feed_url='http://www.djangoproject.com/rss/weblog/',
|
||||
limit=5,
|
||||
column=0,
|
||||
order=0
|
||||
))
|
||||
|
||||
"""
|
||||
|
||||
title = _('RSS Feed')
|
||||
template = 'jet.dashboard/modules/feed.html'
|
||||
|
||||
#: URL of the RSS feed (may be changed by each user personally).
|
||||
feed_url = None
|
||||
|
||||
#: Number if entries to be shown (may be changed by each user personally).
|
||||
limit = None
|
||||
settings_form = FeedSettingsForm
|
||||
ajax_load = True
|
||||
|
||||
def __init__(self, title=None, feed_url=None, limit=None, **kwargs):
|
||||
kwargs.update({'feed_url': feed_url, 'limit': limit})
|
||||
super(Feed, self).__init__(title, **kwargs)
|
||||
|
||||
def settings_dict(self):
|
||||
return {
|
||||
'feed_url': self.feed_url,
|
||||
'limit': self.limit
|
||||
}
|
||||
|
||||
def load_settings(self, settings):
|
||||
self.feed_url = settings.get('feed_url')
|
||||
self.limit = settings.get('limit')
|
||||
|
||||
def init_with_context(self, context):
|
||||
if self.feed_url is not None:
|
||||
try:
|
||||
import feedparser
|
||||
|
||||
feed = feedparser.parse(self.feed_url)
|
||||
|
||||
if self.limit is not None:
|
||||
entries = feed['entries'][:self.limit]
|
||||
else:
|
||||
entries = feed['entries']
|
||||
|
||||
for entry in entries:
|
||||
try:
|
||||
entry.date = datetime.date(*entry.published_parsed[0:3])
|
||||
except:
|
||||
pass
|
||||
|
||||
self.children.append(entry)
|
||||
except ImportError:
|
||||
self.children.append({
|
||||
'title': _('You must install the FeedParser python module'),
|
||||
'warning': True,
|
||||
})
|
||||
else:
|
||||
self.children.append({
|
||||
'title': _('You must provide a valid feed URL'),
|
||||
'warning': True,
|
||||
})
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
from django.conf import settings
|
||||
|
||||
# Dashboard
|
||||
JET_INDEX_DASHBOARD = getattr(settings, 'JET_INDEX_DASHBOARD', 'jet.dashboard.dashboard.DefaultIndexDashboard')
|
||||
JET_APP_INDEX_DASHBOARD = getattr(settings, 'JET_APP_INDEX_DASHBOARD', 'jet.dashboard.dashboard.DefaultAppIndexDashboard')
|
||||
@@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from south.utils import datetime_utils as datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding model 'UserDashboardModule'
|
||||
db.create_table(u'dashboard_userdashboardmodule', (
|
||||
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
|
||||
('title', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('module', self.gf('django.db.models.fields.CharField')(max_length=255)),
|
||||
('app_label', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
|
||||
('user', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
('column', self.gf('django.db.models.fields.PositiveIntegerField')()),
|
||||
('order', self.gf('django.db.models.fields.IntegerField')()),
|
||||
('settings', self.gf('django.db.models.fields.TextField')(default='', blank=True)),
|
||||
('children', self.gf('django.db.models.fields.TextField')(default='', blank=True)),
|
||||
('collapsed', self.gf('django.db.models.fields.BooleanField')(default=False)),
|
||||
))
|
||||
db.send_create_signal(u'dashboard', ['UserDashboardModule'])
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting model 'UserDashboardModule'
|
||||
db.delete_table(u'dashboard_userdashboardmodule')
|
||||
|
||||
|
||||
models = {
|
||||
u'dashboard.userdashboardmodule': {
|
||||
'Meta': {'ordering': "('column', 'order')", 'object_name': 'UserDashboardModule'},
|
||||
'app_label': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
|
||||
'children': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
|
||||
'collapsed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
'column': ('django.db.models.fields.PositiveIntegerField', [], {}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'module': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'order': ('django.db.models.fields.IntegerField', [], {}),
|
||||
'settings': ('django.db.models.fields.TextField', [], {'default': "''", 'blank': 'True'}),
|
||||
'title': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
|
||||
'user': ('django.db.models.fields.PositiveIntegerField', [], {})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['dashboard']
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,54 @@
|
||||
(function ($) {
|
||||
$.fn.extend( {
|
||||
googleAnalyticsChart: function() {
|
||||
var $chart = $(this);
|
||||
var ctx = $chart.get(0).getContext("2d");
|
||||
var $data = $chart.find('.chart-data');
|
||||
var $dataItems = $data.find('.chart-data-item');
|
||||
var labels = [];
|
||||
var data = [];
|
||||
|
||||
$dataItems.each(function() {
|
||||
labels.push($(this).data('date'));
|
||||
data.push($(this).data('value'));
|
||||
});
|
||||
|
||||
var chart = new Chart(ctx).Line({
|
||||
labels: labels,
|
||||
datasets: [
|
||||
{
|
||||
fillColor: $chart.find('.chart-fillColor').css('color'),
|
||||
strokeColor: $chart.find('.chart-strokeColor').css('color'),
|
||||
pointColor: $chart.find('.chart-pointColor').css('color'),
|
||||
pointHighlightFill: $chart.find('.chart-pointHighlightFill').css('color'),
|
||||
responsive: true,
|
||||
data: data
|
||||
}
|
||||
]
|
||||
}, {
|
||||
scaleGridLineColor: $chart.find('.chart-scaleGridLineColor').css('color'),
|
||||
scaleLineColor: $chart.find('.chart-scaleLineColor').css('color'),
|
||||
scaleFontColor: $chart.find('.chart-scaleFontColor').css('color')
|
||||
});
|
||||
|
||||
var updateChartColors = function(chart) {
|
||||
for (var i = 0; i < chart.datasets.length; ++i) {
|
||||
chart.datasets[i]['fillColor'] = $chart.find('.chart-fillColor').css('color');
|
||||
chart.datasets[i]['strokeColor'] = $chart.find('.chart-strokeColor').css('color');
|
||||
chart.datasets[i]['pointColor'] = $chart.find('.chart-pointColor').css('color');
|
||||
chart.datasets[i]['pointHighlightFill'] = $chart.find('.chart-pointHighlightFill').css('color');
|
||||
}
|
||||
|
||||
chart.scale['gridLineColor'] = $chart.find('.chart-scaleGridLineColor').css('color');
|
||||
chart.scale['lineColor'] = $chart.find('.chart-scaleLineColor').css('color');
|
||||
chart.scale['textColor'] = $chart.find('.chart-scaleFontColor').css('color');
|
||||
|
||||
chart.update();
|
||||
};
|
||||
|
||||
$(document).on('theme:changed', function() {
|
||||
updateChartColors(chart);
|
||||
});
|
||||
}
|
||||
});
|
||||
})(jet.jQuery);
|
||||
@@ -0,0 +1,54 @@
|
||||
(function ($) {
|
||||
$.fn.extend( {
|
||||
yandexMetrikaChart: function() {
|
||||
var $chart = $(this);
|
||||
var ctx = $chart.get(0).getContext("2d");
|
||||
var $data = $chart.find('.chart-data');
|
||||
var $dataItems = $data.find('.chart-data-item');
|
||||
var labels = [];
|
||||
var data = [];
|
||||
|
||||
$dataItems.each(function() {
|
||||
labels.push($(this).data('date'));
|
||||
data.push($(this).data('value'));
|
||||
});
|
||||
|
||||
var chart = new Chart(ctx).Line({
|
||||
labels: labels,
|
||||
datasets: [
|
||||
{
|
||||
fillColor: $chart.find('.chart-fillColor').css('color'),
|
||||
strokeColor: $chart.find('.chart-strokeColor').css('color'),
|
||||
pointColor: $chart.find('.chart-pointColor').css('color'),
|
||||
pointHighlightFill: $chart.find('.chart-pointHighlightFill').css('color'),
|
||||
responsive: true,
|
||||
data: data
|
||||
}
|
||||
]
|
||||
}, {
|
||||
scaleGridLineColor: $chart.find('.chart-scaleGridLineColor').css('color'),
|
||||
scaleLineColor: $chart.find('.chart-scaleLineColor').css('color'),
|
||||
scaleFontColor: $chart.find('.chart-scaleFontColor').css('color')
|
||||
});
|
||||
|
||||
var updateChartColors = function(chart) {
|
||||
for (var i = 0; i < chart.datasets.length; ++i) {
|
||||
chart.datasets[i]['fillColor'] = $chart.find('.chart-fillColor').css('color');
|
||||
chart.datasets[i]['strokeColor'] = $chart.find('.chart-strokeColor').css('color');
|
||||
chart.datasets[i]['pointColor'] = $chart.find('.chart-pointColor').css('color');
|
||||
chart.datasets[i]['pointHighlightFill'] = $chart.find('.chart-pointHighlightFill').css('color');
|
||||
}
|
||||
|
||||
chart.scale['gridLineColor'] = $chart.find('.chart-scaleGridLineColor').css('color');
|
||||
chart.scale['lineColor'] = $chart.find('.chart-scaleLineColor').css('color');
|
||||
chart.scale['textColor'] = $chart.find('.chart-scaleFontColor').css('color');
|
||||
|
||||
chart.update();
|
||||
};
|
||||
|
||||
$(document).on('theme:changed', function() {
|
||||
updateChartColors(chart);
|
||||
});
|
||||
}
|
||||
});
|
||||
})(jet.jQuery);
|
||||
55
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/CONTRIBUTING.md
vendored
Executable file
55
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/CONTRIBUTING.md
vendored
Executable file
@@ -0,0 +1,55 @@
|
||||
Contributing to Chart.js
|
||||
========================
|
||||
|
||||
Contributions to Chart.js are welcome and encouraged, but please have a look through the guidelines in this document before raising an issue, or writing code for the project.
|
||||
|
||||
|
||||
Using issues
|
||||
------------
|
||||
|
||||
The [issue tracker](https://github.com/nnnick/Chart.js/issues) is the preferred channel for reporting bugs, requesting new features and submitting pull requests.
|
||||
|
||||
If you're suggesting a new chart type, please take a look at [writing new chart types](https://github.com/nnnick/Chart.js/blob/master/docs/06-Advanced.md#writing-new-chart-types) in the documentation, and some of the [community extensions](https://github.com/nnnick/Chart.js/blob/master/docs/06-Advanced.md#community-extensions) that have been created already.
|
||||
|
||||
To keep the library lightweight for everyone, it's unlikely we'll add many more chart types to the core of Chart.js, but issues are a good medium to design and spec out how new chart types could work and look.
|
||||
|
||||
Please do not use issues for support requests. For help using Chart.js, please take a look at the [`chartjs`](http://stackoverflow.com/questions/tagged/chartjs) tag on Stack Overflow.
|
||||
|
||||
|
||||
Reporting bugs
|
||||
--------------
|
||||
|
||||
Well structured, detailed bug reports are hugely valuable for the project.
|
||||
|
||||
Guidlines for reporting bugs:
|
||||
|
||||
- Check the issue search to see if it has already been reported
|
||||
- Isolate the problem to a simple test case
|
||||
- Provide a demonstration of the problem on [JS Bin](http://jsbin.com) or similar
|
||||
|
||||
Please provide any additional details associated with the bug, if it's browser or screen density specific, or only happens with a certain configuration or data.
|
||||
|
||||
|
||||
Pull requests
|
||||
-------------
|
||||
|
||||
Clear, concise pull requests are excellent at continuing the project's community driven growth. But please review [these guidelines](https://github.com/blog/1943-how-to-write-the-perfect-pull-request) and the guidelines below before starting work on the project.
|
||||
|
||||
Guidlines:
|
||||
|
||||
- Please create an issue first:
|
||||
- For bugs, we can discuss the fixing approach
|
||||
- For enhancements, we can discuss if it is within the project scope and avoid duplicate effort
|
||||
- Please make changes to the files in [`/src`](https://github.com/nnnick/Chart.js/tree/master/src), not `Chart.js` or `Chart.min.js` in the repo root directory, this avoids merge conflicts
|
||||
- Tabs for indentation, not spaces please
|
||||
- If adding new functionality, please also update the relevant `.md` file in [`/docs`](https://github.com/nnnick/Chart.js/tree/master/docs)
|
||||
- Please make your commits in logical sections with clear commit messages
|
||||
|
||||
Joining the Project
|
||||
-------------
|
||||
- Active committers and contributors are invited to introduce yourself and request commit access to this project. Please send an email to hello@nickdownie.com or file an issue.
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
By contributing your code, you agree to license your contribution under the [MIT license](https://github.com/nnnick/Chart.js/blob/master/LICENSE.md).
|
||||
3477
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/Chart.js
vendored
Executable file
3477
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/Chart.js
vendored
Executable file
File diff suppressed because it is too large
Load Diff
11
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/Chart.min.js
vendored
Executable file
11
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/Chart.min.js
vendored
Executable file
File diff suppressed because one or more lines are too long
7
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/LICENSE.md
vendored
Executable file
7
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/LICENSE.md
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
Copyright (c) 2013-2015 Nick Downie
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
20
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/README.md
vendored
Executable file
20
.venv/lib/python3.10/site-packages/jet/dashboard/static/jet.dashboard/vendor/chart.js/README.md
vendored
Executable file
@@ -0,0 +1,20 @@
|
||||
# Chart.js
|
||||
|
||||
[](https://travis-ci.org/nnnick/Chart.js) [](https://codeclimate.com/github/nnnick/Chart.js)
|
||||
|
||||
|
||||
*Simple HTML5 Charts using the canvas element* [chartjs.org](http://www.chartjs.org)
|
||||
|
||||
## Documentation
|
||||
|
||||
You can find documentation at [chartjs.org/docs](http://www.chartjs.org/docs/). The markdown files that build the site are available under `/docs`. Please note - in some of the json examples of configuration you might notice some liquid tags - this is just for the generating the site html, please disregard.
|
||||
|
||||
## Bugs, issues and contributing
|
||||
|
||||
Before submitting an issue or a pull request to the project, please take a moment to look over the [contributing guidelines](https://github.com/nnnick/Chart.js/blob/master/CONTRIBUTING.md) first.
|
||||
|
||||
For support using Chart.js, please post questions with the [`chartjs` tag on Stack Overflow](http://stackoverflow.com/questions/tagged/chartjs).
|
||||
|
||||
## License
|
||||
|
||||
Chart.js is available under the [MIT license](http://opensource.org/licenses/MIT).
|
||||
@@ -0,0 +1,37 @@
|
||||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n static jet_dashboard_tags %}
|
||||
|
||||
{% block html %}{% get_dashboard 'app_index' as dashboard %}{{ block.super }}{% endblock %}
|
||||
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />
|
||||
|
||||
{% for css in dashboard.media.css %}
|
||||
<link href="{% static css %}" rel="stylesheet" />
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
|
||||
{% for js in dashboard.media.js %}
|
||||
<script src="{% static js %}"></script>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyclass %}{{ block.super }} dashboard jet app-{{ app_label }}{% endblock %}
|
||||
|
||||
{% block sidebar %}{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% if not is_popup %}
|
||||
<div class="breadcrumbs"></div>
|
||||
{% endif %}
|
||||
|
||||
{{ dashboard.render_tools }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ dashboard.render }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,37 @@
|
||||
{% extends "admin/base_site.html" %}
|
||||
{% load i18n admin_static jet_dashboard_tags static %}
|
||||
|
||||
{% block html %}{% get_dashboard 'index' as dashboard %}{{ block.super }}{% endblock %}
|
||||
|
||||
{% block extrastyle %}
|
||||
{{ block.super }}
|
||||
<link rel="stylesheet" type="text/css" href="{% static "admin/css/dashboard.css" %}" />
|
||||
|
||||
{% for css in dashboard.media.css %}
|
||||
<link href="{% static css %}" rel="stylesheet" />
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block extrahead %}
|
||||
{{ block.super }}
|
||||
|
||||
{% for js in dashboard.media.js %}
|
||||
<script src="{% static js %}"></script>
|
||||
{% endfor %}
|
||||
{% endblock %}
|
||||
|
||||
{% block bodyclass %}{{ block.super }} dashboard jet{% endblock %}
|
||||
|
||||
{% block sidebar %}{% endblock %}
|
||||
|
||||
{% block breadcrumbs %}
|
||||
{% if not is_popup %}
|
||||
<div class="breadcrumbs"></div>
|
||||
{% endif %}
|
||||
|
||||
{{ dashboard.render_tools }}
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{{ dashboard.render }}
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,37 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div class="dashboard-container columns_{{ columns|length }} cf">
|
||||
{% for i in columns %}
|
||||
<div class="dashboard-column-wrapper">
|
||||
<div class="dashboard-column{% if forloop.first %} first{% endif %}">
|
||||
{% for module in modules %}
|
||||
{% if module.model.column == i %}
|
||||
{% include "jet.dashboard/module.html" with module=module %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
|
||||
<div class="dialog-confirm" id="module-remove-dialog" title="{% trans "Delete widget" %}">
|
||||
<p>{% trans "Are you sure want to delete this widget?" %}</p>
|
||||
</div>
|
||||
|
||||
<form action="{% url "jet-dashboard:update_dashboard_modules" %}" method="POST" id="update-dashboard-modules-form">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="app_label" value="{% if app_label %}{{ app_label }}{% endif %}">
|
||||
<input type="hidden" name="modules">
|
||||
</form>
|
||||
|
||||
<form action="{% url "jet-dashboard:update_dashboard_module_collapse" %}" method="POST" id="update-dashboard-module-collapse-form">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="id">
|
||||
<input type="hidden" name="collapsed">
|
||||
</form>
|
||||
|
||||
<form action="{% url "jet-dashboard:remove_dashboard_module" %}" method="POST" id="remove-dashboard-module-form">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="id">
|
||||
</form>
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div class="dashboard-tools-toggle-container">
|
||||
<a href="#" class="dashboard-tools-toggle button">
|
||||
<span class="dashboard-tools-toggle-icon icon-settings"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="dashboard-tools">
|
||||
<form action="{% url "jet-dashboard:add_user_dashboard_module" %}" method="POST" id="add-dashboard-module-form">
|
||||
{% csrf_token %}
|
||||
<select class="add-dashboard" name="module">
|
||||
<option>{% trans "widgets" %}</option>
|
||||
<optgroup label="{% trans "available" %}">
|
||||
{% for module in available_children %}
|
||||
<option value="{{ forloop.counter0 }}" data-type="available_children">{{ module.title }}</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
<optgroup label="{% trans "initials" %}">
|
||||
{% for module in children %}
|
||||
<option value="{{ forloop.counter0 }}" data-type="children">{{ module.title }}</option>
|
||||
{% endfor %}
|
||||
</optgroup>
|
||||
</select><a href="#" class="button add-dashboard-link" title="{% trans "Add" %}"><span class="add-dashboard-link-icon icon-add"></span><span class="add-dashboard-link-label">{% trans "Add" %}</span></a>
|
||||
<input type="hidden" name="app_label" value="{% if app_label %}{{ app_label }}{% endif %}">
|
||||
<input type="hidden" name="type" value="">
|
||||
<a href="#" class="button transparent reset-dashboard-link" title="{% trans "Reset widgets" %}"><span class="reset-dashboard-link-icon icon-reset"></span><span class="reset-dashboard-link-label">{% trans "Reset widgets" %}</span></a>
|
||||
</form>
|
||||
<form action="{% url "jet-dashboard:reset_dashboard" %}" method="POST" id="reset-dashboard-form">
|
||||
{% csrf_token %}
|
||||
<input type="hidden" name="app_label" value="{% if app_label %}{{ app_label }}{% endif %}">
|
||||
</form>
|
||||
<div class="dialog-confirm" id="reset-dashboard-dialog" title="{% trans "Reset widgets" %}">
|
||||
<p>{% trans "Are you sure want to reset widgets?" %}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
{% load i18n %}
|
||||
|
||||
<div class="dashboard-item{% if module.collapsible %} collapsible{% endif %}{% if module.model.collapsed %} collapsed{% endif %}{% if module.deletable %} deletable{% endif %}{% if module.ajax_load %} ajax{% endif %}{% if module.draggable %} draggable{% endif %}"{% if module.ajax_load %} data-ajax-url="{% url "jet-dashboard:load_dashboard_module" pk=module.model.id %}"{% endif %} data-module-id="{{ module.model.id }}">
|
||||
<div class="dashboard-item-header">
|
||||
{% if module.draggable %}
|
||||
<span class="dashboard-item-header-drag icon-grid"></span>
|
||||
{% endif %}
|
||||
<span class="dashboard-item-header-buttons">
|
||||
<a href="{% url "jet-dashboard:update_module" pk=module.model.id %}" title="{% trans "Change" %}"><span class="icon-edit"></span></a>
|
||||
|
||||
{% if module.deletable %}
|
||||
<a href="#" title="{% trans "Delete" %}" class="dashboard-item-remove"><span class="icon-cross"></span></a>
|
||||
{% endif %}
|
||||
</span>
|
||||
<span class="dashboard-item-header-title">
|
||||
{% if module.collapsible %}
|
||||
<a href="#" class="dashboard-item-collapse"><span class="dashboard-item-header-collapse-button icon-arrow-down"></span></a>
|
||||
<a href="#" class="dashboard-item-collapse"><span class="dashboard-item-header-collapse-button icon-arrow-up"></span></a>
|
||||
{% endif %}
|
||||
|
||||
{% if module.title_url %}
|
||||
<a href="{{ module.title_url }}">{{ module.title }}</a>
|
||||
{% else %}
|
||||
{{ module.title }}
|
||||
{% endif %}
|
||||
</span>
|
||||
<div class="cf"></div>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-item-content{% if module.contrast %} contrast{% endif %}"{% if module.style %} style="{{ module.style }}"{% endif %}>
|
||||
{{ module.pre_content|default_if_none:"" }}
|
||||
{% if module.ajax_load %}
|
||||
<div class="loading-indicator-wrapper">
|
||||
<span class="icon-refresh loading-indicator"></span>
|
||||
</div>
|
||||
{% else %}
|
||||
{{ module.render }}
|
||||
{% endif %}
|
||||
{{ module.post_content|default_if_none:"" }}
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,38 @@
|
||||
{% load i18n %}
|
||||
|
||||
<ul>
|
||||
{% for app in module.children %}
|
||||
<li class="contrast">
|
||||
{% if app.name != app.app_label|capfirst|escape %}
|
||||
<a href="{{ app.app_url }}" title="{% blocktrans with name=app.name %}Models in the {{ name }} application{% endblocktrans %}">{{ app.name }}</a>
|
||||
{% else %}
|
||||
{% trans app.app_label as app_label %}
|
||||
<a href="{{ app.app_url }}" title="{% blocktrans with name=app_label %}Models in the {{ name }} application{% endblocktrans %}">{{ app_label }}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
|
||||
{% for model in app.models %}
|
||||
<li>
|
||||
<span class="float-right">
|
||||
{% if model.add_url %}
|
||||
<a href="{{ model.add_url }}" class="addlink" title="{% trans 'Add' %}"></a>
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if model.admin_url %}
|
||||
<a href="{{ model.admin_url }}" class="changelink" title="{% trans 'Change' %}"></a>
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
{% if model.admin_url %}
|
||||
<a href="{{ model.admin_url }}">{{ model.name }}</a>
|
||||
{% else %}
|
||||
{{ model.name }}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
@@ -0,0 +1,16 @@
|
||||
{% load i18n %}
|
||||
|
||||
<ul>
|
||||
{% if module.children %}
|
||||
{% for child in module.children %}
|
||||
<li>
|
||||
{% if child.date %}<span class="float-right dim">{{ child.date|date }}</span>{% endif %}
|
||||
{% if child.warning %}<span class="warning">{{ child.title }}</span>{% else %}<a href="{{ child.link }}" target="_blank" class="nowrap"><span class="icon-open-external"></span> {{ child.title }}</a>{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<li>
|
||||
{% trans "Nothing to show" %}
|
||||
</li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
@@ -0,0 +1,38 @@
|
||||
{% load i18n %}
|
||||
|
||||
|
||||
{% if module.error %}
|
||||
<ul>
|
||||
<li>
|
||||
{{ module.error }}
|
||||
</li>
|
||||
</ul>
|
||||
{% elif module.children %}
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "Date" %}</th>
|
||||
<th>{% trans "users" as label %}{{ label|capfirst }}</th>
|
||||
<th>{% trans "sessions" as label %}{{ label|capfirst }}</th>
|
||||
<th>{% trans "views" as label %}{{ label|capfirst }}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for data in module.children %}
|
||||
<tr>
|
||||
<th>{{ data.0 }}</th>
|
||||
<td width="1" align="center">{{ data.1.ga_users }}</td>
|
||||
<td width="1" align="center">{{ data.1.ga_sessions }}</td>
|
||||
<td width="1" align="center">{{ data.1.ga_pageviews }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<ul>
|
||||
<li>
|
||||
{% trans "Nothing to show" %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% if module.error %}
|
||||
<ul>
|
||||
<li>
|
||||
{{ module.error }}
|
||||
</li>
|
||||
</ul>
|
||||
{% elif module.children %}
|
||||
<div class="padding center">
|
||||
<canvas id="chart_{{ module.model.pk }}" style="width: 100%;">
|
||||
<div class="chart-fillColor"></div>
|
||||
<div class="chart-strokeColor"></div>
|
||||
<div class="chart-pointColor"></div>
|
||||
<div class="chart-pointHighlightFill"></div>
|
||||
<div class="chart-scaleGridLineColor"></div>
|
||||
<div class="chart-scaleLineColor"></div>
|
||||
<div class="chart-scaleFontColor"></div>
|
||||
<div class="chart-data">
|
||||
{% for data in module.children %}
|
||||
<div class="chart-data-item" data-date="{{ data.0|date:"d/m" }}" data-value="{{ data.1 }}"></div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</canvas>
|
||||
<script>jet.jQuery('#chart_{{ module.model.pk }}').googleAnalyticsChart();</script>
|
||||
</div>
|
||||
{% else %}
|
||||
<ul>
|
||||
<li>
|
||||
{% trans "Nothing to show" %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,26 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% if module.error %}
|
||||
<ul>
|
||||
<li>
|
||||
{{ module.error }}
|
||||
</li>
|
||||
</ul>
|
||||
{% elif module.children %}
|
||||
<div class="padding center">
|
||||
<ul class="inline bordered">
|
||||
{% for statistic in module.children %}
|
||||
<li>
|
||||
<div class="big">{{ statistic.value }}</div>
|
||||
<div class="dim">{{ statistic.title }}</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% else %}
|
||||
<ul>
|
||||
<li>
|
||||
{% trans "Nothing to show" %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,29 @@
|
||||
{% load i18n %}
|
||||
|
||||
{% if module.children %}
|
||||
{% if module.layout == "stacked" %}
|
||||
<ul>
|
||||
{% for link in module.children %}
|
||||
<li>
|
||||
<a href="{{ link.url }}">{% if link.external %}<span class="icon-open-external"></span> {% endif %}{{ link.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% elif module.layout == "inline" %}
|
||||
<div class="padding center">
|
||||
<ul class="inline">
|
||||
{% for link in module.children %}
|
||||
<li>
|
||||
<a href="{{ link.url }}" class="nowrap">{% if link.external %}<span class="icon-open-external"></span> {% endif %}{{ link.title }}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<ul>
|
||||
<li>
|
||||
{% trans "Nothing to show" %}
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
@@ -0,0 +1,27 @@
|
||||
{% load i18n %}
|
||||
|
||||
<ul>
|
||||
{% for model in module.children %}
|
||||
<li>
|
||||
<span class="float-right">
|
||||
{% if model.add_url %}
|
||||
<a href="{{ model.add_url }}" class="addlink" title="{% trans 'Add' %}"></a>
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
|
||||
{% if model.admin_url %}
|
||||
<a href="{{ model.admin_url }}" class="changelink" title="{% trans 'Change' %}"></a>
|
||||
{% else %}
|
||||
|
||||
{% endif %}
|
||||
</span>
|
||||
|
||||
{% if model.admin_url %}
|
||||
<a href="{{ model.admin_url }}">{{ model.name }}</a>
|
||||
{% else %}
|
||||
{{ model.name }}
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user