mirror of
https://github.com/gristlabs/grist-core.git
synced 2026-03-02 04:09:24 +00:00
(core) move data engine code to core
Summary: this moves sandbox/grist to core, and adds a requirements.txt file for reconstructing the content of sandbox/thirdparty. Test Plan: existing tests pass. Tested core functionality manually. Tested docker build manually. Reviewers: dsagal Reviewed By: dsagal Differential Revision: https://phab.getgrist.com/D2563
This commit is contained in:
68
sandbox/grist/usercode.py
Normal file
68
sandbox/grist/usercode.py
Normal file
@@ -0,0 +1,68 @@
|
||||
"""
|
||||
usercode.py isn't a real module, but an example of a module produced by gencode.py from the
|
||||
user-defined document schema.
|
||||
|
||||
It is the same code that's produced from the test schema in test_gencode.py. In fact, it is used
|
||||
as part of that test.
|
||||
|
||||
User-defined Tables (i.e. classes that derive from grist.Table) automatically get some additional
|
||||
members:
|
||||
|
||||
Record - a class derived from grist.Record, with a property for each table column.
|
||||
RecordSet - a class derived from grist.Record, with a property for each table column.
|
||||
RecordSet.Record - a reference to the Record class above
|
||||
|
||||
======================================================================
|
||||
import grist
|
||||
from functions import * # global uppercase functions
|
||||
import datetime, math, re # modules commonly needed in formulas
|
||||
|
||||
|
||||
@grist.UserTable
|
||||
class Students:
|
||||
firstName = grist.Text()
|
||||
lastName = grist.Text()
|
||||
school = grist.Reference('Schools')
|
||||
|
||||
def fullName(rec, table):
|
||||
return rec.firstName + ' ' + rec.lastName
|
||||
|
||||
def fullNameLen(rec, table):
|
||||
return len(rec.fullName)
|
||||
|
||||
def schoolShort(rec, table):
|
||||
return rec.school.name.split(' ')[0]
|
||||
|
||||
def schoolRegion(rec, table):
|
||||
addr = rec.school.address
|
||||
return addr.state if addr.country == 'US' else addr.region
|
||||
|
||||
@grist.formulaType(grist.Reference('Schools'))
|
||||
def school2(rec, table):
|
||||
return Schools.lookupFirst(name=rec.school.name)
|
||||
|
||||
|
||||
@grist.UserTable
|
||||
class Schools:
|
||||
name = grist.Text()
|
||||
address = grist.Reference('Address')
|
||||
|
||||
|
||||
@grist.UserTable
|
||||
class Address:
|
||||
city = grist.Text()
|
||||
state = grist.Text()
|
||||
|
||||
def _default_country(rec, table):
|
||||
return 'US'
|
||||
country = grist.Text()
|
||||
|
||||
def region(rec, table):
|
||||
return {'US': 'North America', 'UK': 'Europe'}.get(rec.country, 'N/A')
|
||||
|
||||
def badSyntax(rec, table):
|
||||
# for a in b
|
||||
# 10
|
||||
raise SyntaxError('invalid syntax on line 1 col 11')
|
||||
======================================================================
|
||||
"""
|
||||
Reference in New Issue
Block a user