コード例 #1
0
    def get(self, request, **kwargs):

        # add g3w-suite version
        res = {
            'data': {
                'version': get_version(),
                'modules': settings.G3WADMIN_LOCAL_MORE_APPS,
                'environment': {
                    'python_version': get_version(platform.sys.version_info),
                    'django_version': dj_get_version(),
                    'qgis-server-version': Qgis.QGIS_VERSION
                }
            }
        }

        self.results.results.update(res)

        return Response(self.results.results)
コード例 #2
0
ファイル: test_api.py プロジェクト: leolami/g3w-admin
    def testG3WSUITEInfoAPI(self):
        """Test api return general information about suite deploy"""

        url = reverse('deploy-info-api')
        res = self.client.get(url)
        self.assertTrue(res.status_code, 200)
        jres = json.loads(res.content)

        self.assertEqual(jres['data']['version'], get_version())
        self.assertEqual(jres['data']['modules'],
                         settings.G3WADMIN_LOCAL_MORE_APPS)
コード例 #3
0
def global_settings(request):
    g3wadmin_context = {}
    g3wadmin_context['SETTINGS'] = settings

    # add group base
    g3wadmin_context['G3W_EDITOR1'] = G3W_EDITOR1
    g3wadmin_context['G3W_EDITOR2'] = G3W_EDITOR2
    g3wadmin_context['G3W_VIEWER1'] = G3W_VIEWER1
    g3wadmin_context['G3W_VIEWER2'] = G3W_VIEWER2

    # add anonymous user istance
    g3wadmin_context['anonymous_user'] = get_anonymous_user()

    skin = get_adminlte_skin_by_user(request.user)
    g3wadmin_context['adminlte_skin'] = 'skin-{}'.format(
        skin if skin else settings.ADMINLTE_SKIN_DEFAULT)

    g3wadmin_context[
        'adminlte_layout_option'] = settings.ADMINLTE_LAYOUT_OPTION

    g3wadmin_context['powerd_by'] = settings.G3WSUITE_POWERD_BY

    # add date current time
    g3wadmin_context['today'] = datetime.today()

    # add cookies:
    g3wadmin_context['sidebar_status'] = 'sidebar-open'
    if 'g3wadmin_sidebar_status' in request.COOKIES:
        if request.COOKIES['g3wadmin_sidebar_status'] == 'collapsed':
            g3wadmin_context['sidebar_status'] = 'sidebar-collapse'

    # add specific css modules and submodules
    css_modules = load_css_modules.send(request)
    g3wadmin_context['css_modules'] = [css[1] for css in css_modules]
    js_modules = load_js_modules.send(request)
    g3wadmin_context['js_modules'] = [js[1] for js in js_modules]

    # add specific items to main navbar
    navbar_items = load_navbar_items.send(request)
    g3wadmin_context['navbar_items'] = list()
    for item in navbar_items:
        if isinstance(item[1], list):
            g3wadmin_context['navbar_items'] += item[1]
        else:
            g3wadmin_context['navbar_items'].append(item[1])

    g3wadmin_context['VERSION'] = get_version()

    g3wadmin_context['admin_page_title'] = getattr(settings,
                                                   'G3WSUITE_CUSTOM_TITLE',
                                                   settings.SITE_TITLE)

    return g3wadmin_context
コード例 #4
0
def global_settings(request):
    g3wadmin_context = {}
    g3wadmin_context['SETTINGS'] = settings

    # add group base
    g3wadmin_context['G3W_EDITOR1'] = G3W_EDITOR1
    g3wadmin_context['G3W_EDITOR2'] = G3W_EDITOR2
    g3wadmin_context['G3W_VIEWER1'] = G3W_VIEWER1
    g3wadmin_context['G3W_VIEWER2'] = G3W_VIEWER2

    groupsUser = request.user.groups.values_list('name', flat=True)
    if request.user.is_superuser and request.user.is_staff:
        g3wadmin_context['adminlte_skin'] = 'skin-yellow'
    elif request.user.is_superuser:
        g3wadmin_context['adminlte_skin'] = 'skin-red'
    elif G3W_EDITOR1 in groupsUser or G3W_EDITOR2 in groupsUser:
        g3wadmin_context['adminlte_skin'] = 'skin-purple'
    elif G3W_VIEWER1 in groupsUser or G3W_VIEWER2 in groupsUser:
        g3wadmin_context['adminlte_skin'] = 'skin-green'
    else:
        g3wadmin_context['adminlte_skin'] = settings.ADMINLTE_SKIN_DEFAULT

    g3wadmin_context['adminlte_layout_option'] = settings.ADMINLTE_LAYOUT_OPTION

    # add date current time
    g3wadmin_context['today'] = datetime.today()

    # add cookies:
    g3wadmin_context['sidebar_status'] = 'sidebar-open'
    if 'g3wadmin_sidebar_status' in request.COOKIES:
        if request.COOKIES['g3wadmin_sidebar_status'] == 'collapsed':
            g3wadmin_context['sidebar_status'] = 'sidebar-collapse'

    # add specific css modules and submodules
    css_modules = load_css_modules.send(request)
    g3wadmin_context['css_modules'] = [css[1] for css in css_modules]
    js_modules = load_js_modules.send(request)
    g3wadmin_context['js_modules'] = [js[1] for js in js_modules]

    # add specific items to main navbar
    navbar_items = load_navbar_items.send(request)
    g3wadmin_context['navbar_items'] = list()
    for item in navbar_items:
        if isinstance(item[1], list):
            g3wadmin_context['navbar_items'] += item[1]
        else:
            g3wadmin_context['navbar_items'].append(item[1])

    g3wadmin_context['VERSION'] = get_version()

    return g3wadmin_context
