''', re.I | re.X | re.S) RE_STRIP_TAGS = re.compile(r'</?(img|br|p|div|ul|li|ol)[^<>]*?>', re.I | re.M) # Add some html5 allowed attributes EXTRA_ATTRIBUTES = ('srcset', 'sizes') feedparser._HTMLSanitizer.acceptable_attributes.update(set(EXTRA_ATTRIBUTES)) # Wordpress ATOM timeout WP_TIMEOUT = 5 # Feed allowed enclosure type as thumbnails FEED_THUMBNAIL_MIMES = ('image/jpeg', 'image/png', 'image/webp') gouvfr_menu = nav.Bar('gouvfr_menu', [ nav.Item(_('Data'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), nav.Item(_('Dashboard'), 'site.dashboard'), nav.Item(_('Documentation'), None, url='https://doc.data.gouv.fr'), ]) theme.menu(gouvfr_menu) footer_links = [ nav.Item(_('Documentation'), None, url='https://doc.data.gouv.fr'), nav.Item(_('Reference Data'), 'gouvfr.spd'), nav.Item(_('Licences'), 'gouvfr.licences'), nav.Item(_('API'), 'apidoc.swaggerui'), nav.Item(_('Terms of use'), 'site.terms'), nav.Item(_('Tracking and privacy'), 'gouvfr.suivi'),
author=author, url=url_for('reuses.show', reuse=reuse.id, _external=True), updated=reuse.created_at, published=reuse.created_at) return feed.get_response() @blueprint.route('/', endpoint='list') class ReuseListView(SearchView): model = Reuse context_name = 'reuses' template_name = 'reuse/list.html' navbar = nav.Bar('edit_reuse', [ nav.Item(_('Issues'), 'reuses.issues'), nav.Item(_('Transfer'), 'reuses.transfer'), ]) class ReuseView(object): model = Reuse object_name = 'reuse' @property def reuse(self): return self.get_object() def get_context(self): for item in navbar: item._args = {'reuse': self.reuse}
dataset=dataset.id, _external=True), updated=dataset.last_modified, published=dataset.created_at) return feed.get_response() @blueprint.route('/', endpoint='list') class DatasetListView(SearchView): model = Dataset context_name = 'datasets' template_name = 'dataset/list.html' navbar = nav.Bar('edit_dataset', [ nav.Item(_('Descrition'), 'datasets.edit'), nav.Item(_('Additionnal informations'), 'datasets.edit_extras'), nav.Item(_('Resources'), 'datasets.edit_resources'), nav.Item(_('Issues'), 'datasets.issues'), nav.Item(_('Transfer'), 'datasets.transfer'), ]) class DatasetView(object): model = Dataset object_name = 'dataset' @property def dataset(self): return self.get_object()
log = logging.getLogger(__name__) themes = Themes() def get_current_theme(): if getattr(g, 'theme', None) is None: g.theme = current_app.theme_manager.themes[current_app.config['THEME']] g.theme.configure() return g.theme current = LocalProxy(get_current_theme) default_menu = nav.Bar('default_menu', [ nav.Item(_('Organizations'), 'organizations.list'), nav.Item(_('Datasets'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Map'), 'site.map'), ]) @contextfunction def theme_static_with_version(ctx, filename, external=False): '''Override the default theme static to add cache burst''' if current_app.theme_manager.static_folder: url = assets.cdn_for('_themes.static', filename=current.identifier + '/' + filename, _external=external) else: url = assets.cdn_for('_themes.static',
from udata.i18n import lazy_gettext as _ log = logging.getLogger(__name__) gouvpt_menu = nav.Bar( 'gouvpt_menu', [ nav.Item( _('Documentation'), None, url='#', items=[ nav.Item(_('About Open Data'), 'gouvpt.faq', {'section': 'about_opendata'}), nav.Item(_('About Dados.gov'), 'gouvpt.faq', {'section': 'about_dadosgov'}), nav.Item(_('Publish data'), 'gouvpt.faq', {'section': 'publish'}), nav.Item(_('Reuse data'), 'gouvpt.faq', {'section': 'reuse'}), nav.Item(_('Licenses'), 'gouvpt.faq', {'section': 'licenses'}), nav.Item(_('Acessibilidade'), 'gouvpt.faq', {'section': 'acessibilidade'}), nav.Item(_('API'), 'gouvpt.docapi'), ]), nav.Item( _('Open Data'), None, url='#', items=[ nav.Item(_('Datasets'), 'datasets.list'), #nav.Item(_('Data Analysis'), 'gouvpt.rawgraphs', {'embed': 'true'}),
from udata.app import cache, nav from udata.i18n import lazy_gettext as _ log = logging.getLogger(__name__) RE_POST_IMG = re.compile( r'\<img .* src="https?:(?P<src>.+\.(?:png|jpg))" .* />(?P<content>.+)') gouvfr_menu = nav.Bar( 'gouvfr_menu', [ nav.Item( _('Discover OpenData'), 'gouvfr.faq', # items=[ # nav.Item(_('As a citizen'), 'gouvfr.faq', {'section': 'citizen'}), # nav.Item(_('As a producer'), 'gouvfr.faq', {'section': 'producer'}), # nav.Item(_('As a reuser'), 'gouvfr.faq', {'section': 'reuser'}), # nav.Item(_('As a developer'), 'gouvfr.faq', {'section': 'developer'}), # ] ), nav.Item( _('Data'), 'datasets.list', # items=[ # nav.Item(_('Datasets'), 'datasets.list'), # nav.Item(_('Reuses'), 'reuses.list'), # nav.Item(_('Organizations'), 'organizations.list'), # ] ), # nav.Item(_('Dashboard'), 'site.dashboard'), # nav.Item(_('Events'), '#', url='#', items=[
from udata import theme from udata.app import nav from udata.core.post.models import Post from udata.i18n import lazy_gettext as _ log = logging.getLogger(__name__) gouvpt_menu = nav.Bar('gouvpt_menu', [ nav.Item( _('Documentation'), None, url='#', items=[ nav.Item(_('About Open Data'), 'gouvpt.faq', {'section': 'about_opendata'}), nav.Item(_('About Dados.gov'), 'gouvpt.faq', {'section': 'about_dadosgov'}), nav.Item(_('Publish data'), 'gouvpt.faq', {'section': 'publish'}), nav.Item(_('Reuse data'), 'gouvpt.faq', {'section': 'reuse'}), nav.Item(_('Licenses'), 'gouvpt.faq', {'section': 'licenses'}), nav.Item(_('Acessibilidade'), 'gouvpt.faq', {'section': 'acessibilidade'}), nav.Item(_('API'), 'apidoc.swaggerui'), ]), nav.Item(_('Open Data'), None, url='#', items=[ nav.Item(_('Datasets'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), nav.Item(_('Dashboard'), 'site.dashboard'),
RE_POST_IMG = re.compile( r'\<img .* src="https?:(?P<src>.+\.(?:png|jpg))" .* />(?P<content>.+)') # Wordpress ATOM timeout WP_TIMEOUT = 5 gouvfr_menu = nav.Bar( 'gouvfr_menu', [ nav.Item(_('Discover OpenData'), 'gouvfr.faq', items=[ nav.Item(_('As a citizen'), 'gouvfr.faq', {'section': 'citizen'}), nav.Item(_('As a producer'), 'gouvfr.faq', {'section': 'producer'}), nav.Item(_('As a reuser'), 'gouvfr.faq', {'section': 'reuser'}), nav.Item(_('As a developer'), 'gouvfr.faq', {'section': 'developer'}), nav.Item(_('As a system integrator'), 'gouvfr.faq', {'section': 'system-integrator'}), ]), nav.Item(_('Data'), 'datasets.list', items=[ nav.Item(_('Datasets'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), ]), nav.Item(_('Dashboard'), 'site.dashboard'), # nav.Item(_('Territories'), 'territories.home'),
) from .tasks import notify_new_member blueprint = I18nBlueprint('organizations', __name__, url_prefix='/organizations') @blueprint.before_app_request def set_g_user_orgs(): if current_user.is_authenticated(): g.user_organizations = current_user.organizations navbar = nav.Bar('edit_org', [ nav.Item(_('Descrition'), 'organizations.edit'), nav.Item(_('Members'), 'organizations.edit_members'), nav.Item(_('Membership request'), 'organizations.edit_membership_requests'), nav.Item(_('Teams'), 'organizations.edit_teams'), nav.Item(_('Issues'), 'organizations.issues') ]) @blueprint.route('/', endpoint='list') class OrganizationListView(SearchView): model = Organization context_name = 'organizations' template_name = 'organization/list.html'
''', re.I | re.X | re.S) RE_STRIP_TAGS = re.compile(r'</?(img|br|p|div|ul|li|ol)[^<>]*?>', re.I | re.M) # Add some html5 allowed attributes EXTRA_ATTRIBUTES = ('srcset', 'sizes') feedparser._HTMLSanitizer.acceptable_attributes.update(set(EXTRA_ATTRIBUTES)) # Wordpress ATOM timeout WP_TIMEOUT = 5 # Feed allowed enclosure type as thumbnails FEED_THUMBNAIL_MIMES = ('image/jpeg', 'image/png', 'image/webp') gouvfr_menu = nav.Bar('gouvfr_menu', [ nav.Item(_('Data'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), nav.Item(_('Dashboard'), 'site.dashboard'), nav.Item(_('Documentation'), None, url='https://doc.data.gouv.fr', items=[ nav.Item(_('Technical documentation'), None, url='https://doc.data.gouv.fr'), nav.Item(_('Open data guides'), None, url='https://guides.etalab.gouv.fr'), ]), nav.Item(_('News'), 'posts.list'),
def wrapper(cls): blueprint.add_url_rule('/{0}/'.format(endpoint), view_func=cls.as_view(str(endpoint))) navbar.items.append(nav.Item(label or endpoint.title(), 'admin.{0}'.format(endpoint))) return cls
author=author, url=url_for('reuses.show', reuse=reuse.id, _external=True), updated=reuse.created_at, published=reuse.created_at) return feed.get_response() @blueprint.route('/', endpoint='list') class ReuseListView(SearchView): model = Reuse context_name = 'reuses' template_name = 'reuse/list.html' navbar = nav.Bar('edit_reuse', [ nav.Item(_('Descrition'), 'reuses.edit'), nav.Item(_('Issues'), 'reuses.issues'), nav.Item(_('Transfer'), 'reuses.transfer'), ]) class ReuseView(object): model = Reuse object_name = 'reuse' @property def reuse(self): return self.get_object() def get_context(self): for item in navbar:
''' udata-koumoul Theme for Koumoul's demo opendata portal ''' from udata.app import nav from udata.i18n import lazy_gettext as _ from udata import theme nav.Bar('footer_documentation', [ nav.Item(_('Catalogue de données'), None, url='https://github.com/opendatateam/udata/', items=[ nav.Item(_('API'), 'apidoc.swaggerui'), nav.Item(_('Documentation technique'), None, url='https://udata.readthedocs.io/'), ]), nav.Item( _('Diffusion de données'), None, url='https://github.com/koumoul-dev/data-fair/', items=[ nav.Item(_('Manuel utilisateur'), None, url='https://koumoul-dev.github.io/data-fair/user-guide'), nav.Item(_('Installation'), None, url='https://koumoul-dev.github.io/data-fair/install'),
''' from __future__ import unicode_literals import logging from udata import theme from udata.app import nav from udata.i18n import lazy_gettext as _ log = logging.getLogger(__name__) gouvlu_menu = nav.Bar('gouvlu_menu', [ nav.Item(_('Data'), 'datasets.list', items=[ nav.Item(_('Datasets'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), ]), nav.Item(_('Dashboard'), 'site.dashboard'), nav.Item(_('Events'), None, url='#', items=[ nav.Item( _('Game of code'), None, url='http://www.gameofcode.eu/'), ]), ]) theme.menu(gouvlu_menu)
log = logging.getLogger(__name__) RE_POST_IMG = re.compile( r'\<img .* src="https?:(?P<src>.+\.(?:png|jpg))" .* />(?P<content>.+)') gouvfr_menu = nav.Bar( 'gouvfr_menu', [ nav.Item(_('Discover OpenData'), 'gouvfr.faq', items=[ nav.Item(_('As a citizen'), 'gouvfr.faq', {'section': 'citizen'}), nav.Item(_('As a producer'), 'gouvfr.faq', {'section': 'producer'}), nav.Item(_('As a reuser'), 'gouvfr.faq', {'section': 'reuser'}), nav.Item(_('As a developer'), 'gouvfr.faq', {'section': 'developer'}), nav.Item(_('As a system integrator'), 'gouvfr.faq', {'section': 'system-integrator'}), ]), nav.Item(_('Data'), 'datasets.list', items=[ nav.Item(_('Datasets'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), ]), nav.Item(_('Dashboard'), 'site.dashboard'), nav.Item(_('Events'),
log = logging.getLogger(__name__) RE_POST_IMG = re.compile( r'\<img .* src="https?:(?P<src>.+\.(?:png|jpg))" .* />(?P<content>.+)') # Wordpress ATOM timeout WP_TIMEOUT = 5 lecatalogue_menu = nav.Bar( 'lecatalogue_menu', [ nav.Item(_('Data'), 'datasets.list', items=[ nav.Item(_('Datasets'), 'datasets.list'), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Organizations'), 'organizations.list'), ]), nav.Item(_('Dashboard'), 'site.dashboard'), # nav.Item(_('Territories'), 'territories.home'), ]) theme.menu(lecatalogue_menu) nav.Bar('lecatalogue_footer', [ nav.Item(_('Reference Data'), 'gouvfr.spd'), nav.Item(_('Licences'), 'gouvfr.licences'), nav.Item(_('API'), 'apidoc.swaggerui'), nav.Item(_('Credits'), 'gouvfr.credits'), nav.Item(_('Terms of use'), 'site.terms'),
log = logging.getLogger(__name__) @blueprint.before_app_request def set_g_sysadmin(): g.sysadmin = sysadmin @blueprint.app_context_processor def inject_sysadmin_perms(): return {'sysadmin': sysadmin} navbar = nav.Bar('edit_user', [ nav.Item(_('Profile'), 'users.edit'), nav.Item(_('Settings'), 'users.settings'), nav.Item(_('API KEY'), 'users.apikey_settings'), nav.Item(_('Notifications'), 'users.notifications_settings'), ]) @blueprint.route('/', endpoint='list') class UserListView(SearchView): model = User template_name = 'user/list.html' context_name = 'users' default_sort = ('last_name', 'first_name') class UserView(object):