示例#1
0
def get_global_workspace_data(data, workSpaceDAO, concept_values, user):
    data_ret = {}
    data_ret['workspace'] = get_workspace_data(data, user, workSpaceDAO)

    # Workspace preferences
    data_ret['workspace']['preferences'] = get_workspace_preference_values(
        data['pk'])

    # Tabs processing
    # Check if the workspace's tabs have order
    tabs = Tab.objects.filter(workspace=workSpaceDAO).order_by('id')
    if tabs[0].position != None:
        tabs = tabs.order_by('position')
    else:
        #set default order
        for i in range(len(tabs)):
            tabs[i].position = i
            tabs[i].save()

    data = serializers.serialize('python', tabs, ensure_ascii=False)

    tabs_data = []

    for i in range(len(tabs)):
        tabs_data.append(get_tab_data(data[i], tabs[i], user))

    data_ret['workspace']['tabList'] = tabs_data

    for tab in tabs_data:
        tab_pk = tab['id']
        igadgets = IGadget.objects.filter(tab__id=tab_pk).order_by('id')
        igadget_data = serializers.serialize('python',
                                             igadgets,
                                             ensure_ascii=False)
        igadget_data = [
            get_igadget_data(d, user, workSpaceDAO) for d in igadget_data
        ]
        tab['igadgetList'] = igadget_data

    #WorkSpace variables processing
    workspace_variables_data = get_workspace_variables_data(workSpaceDAO, user)
    data_ret['workspace']['workSpaceVariableList'] = workspace_variables_data

    #Context information
    concepts = Concept.objects.all()
    concepts_data = serializers.serialize('python',
                                          concepts,
                                          ensure_ascii=False)
    data_ret['workspace']['concepts'] = [
        get_concept_data(d, concept_values) for d in concepts_data
    ]

    # Filter information
    filters = Filter.objects.all()
    filter_data = serializers.serialize('python', filters, ensure_ascii=False)
    data_ret['workspace']['filters'] = [
        get_filter_data(d) for d in filter_data
    ]

    return data_ret
示例#2
0
def _populate_variables_values_cache(workspace, user, key, forced_values=None):
    """ populates VariableValue cached values for that user """
    values_by_varid = {}
    values_by_varname = {}

    if forced_values == None:
        concept_values = get_concept_values(user)
        preferences = get_workspace_preference_values(workspace)
        forced_values = process_forced_values(workspace, user, concept_values, preferences)

    var_values = VariableValue.objects.filter(user__id=user.id, variable__igadget__tab__workspace=workspace)
    for var_value in var_values.select_related('variable__vardef'):
        varigadget = var_value.variable.igadget.id
        varname = var_value.variable.vardef.name
        # forced_values uses string keys
        svarigadget = str(varigadget)

        if not varigadget in values_by_varname:
            values_by_varname[varigadget] = {}

        entry = {}
        if svarigadget in forced_values['igadget'] and varname in forced_values['igadget'][svarigadget]:
            fv_entry = forced_values['igadget'][svarigadget][varname]

            entry['value'] = fv_entry['value']
            if var_value.variable.vardef.secure:
                entry['value'] = encrypt_value(entry['value'])

            if 'hidden' in fv_entry:
                entry['hidden'] = fv_entry['hidden']

            entry['forced'] = True
        else:
            if not var_value.variable.vardef.secure:
                entry['value'] = var_value.get_variable_value()
            else:
                entry['value'] = var_value.value

        entry['secure'] = var_value.variable.vardef.secure

        values_by_varname[varigadget][varname] = entry
        values_by_varid[var_value.variable.id] = entry

    values = {
        'by_varid': values_by_varid,
        'by_varname': values_by_varname,
    }
    cache.set(key, values)

    return values
示例#3
0
def get_global_workspace_data(data, workSpaceDAO, concept_values, user):
    data_ret = {}
    data_ret['workspace'] = get_workspace_data(data, user, workSpaceDAO)

    # Workspace preferences
    data_ret['workspace']['preferences'] = get_workspace_preference_values(data['pk'])

    # Tabs processing
    # Check if the workspace's tabs have order
    tabs = Tab.objects.filter(workspace=workSpaceDAO).order_by('id')
    if tabs[0].position != None:
        tabs = tabs.order_by('position')
    else:
        #set default order
        for i in range(len(tabs)):
            tabs[i].position = i
            tabs[i].save()

    data = serializers.serialize('python', tabs, ensure_ascii=False)

    tabs_data = []

    for i in range(len(tabs)):
        tabs_data.append(get_tab_data(data[i], tabs[i], user))

    data_ret['workspace']['tabList'] = tabs_data

    for tab in tabs_data:
        tab_pk = tab['id']
        igadgets = IGadget.objects.filter(tab__id = tab_pk).order_by('id')
        igadget_data = serializers.serialize('python', igadgets, ensure_ascii=False)
        igadget_data = [get_igadget_data(d, user, workSpaceDAO) for d in igadget_data]
        tab['igadgetList'] = igadget_data

    #WorkSpace variables processing
    workspace_variables_data = get_workspace_variables_data(workSpaceDAO, user)
    data_ret['workspace']['workSpaceVariableList'] = workspace_variables_data

    #Context information
    concepts = Concept.objects.all()
    concepts_data = serializers.serialize('python', concepts, ensure_ascii=False)
    data_ret['workspace']['concepts'] = [get_concept_data(d, concept_values) for d in concepts_data]

    # Filter information
    filters = Filter.objects.all()
    filter_data = serializers.serialize('python', filters, ensure_ascii=False)
    data_ret['workspace']['filters'] = [get_filter_data(d) for d in filter_data]

    return data_ret
