Exemple #1
0
class ContextDataTableFormatter(yuiwidget.table.BaseDataTableFormatter):

    # evoque
    #script = z3evoque.PageViewTemplateFile("container.html#datatable")
    # !+NEED_ZC_RESOURCE_LIBRARIES(mr, sep-2010)
    # Evoque rendering needs to take into account any zc.resourcelibrary
    # declared additional libs, declared with need() below, see:
    # zc.resourcelibrary.publication.Response._addDependencies

    # zpt
    script = ViewTextTemplateFile("templates/datatable.pt")

    data_view = "/jsonlisting"
    prefix = "listing"

    def getFields(self):
        return alchemist.container.getFields(self.context)

    def getFieldColumns(self):
        # get config for data table
        column_model = []
        field_model = []
        for field in self.getFields():
            key = field.__name__
            title = translate(_(field.title), context=self.request)
            coldef = {
                "key": key,
                "label": title,
                "formatter": self.context.__name__
            }
            if column_model == []:
                column_model.append("""{label:"%(label)s", key:"sort_%(key)s",
                    formatter:"%(formatter)sCustom", sortable:true,
                    resizeable:true ,
                    children: [{ key:"%(key)s", sortable:false}]}""" % coldef)
            else:
                column_model.append("""{label:"%(label)s", key:"sort_%(key)s",
                    sortable:true, resizeable:true,
                    children: [{key:"%(key)s", sortable:false}]}""" % coldef)
            field_model.append('{key:"%s"}' % (key))
        return ",".join(column_model), ",".join(field_model)

    def getDataTableConfig(self):
        config = {}
        config["columns"], config["fields"] = self.getFieldColumns()
        config["data_url"] = self.getDataSourceURL()
        config["table_id"] = self.prefix
        config["link_url"] = url.absoluteURL(self.context, self.request)
        config["context_name"] = self.context.__name__
        config["rows_per_page"] = capi.default_number_of_listing_items
        return config

    def __call__(self):
        need("yui-paginator")
        return '<div id="%s">\n<table %s>\n%s</table>\n%s</div>' % (
            self.prefix, self._getCSSClass("table"), self.renderContents(),
            self.script(**self.getDataTableConfig()))
Exemple #2
0
class ContextDataTableFormatter(BaseDataTableFormatter):
    script = ViewTextTemplateFile("templates/datatable.pt")

    data_view = "/jsonlisting"
    prefix = "listing"

    def getFields(self):
        return container.getFields(self.context)

    def getFieldColumns(self):
        # get config for data table
        column_model = []
        field_model = []

        for field in self.getFields():
            key = field.__name__
            title = translate(_(field.title), context=self.request)
            coldef = {
                'key': key,
                'label': title,
                'formatter': self.context.__name__
            }
            if column_model == []:
                column_model.append("""{label:"%(label)s", key:"sort_%(key)s", 
                    formatter:"%(formatter)sCustom", sortable:true, 
                    resizeable:true ,
                    children: [ 
	                { key:"%(key)s", sortable:false}]}""" % coldef)
            else:
                column_model.append("""{label:"%(label)s", key:"sort_%(key)s", 
                    sortable:true, resizeable:true,
                    children: [ 
	                {key:"%(key)s", sortable:false}]
                    }""" % coldef)
            field_model.append('{key:"%s"}' % (key))
        return ','.join(column_model), ','.join(field_model)

    def getDataTableConfig(self):
        config = {}
        config['columns'], config['fields'] = self.getFieldColumns()
        config['data_url'] = self.getDataSourceURL()
        config['table_id'] = self.prefix
        config['link_url'] = ui_url.absoluteURL(self.context, self.request)
        config['context_name'] = self.context.__name__
        return config

    def __call__(self):
        need('yui-datatable')
        need('yui-paginator')
        need('yui-dragdrop')

        return '<div id="%s">\n<table %s>\n%s</table>\n%s</div>' % (
            self.prefix, self._getCSSClass('table'), self.renderContents(),
            self.script(**self.getDataTableConfig()))
