"""User Interface for the core tables """ from .auth import USER from gluon import current from plugin_dbui import (FieldsModifier, FormModifier, GridModifier, StoreModifier, map_tabpanel) TPL = ['{PublicationsTitle}
', '{PublicationsFirst_author}' ' et al' ', {CollaborationsCollaboration}', ', {PublicationsConference_title}', '
{PublicationsConference_town}
', ', {CountriesCountry}', ', {PublicationsConference_dates}' ', {PublicationsPreprint}' '
', ', {PublicationsPreprint}', ', {PublishersAbbreviation}', ' {PublicationsVolume}', ' ({PublicationsYear}) ', ' {PublicationsPages}', '', '', ', {ReportsType}', ', {PublicationsReport_numbers}', ', {PublicationsPreprint}', '', ', {PublicationsUniversities}', ', {PublicationsDefense}'] class CoreUI(object): @staticmethod def configure(db, T): """Configure the user interface for the history table and its foreign tables, Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ CoreUI.authors_roles(db, T) CoreUI.categories(db, T) CoreUI.countries(db, T) CoreUI.collaborations(db, T) CoreUI.orgnisation(db, T) CoreUI.projects(db, T) CoreUI.publications(db, T) CoreUI.publishers(db, T) CoreUI.reports(db, T) CoreUI.status(db, T) CoreUI.teams(db, T) @staticmethod def authors_roles(db, T): """UI for the authors_roles table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Grid # mdf = GridModifier("authors_roles") mdf.configure_column("role", width=75) # .................................................................... # # Store # StoreModifier("authors_roles").orderby(db.authors_roles.role) @staticmethod def categories(db, T): """UI for the categories table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ tr_contains = T("contains") # .................................................................... # # Grid # mdf = GridModifier("categories") mdf.configure_column("code", width=10) mdf.configure_column("usual", width=20) mdf.append_filter(("code", "contains", tr_contains)) mdf.append_filter(("usual", "contains", tr_contains)) mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("categories").orderby(db.categories.code) @staticmethod def collaborations(db, T): """UI for the collaborations table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ tr_contains = T("contains") # .................................................................... # # Fields # mdf = FieldsModifier("collaborations") mdf.configure_field("collaboration", xtype="textarea") mdf.configure_field("synonyms", minimumRows=5) # .................................................................... # # Grid # mdf = GridModifier("collaborations") mdf.append_filter(("collaboration", "contains", tr_contains), fieldLabel=T("Collaboration"), xtype="textfield") mdf.append_filter(("synonyms", "contains", tr_contains), fieldLabel=T("Synonyms"), xtype="textfield") mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # mdf = StoreModifier("collaborations") mdf.orderby(db.collaborations.collaboration) @staticmethod def countries(db, T): """UI for the countries table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ tr_contains = T("contains") # .................................................................... # # Fields # mdf = FieldsModifier("countries") mdf.configure_field("synonyms", minimumRows=5) # .................................................................... # # Grid # mdf = GridModifier("countries") mdf.configure_column("country", width=50) mdf.append_filter(("country", "contains", tr_contains)) mdf.append_filter(("synonyms", "contains", tr_contains), fieldLabel=T("Synonyms"), xtype="textfield") mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("countries").orderby(db.countries.country) @staticmethod def orgnisation(db, T): """UI for the organisation table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Grid # mdf = GridModifier("organisation") mdf.configure_column("id_teams", width=30) # .................................................................... # # Store # mdf = StoreModifier("organisation") mdf.orderby(db.teams.team, db.projects.project) @staticmethod def projects(db, T): """UI for the projects table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Store # StoreModifier("projects").orderby(db.projects.project) @staticmethod def publications(db, T): """UI for the publications table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ year = current.request.now.year # .................................................................... # # Fields # mdf = FieldsModifier("publications") mdf.configure_field("conference_start", format="Y-m-d") mdf.configure_field("origin", xtype="textarea") mdf.configure_field("pages", emptyText=T("pages")) mdf.configure_field("publication_date", format="Y-m-d") mdf.configure_field("volume", emptyText=T("volume")) mdf.configure_field("year", emptyText=T("year"), maxValue=year) mdf.merge_fields("volume", "pages", fieldLabel=T("Volume / pages")) session = current.globalenv["session"] if session.role == USER: mdf.configure_field("id_status", hidden=True) # .................................................................... # # Form # publications = db.publications mdf = FormModifier("publications") mdf.link_comboboxes(master=publications.id_projects, slave=publications.id_teams, masterHasSlaveData="organisation", slaveExtJS={"hidden": True}) # organised fields within tab mdf.merge_fields("title", "first_author", "authors", "id_collaborations", "id_publishers", "volume", "year", "submitted", "preprint", "publication_url", title=T("Publication")) mdf.merge_fields("conference_title", "conference_url", "conference_dates", "conference_town", "id_countries", "conference_speaker", title=T("Conference")) mdf.merge_fields("report_numbers", "id_reports", title=T("Report")) mdf.merge_fields("directors", "universities", "defense", title=T("Thesis")) mdf.merge_fields("book_isbn", "book_issn", "book_chapters", title=T("Book")) mdf.merge_fields("authors_institute", "id_authors_roles", "id_teams", "id_projects", "id_categories", "id_status", "origin", title=T("Meta")) mdf.set_mapper(map_tabpanel) mdf.configure(buttonAlign="right", width=450) # .................................................................... # # Grid # mdf = GridModifier("publications") mdf.configure(plugins=["pGridPaging", "pMathJax", "pGridRowEditorUnlockStatusOk", {"ptype": "pGridRowEditorConfirmDelete", "resetFields": ["PublicationsId_status", "PublicationsOrigin"]}]) mdf.merge_columns("title", "first_author", "id_collaborations", "id_publishers", "volume", "pages", "conference_title", "conference_url", "conference_dates", "conference_town", "id_countries", "conference_speaker", "report_numbers", "id_reports", "book_isbn", "book_issn", "book_chapters", autohide=True, header=T("Publication"), position=0, tpl=TPL, width=700) mdf.hide_columns("id_authors_roles", "id_teams", "id_projects", "authors", "authors_institute", "defense", "directors", "origin", "preprint", "publication_url", "universities",) tr_contains = T("contains") tr_equal = T("is equal to") mdf.append_filter(("year", "==", tr_equal), allowBlank=True) mdf.append_filter(("id_teams", "==", tr_equal)) mdf.append_filter(("id_projects", "==", tr_equal)) mdf.append_filter(("id_categories", "==", tr_equal)) mdf.append_filter(("authors_institute", "contains", tr_contains), allowBlank=True, fieldLabel=T("Authors"), xtype="textfield") mdf.append_filter(("id_authors_roles", "==", tr_equal)) mdf.append_filter(("title", "contains", tr_contains), allowBlank=True) mdf.append_filter(("id_publishers", "==", tr_equal)) mdf.append_filter(("volume", "contains", tr_contains), allowBlank=True) mdf.append_filter(("report_numbers", "contains", tr_contains), allowBlank=True) mdf.append_filter(("id_status", "==", tr_equal)) # NOTE the id is hidden in the form by default. Activate it mdf.append_filter(("id", "==", tr_equal), hidden=False, hideLabel=False, readOnly=False) mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("publications").orderby(~publications.id) @staticmethod def publishers(db, T): """UI for the publishers table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Fields # mdf = FieldsModifier("publishers") mdf.configure_field("synonyms", minimumRows=5) # .................................................................... # # Grid # tr_contains = T("contains") mdf = GridModifier("publishers") mdf.append_filter(("publisher", "contains", tr_contains)) mdf.append_filter(("abbreviation", "contains", tr_contains)) mdf.append_filter(("synonyms", "contains", tr_contains), fieldLabel=T("Synonyms"), xtype="textfield") mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("publishers").orderby(db.publishers.abbreviation) @staticmethod def reports(db, T): """UI for the reports table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Store # StoreModifier("reports").orderby(db.reports.type) @staticmethod def status(db, T): """UI for the status table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Grid # mdf = GridModifier("status") mdf.configure_column("code", width=10) mdf.append_filter(("code", "contains", T("contains"))) mdf.configure_filters(plugins=["pFormToolTip"], width=300) mdf.configure_gridWithFilter(selectorTitle=T("Filter")) # .................................................................... # # Store # StoreModifier("status").orderby(db.status.code) @staticmethod def teams(db, T): """UI for the teams table Args: db (pyDAL.DAL): database connection T (gluon.languages.translator): language translator """ # .................................................................... # # Store # StoreModifier("teams").orderby(db.teams.team)