示例#4
0
def get_global_workspace_data(workSpaceDAO, user):
    data_ret = {}
    data_ret['workspace'] = get_workspace_data(workSpaceDAO, user)

    # Workspace preferences
    data_ret['workspace']['preferences'] = get_workspace_preference_values(
        workSpaceDAO.pk)

    # Tabs processing
    # Check if the workspace's tabs have order
    tabs = Tab.objects.filter(workspace=workSpaceDAO).order_by('id')
    if tabs[0].position != None:
        tabs = tabs.order_by('position')
    else:
        #set default order
        for i in range(len(tabs)):
            tabs[i].position = i
            tabs[i].save()

    tabs_data = [get_tab_data(tab) for tab in tabs]
    data_ret['workspace']['tabList'] = tabs_data

    for tab in tabs_data:
        tab_pk = tab['id']
        igadgets = IGadget.objects.filter(tab__id=tab_pk).order_by('id')

        igadget_data = []
        for igadget in igadgets:
            igadget_data.append(get_igadget_data(igadget, user, workSpaceDAO))

        tab['igadgetList'] = igadget_data

    #WorkSpace variables processing
    workspace_variables_data = get_workspace_variables_data(workSpaceDAO, user)
    data_ret['workspace']['workSpaceVariableList'] = workspace_variables_data

    # Gets some concept values
    concept_values = {}
    concept_values['user'] = user
    try:
        if 'twitterauth' in settings.INSTALLED_APPS:
            concept_values['twitterauth'] = TwitterUserProfile.objects.get(
                user__id=user.id)
        else:
            concept_values['twitterauth'] = None
    except Exception:
        concept_values['twitterauth'] = None

    #Context information
    concepts = Concept.objects.all()
    data_ret['workspace']['concepts'] = [
        get_concept_data(concept, concept_values) for concept in concepts
    ]

    # Filter information
    filters = Filter.objects.all()
    data_ret['workspace']['filters'] = [get_filter_data(f) for f in filters]

    #Branding information
    data_ret["workspace"]["branding"] = get_workspace_branding_data(
        workSpaceDAO, user)

    return data_ret
示例#5
0
def _get_global_workspace_data(workSpaceDAO, user):
    data_ret = {}
    data_ret['workspace'] = get_workspace_data(workSpaceDAO, user)

    # Context information
    concept_values = get_concept_values(user)
    data_ret['workspace']['concepts'] = get_concepts_data(concept_values)

    # Workspace preferences
    preferences = get_workspace_preference_values(workSpaceDAO.pk)
    data_ret['workspace']['preferences'] = preferences

    # Process forced variable values
    forced_values = process_forced_values(workSpaceDAO, user, concept_values, preferences)
    data_ret['workspace']['empty_params'] = forced_values['empty_params']
    data_ret['workspace']['extra_prefs'] = forced_values['extra_prefs']
    if len(forced_values['empty_params']) > 0:
        return data_ret

    cache_manager = VariableValueCacheManager(workSpaceDAO, user, forced_values)

    # Tabs processing
    # Check if the workspace's tabs have order
    tabs = Tab.objects.filter(workspace=workSpaceDAO).order_by('id')
    if tabs.count() > 0:
        if tabs[0].position != None:
            tabs = tabs.order_by('position')
        else:
            #set default order
            for i in range(len(tabs)):
                tabs[i].position = i
                tabs[i].save()
    else:
        tabs = [createTab(_('Tab'), user, workSpaceDAO)]

    tabs_data = [get_tab_data(tab) for tab in tabs]

    data_ret['workspace']['tabList'] = tabs_data

    for tab in tabs_data:
        tab_pk = tab['id']
        igadgets = IGadget.objects.filter(tab__id=tab_pk).order_by('id')

        igadget_data = []
        for igadget in igadgets:
            igadget_data.append(get_igadget_data(igadget, user, workSpaceDAO, cache_manager))

        tab['igadgetList'] = igadget_data

    workspace_variables_data = get_workspace_variables_data(workSpaceDAO, user)
    data_ret['workspace']['channels'] = workspace_variables_data

    # Filter information
    filters = Filter.objects.all()
    data_ret['workspace']['filters'] = [get_filter_data(f) for f in filters]

    # Params
    last_published_workspace = PublishedWorkSpace.objects.filter(workspace=workSpaceDAO).order_by('-pk')
    if len(last_published_workspace) > 0:
        data_ret["workspace"]["params"] = simplejson.loads(last_published_workspace[0].params)

    return data_ret