summaryrefslogtreecommitdiffstats
path: root/load_export.py
blob: dbe028a0da947fc0001b8ffb55a816c0e84df219 (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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import datetime
from google.appengine.ext import db
from google.appengine.tools import bulkloader
from google.appengine.api import datastore_types

import sys
sys.path.append("/home/bnewbold/code/equator")
from appengine_django import InstallAppengineHelperForDjango
InstallAppengineHelperForDjango()
from equations.models import *

dstr = '%Y-%m-%d'

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', bool),
                ])

  def HandleEntity(self, entity):
    print entity['symbol']
    s = 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
    return entity

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
    return entity

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),
                ])

  #def HandleEntity(self, entity):
  #  vlist = []
  #  vs = entity['variables']
  #  for v in vs:
  #      vlist.append(v.key().get())
  #  entity['variables'] = vlist
  #  print vlist
  #  return entity

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