summaryrefslogtreecommitdiffstats
path: root/load_export.py
blob: ab05b556c750f585c90e29efc22286f6ad5ba3c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import datetime
from google.appengine.ext import db
from google.appengine.tools import bulkloader
from google.appengine.api import datastore_types
from equations.models import *

dstr = '%m/%d/%Y'

class SymbolLoader(bulkloader.Loader):
  def __init__(self):
    bulkloader.Loader.__init__(self, 'Symbol',
                [('name', str),
                ('latex', str),
                ('unicode', str),
                ])

class SymbolExporter(bulkloader.Exporter):
  def __init__(self):
    bulkloader.Exporter.__init__(self, 'Symbol',
                [('name', str, None),
                ('latex', str, None),
                ('unicode', str, None),
                ])

class VariableLoader(bulkloader.Loader):
  def __init__(self):
    bulkloader.Loader.__init__(self, 'Variable',
                [('name', str),
                ('latex', str),
                ('unicode', str),
                ('description', str),
                ('symbol', str),
                ('references', str.split),
                ('isgeneric', boolean),
                ])

  def HandleEntity(self, entity):
    f = Symbol.all().filter("name =", entity['symbol']).get()
    entity['symbol'] = f.key()

    reflist = []
    refstr = eval(entity['references'][0])
    for ref in refstr:
        r = datastore_types.Link(ref)
        reflist.append(r)
    entity['references'] = reflist

class VariableExporter(bulkloader.Exporter):
  def __init__(self):
    bulkloader.Exporter.__init__(self, 'Variable',
                [('name', str, None),
                ('latex', str, None),
                ('unicode', str, None),
                ('description', str, None),
                ('symbol', str, None),
                ('references', str, None),
                ('isgeneric', str, None),
                ])

class EquationLoader(bulkloader.Loader):
  def __init__(self):
    bulkloader.Loader.__init__(self, 'Equation',
                [('name', str),
                ('latex', str),
                ('unicode', str),
                ('description', str),
                ('created', 
                    lambda x: datetime.datetime.strptime(x, dstr).date()),
                ('updated', 
                    lambda x: datetime.datetime.strptime(x, dstr).date()),
                ('variables', str.split),
                ('references', str.split),
                ('userurl', datastore_types.Link),
                ])

  def HandleEntity(self, entity):
    vlist = []
    vstr = eval(entity['variables'][0])
    for var in vstr:
        v = Variable.all().filter("name =", var).get()
        vlist.append(v.key())
    entity['variables'] = vlist

    reflist = []
    refstr = eval(entity['references'][0])
    for ref in refstr:
        r = datastore_types.Link(ref)
        reflist.append(r)
    entity['references'] = reflist

class EquationExporter(bulkloader.Exporter):
  def __init__(self):
    bulkloader.Exporter.__init__(self, 'Equation',
                [('name', str, None),
                ('latex', str, None),
                ('unicode', str, None),
                ('description', str, None),
                ('created', str, None),
                ('updated', str, None),
                ('variables', str, None),
                ('references', str, None),
                ('userurl', str, None),
                ])

loaders = [SymbolLoader, VariableLoader, EquationLoader]
exporters= [SymbolExporter, VariableExporter, EquationExporter]