Exemple #3
0
class WorkspaceDataTableFormatter(table.ContextDataTableFormatter):
    data_view = "/jsonlisting"
    script = ViewTextTemplateFile("templates/datatable-workspace.pt")

    def getFieldColumns(self):
        column_model = []
        field_model = []

        for field in workspace_fields:
            coldef = {
                "key": field.name,
                "label": translate(_(field.title), context=self.request),
                "formatter": self.context.__name__
            }
            if column_model == []:
                column_model.append("""{key:"%(key)s", label:"%(label)s", 
                    formatter:"%(formatter)sCustom", sortable:false, minWidth:200,
                    resizeable:true}""" % coldef)
            else:
                column_model.append("""{key:"%(key)s", label:"%(label)s", 
                    sortable:false, resizeable:true, minWidth:150}""" % coldef)
            '''if column_model == []:
                column_model.append(
                    """{label:"%(label)s", key:"sort_%(key)s", 
                    formatter:"%(formatter)sCustom", sortable:true, 
                    resizeable:true ,
                    children: [ 
	                { key:"%(key)s", sortable:false}]}""" % coldef
                    )
            else:
                column_model.append(
                    """{label:"%(label)s", key:"sort_%(key)s", 
                    sortable:true, resizeable:true,
                    children: [ 
	                {key:"%(key)s", sortable:false}]
                    }""" % coldef
                    )'''
            field_model.append('{key:"%s"}' % (field.name))
        return ",".join(column_model), ",".join(field_model)
class WorkspaceDataTableFormatter(table.ContextDataTableFormatter):
    data_view = "/jsonlisting"
    script = ViewTextTemplateFile("templates/datatable-workspace.pt")

    def get_item_types(self):
        workspace_config = component.getUtility(IWorkspaceTabsUtility)
        roles = get_workspace_roles() + OBJECT_ROLES
        domains = []
        for role in roles:
            dom = workspace_config.get_role_domains(role,
                                                    self.context.__name__)
            if dom:
                for key in dom:
                    if key not in domains:
                        domains.append(key)
        result = dict([("", "-")])
        for domain in domains:
            value = workspace_config.get_type(domain)
            if value:
                descriptor = queryModelDescriptor(domain)
                name = descriptor.display_name if descriptor else value
                result[value] = translate(name, context=self.request)
        return result

    def get_status(self, item_type):
        workspace_config = component.getUtility(IWorkspaceTabsUtility)
        roles = get_workspace_roles() + OBJECT_ROLES
        domain_class = workspace_config.get_domain(item_type)
        results = set()
        for role in roles:
            status = workspace_config.get_status(role, domain_class,
                                                 self.context.__name__)
            if status:
                for s in status:
                    results.add(s)
        translated = dict()
        for result in results:
            workflow = IWorkflow(domain_class())
            status_title = translate(str(workflow.get_state(result).title),
                                     domain="bungeni",
                                     context=self.request)
            translated[result] = status_title
        return translated

    def getDataTableConfig(self):
        config = super(WorkspaceDataTableFormatter, self).getDataTableConfig()
        item_types = self.get_item_types()
        config["item_types"] = simplejson.dumps(item_types)
        all_item_status = dict()
        status = dict([("", "-")])
        for item_type in item_types:
            for k, v in self.get_status(item_type).iteritems():
                item_status_value = "%s+%s" % (item_type, k)
                status[item_status_value] = v
                all_item_status[k] = v
        status.update(all_item_status)
        config["status"] = simplejson.dumps(status)
        return config

    def getFieldColumns(self):
        column_model = []
        field_model = []
        for field in workspace_fields:
            coldef = {
                "key": field.name,
                "label": translate(_(field.title), context=self.request),
                "formatter": self.context.__name__
            }
            if column_model == []:
                column_model.append("""{label:"%(label)s", key:"sort_%(key)s",
                    formatter:"%(formatter)sCustom", sortable:true,
                    resizeable:true ,
                    children: [{ key:"%(key)s", sortable:false}]}""" % coldef)
            else:
                column_model.append("""{label:"%(label)s", key:"sort_%(key)s",
                    sortable:true, resizeable:true,
                    children: [{key:"%(key)s", sortable:false}]}""" % coldef)
            field_model.append('{key:"%s"}' % (field.name))
        return ",".join(column_model), ",".join(field_model)