from datetime import date from typing import TYPE_CHECKING from django.utils.translation import gettext as _ from django.utils.translation import override from baserow.contrib.database.rows.handler import RowHandler from baserow.core.handler import CoreHandler from baserow.core.registries import Plugin from .table.handler import TableHandler LOREM = ( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce " "dignissim, urna eget rutrum sollicitudin, sapien diam interdum nisi, " "quis malesuada nibh eros a est." ) if TYPE_CHECKING: from django.contrib.auth.models import AbstractUser from baserow.core.models import Workspace class DatabasePlugin(Plugin): type = "database" def create_initial_workspace( self, user: "AbstractUser", workspace: "Workspace" = None, ): """ Called when an initial workspace is created. This adds an example database. """ core_handler = CoreHandler() table_handler = TableHandler() row_handler = RowHandler() with override(user.profile.language): database = core_handler.create_application( user, workspace, type_name=self.type, name=_("%(first_name)s's company") % {"first_name": user.first_name}, ) # Creating the example customers table. table = table_handler.create_table_and_fields( user, database, name=_("Customers"), fields=[ (_("Name"), "text", {}), (_("Last name"), "text", {}), (_("Notes"), "long_text", {"field_options": {"width": 400}}), (_("Active"), "boolean", {"field_options": {"width": 100}}), ], ) data = [ ["Ada", "Lovelace", "", True], ["Alan", "Turing", LOREM, False], ["Grace", "Hopper", "", True], ["John", "Von Neumann", "", True], ["Blaise", "Pascal", "", True], ] row_handler.import_rows(user, table, data=data, send_realtime_update=False) # Creating the example projects table. table = table_handler.create_table_and_fields( user, database, name=_("Projects"), fields=[ (_("Name"), "text", {}), (_("Started"), "date", {}), (_("Active"), "boolean", {"field_options": {"width": 100}}), ], ) data = [ [_("Calculator"), str(date(1642, 1, 1)), False], [_("Turing machine"), str(date(1936, 6, 1)), True], [_("Computer architecture"), str(date(1945, 1, 1)), False], [_("Cellular Automata"), str(date(1952, 6, 1)), False], ] row_handler.import_rows(user, table, data=data, send_realtime_update=False)