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) nav.Bar('gouvlu_footer', [ nav.Item(_('API'), 'apidoc.swaggerui'), nav.Item(_('FAQ'), 'gouvlu.faq'), nav.Item(_('Usage Guidelines for Open Data'), 'gouvlu.usage'),
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'),
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'), ] if current_app.config.get('EXPORT_CSV_MODELS'):
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} return super(ReuseView, self).get_context()
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() def get_context(self): for item in navbar:
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', themeid=current.identifier, filename=filename,
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'}), nav.Item(_('Reuses'), 'reuses.list'), nav.Item(_('Visualizations'), 'reuses.list', {'type': 'visualization'}), nav.Item(_('Organizations'), 'organizations.list'), nav.Item(_('Dashboard'), 'site.dashboard'), nav.Item(_('Map'), 'site.map'), ]), nav.Item(_('News'), None, url='#', items=[ nav.Item(_('News'), 'posts.list'), nav.Item(_('Events'), 'posts.list', {'tag': 'evento'}), ]), nav.Item(_('Contact'), 'gouvpt.contact'), ])
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=[ # nav.Item('Nec Mergitur', 'gouvfr.nec_mergitur'), # nav.Item('Climate Change Challenge (C³)', # 'gouvfr.climate_change_challenge'), # nav.Item('Dataconnexions', 'gouvfr.dataconnexions'), # ]), # nav.Item('Dataconnexions', 'gouvfr.dataconnexions'), # selom comment # nav.Item('Etalab', 'etalab', url='http://www.etalab.gouv.fr/'), # nav.Item('CADA', 'cada', url='http://cada.data.gouv.fr/'), ])
# -*- coding: utf-8 -*- from __future__ import unicode_literals import logging from flask import redirect, url_for from udata.app import nav from udata.core.user.permissions import sysadmin from udata.i18n import I18nBlueprint log = logging.getLogger(__name__) blueprint = I18nBlueprint('admin', __name__, url_prefix='/admin') navbar = nav.Bar('admin', []) @blueprint.route('/', endpoint='root') def redirect_to_first_admin_tab(): endpoint = navbar.items[0].endpoint return redirect(url_for(endpoint)) class AdminView(object): require = sysadmin def get_context(self): context = super(AdminView, self).get_context() current_item = None for item in navbar:
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' class OrgView(object): model = Organization object_name = 'org'
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'), nav.Item( _('Contribuer à l\'écosystème'), None, url='https://koumoul-dev.github.io/data-fair/interoperate'), ]), nav.Item(_('Conditions d\'utilisation'), 'site.terms'), ]) default_menu = nav.Bar('default_menu', [
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'), ]) theme.menu(gouvfr_menu)
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): model = User object_name = 'user'
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 gouvfr_menu = nav.Bar( 'gouvfr_menu', [ nav.Item(_('Discover OpenData'), None, url='https://doc.data.gouv.fr'), 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(gouvfr_menu) nav.Bar('gouvfr_footer', [ 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(_('Credits'), 'gouvfr.credits'),
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) nav.Bar('gouvfr_footer', [ 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'), ])