コード例 #5
0
    def get_context_data(self, **kwargs):
        contextData = super(ClientView, self).get_context_data(**kwargs)

        # group serializer
        try:
            group = self.project.group
        except:
            group = get_object_or_404(Group, slug=kwargs['group_slug'])
        groupSerializer = GroupSerializer(group,
                                          projectId=str(self.project.pk),
                                          projectType=kwargs['project_type'],
                                          request=self.request)

        groupData = deepcopy(groupSerializer.data)

        # choose client by querystring paramenters
        contextData['client_default'] = self.get_client_name()

        # login_url
        login_url = None
        try:
            login_url = resolve_url(settings.LOGIN_URL) + '?next={}'.format(
                reverse('group-project-map',
                        kwargs={
                            'group_slug': kwargs['group_slug'],
                            'project_type': kwargs['project_type'],
                            'project_id': self.project.pk
                        }))
        except:
            pass

        # logout_url
        logout_url = None
        try:
            logout_url = reverse('logout') + '?next={}'.format(
                reverse('group-project-map',
                        kwargs={
                            'group_slug': kwargs['group_slug'],
                            'project_type': kwargs['project_type'],
                            'project_id': self.project.pk
                        }))
        except:
            pass

        # add user login data
        u = self.request.user

        # admin_url
        change_grant_users = get_users_for_object(self.project,
                                                  "change_project",
                                                  with_group_users=True)
        if u in change_grant_users or u.is_superuser:
            admin_url = reverse('home')
        else:
            admin_url = None

        user_data = {'i18n': get_language(), 'login_url': login_url}
        if not u.is_anonymous:
            user_data.update({
                'id': u.pk,
                'username': u.username,
                'first_name': u.first_name,
                'last_name': u.last_name,
                'is_superuser': u.is_superuser,
                'is_staff': u.is_staff,
                'groups': [g.name for g in u.groups.all()],
                'logout_url': logout_url
            })

        if admin_url:
            user_data.update({'admin_url': admin_url})

        user_data = JSONRenderer().render(user_data)

        serializedGroup = JSONRenderer().render(groupData)
        if six.PY3:
            serializedGroup = str(serializedGroup, 'utf-8')

        baseurl = "/{}".format(
            settings.SITE_PREFIX_URL if settings.SITE_PREFIX_URL else '')
        frontendurl = ',"frontendurl":"{}"'.format(
            baseurl) if settings.FRONTEND else ''

        generaldata = GeneralSuiteData.objects.get()

        # add baseUrl property
        contextData['group_config'] = 'var initConfig ={{ "i18n": {}, "staticurl":"{}", "client":"{}", ' \
                                      '"mediaurl":"{}", "user":{}, "group":{}, "baseurl":"{}", "vectorurl":"{}", ' \
                                      '"proxyurl": "{}", "rasterurl":"{}", "interfaceowsurl":"{}", "main_map_title":{}, ' \
                                      '"g3wsuite_logo_img": "{}", "credits": "{}", ' \
                                      '"version": "{}" {} }}'.\
            format(json.dumps(settings.LANGUAGES),
                   settings.STATIC_URL,
                   "{}/".format(settings.CLIENT_DEFAULT),
                   settings.MEDIA_URL,
                   user_data.decode('UTF-8'),
                   serializedGroup, baseurl,
                   settings.VECTOR_URL,
                   reverse('interface-proxy'),
                   settings.RASTER_URL,
                   reverse('interface-ows'),
                   '"' + generaldata.main_map_title + '"' if generaldata.main_map_title else 'null',
                   settings.CLIENT_G3WSUITE_LOGO,
                   reverse('client-credits'),
                   get_version(),
                   frontendurl)

        # project by type(app)
        if not '{}-{}'.format(kwargs['project_type'], self.project.pk) in list(
                groupSerializer.projects.keys()):
            raise Http404('No project type and/or project id present in group')

        # page title

        contextData['page_title'] = '{} | {}'.format(
            getattr(settings, 'G3WSUITE_CUSTOM_TITLE', 'g3w - client'),
            self.project.title_ur
            if self.project.title_ur else self.project.title)

        # choosen skin by user main role
        contextData['skin_class'] = get_adminlte_skin_by_user(
            self.request.user)
        return contextData