diff options
author | bryan newbold <bnewbold@snark.mit.edu> | 2009-06-14 23:28:58 -0400 |
---|---|---|
committer | bryan newbold <bnewbold@snark.mit.edu> | 2009-06-14 23:28:58 -0400 |
commit | c2c48ce70e942aaea78d6a2100411803db7ff8bf (patch) | |
tree | 8a8a1dc43477e4555ddc83b29e94b8cbfef53964 /equations | |
parent | ae078728c8bc1c7d4412c4cb19b6802e9b7e8f74 (diff) | |
download | equator-c2c48ce70e942aaea78d6a2100411803db7ff8bf.tar.gz equator-c2c48ce70e942aaea78d6a2100411803db7ff8bf.zip |
more progress on appengine conversion; BROKEN
Diffstat (limited to 'equations')
-rw-r--r-- | equations/models.py | 115 | ||||
-rw-r--r-- | equations/views.py | 57 |
2 files changed, 93 insertions, 79 deletions
diff --git a/equations/models.py b/equations/models.py index ca68ba7..9b8a38d 100644 --- a/equations/models.py +++ b/equations/models.py @@ -1,111 +1,78 @@ -from django.db import models +#from django.db import models from django.utils.translation import gettext_lazy as _ import django.contrib.auth.models as auth from django.conf import settings from django.dispatch import dispatcher -from django.db.models import signals -from signals import update_render +#from django.db.models import signals +#from signals import update_render +from appengine_django.models import BaseModel +from google.appengine.ext import db -class Symbol(models.Model): - name = models.CharField(_("Name")) - latex = models.TextField(_("Raw LaTeX"), unique=True) - unicode = models.TextField(_("Unicode Representation"), blank=True) - renderdir = "symbolrenders/" - render = models.ImageField(_("Rendered Image"), - upload_to=renderdir, editable=False) + +class Symbol(BaseModel): + name = db.StringProperty(_("Name")) + latex = db.TextProperty(_("Raw LaTeX")) + unicode = db.TextProperty(_("Unicode Representation")) + #renderdir = "symbolrenders/" + #render = models.ImageField(_("Rendered Image"), + #upload_to=renderdir, editable=False) class Meta: get_latest_by = 'name' class Admin: ordering = ['name'] - + + def _get_pk_val(self): + return self.key().id() def __str__(self): return self.name def get_absolute_url(self): return "/symbol/%s/" % self.id def get_admin_url(self): return "/admin/symbols/%s/" % self.id - #def save(self): - # super(Symbol, self) - # self.update_generic_variable() - def save(self): - super(Symbol, self).save() - self.render = self.renderdir + "%s.png" % self.id - super(Symbol, self).save() - -#signals.pre_save.connect(update_render, sender=Symbol) -#dispatcher.connect(update_render, signal=signals.pre_save, sender=Symbol) -def update_generic_variable(sender, instance, signal, *args, **kwargs): - """Checks if there is a generic variable associated with this - symbol; create one if there isn't""" - for v in Variable.objects.filter(isgeneric=True): - if v.latex == instance.latex: - return - genericv = Variable(name="Generic %s" % instance.name, - latex=instance.latex, - unicode=instance.unicode, - symbol=instance, - isgeneric=True) - genericv.save() - -#signals.pre_save.connect(update_render, sender=Symbol) -#signals.post_save.connect(update_generic_variable, sender=Symbol) -#dispatcher.connect(update_render, signal=signals.pre_save, sender=Symbol) -#dispatcher.connect(update_generic_variable, signal=signals.post_save, -# sender=Symbol) - -class Variable(models.Model): - name = models.CharField(_("Name")) - latex = models.TextField(_("Raw LaTeX"), unique=True) - unicode = models.TextField(_("Unicode Representation"), blank=True) - description = models.TextField(_("Description"), blank=True) - renderdir = "variablerenders/" - render = models.ImageField(_("Rendered Image"), - upload_to=renderdir, editable=False) - reference = models.URLField(_("Reference URL"), blank=True) - symbol = models.ForeignKey(Symbol, verbose_name=_("Symbol")) - isgeneric = models.BooleanField(_("Is Generic?"), default=False) +class Variable(BaseModel): + name = db.StringProperty(_("Name")) + latex = db.TextProperty(_("Raw LaTeX")) + unicode = db.TextProperty(_("Unicode Representation")) + description = db.TextProperty(_("Description")) + reference = db.TextProperty(_("Reference URL")) + symbol = db.ReferenceProperty(Symbol) + isgeneric = db.BooleanProperty(_("Is Generic?"), default=False) class Meta: get_latest_by = 'name' class Admin: ordering = ['name'] + def _get_pk_val(self): + return self.key().id() def __str__(self): return self.name def get_absolute_url(self): return "/variable/%s/" % self.id def get_admin_url(self): return "/admin/variables/%s/" % self.id - def save(self): - super(Variable, self).save() - self.render = self.renderdir + "%s.png" % self.id - super(Variable, self).save() -#signals.pre_save.connect(update_render, sender=Variable) -#dispatcher.connect(update_render, signal=signals.pre_save, sender=Variable) +class Equation(BaseModel): + name = db.StringProperty(_("Name")) + latex = db.TextProperty(_("Raw LaTeX")) + unicode = db.TextProperty(_("Unicode Representation")) + description = db.TextProperty(_("Description")) + created = db.DateTimeProperty(_("Created"), auto_now_add=True) + updated = db.DateTimeProperty(_("Last Updated"), auto_now_add=True) + #owner = models.ForeignKey(auth.User, verbose_name=_("Owner")) -class Equation(models.Model): - name = models.CharField(_("Name")) - latex = models.TextField(_("Raw LaTeX"), unique=True) - unicode = models.TextField(_("Unicode Representation"), blank=True) - description = models.TextField(_("Description"), blank=True) - created = models.DateField(_("Created"), auto_now_add=True) - updated = models.DateField(_("Last Updated"), auto_now_add=True) - owner = models.ForeignKey(auth.User, verbose_name=_("Owner")) - variables = models.ManyToManyField(Variable, verbose_name="Variables", - editable=True) - renderdir = "equationrenders/" - render = models.ImageField(_("Rendered Image"), - upload_to=renderdir, editable=False) - reference = models.URLField(_("Reference URL"), blank=True) + variables = db.ListProperty(db.Key, verbose_name="Variables") + reference = db.TextProperty(_("Reference URL")) class Meta: get_latest_by = 'created' class Admin: ordering = ['created'] + def _get_pk_val(self): + return self.key().id() def __str__(self): return self.name def get_absolute_url(self): @@ -116,11 +83,6 @@ class Equation(models.Model): """Updates the variables field with all Variable objects found in the LaTeX representation.""" pass # TODO: write - def save(self): - self.update_variables() - super(Equation, self).save() - self.render = self.renderdir + "%s.png" % self.id - super(Equation, self).save() #signals.post_save.connect(update_render, sender=Equation) #dispatcher.connect(update_render, signal=signals.post_save, sender=Equation) @@ -130,4 +92,3 @@ class Equation(models.Model): #admin.site.register(Symbol) #admin.site.register(Variable) #admin.site.register(Equation) - diff --git a/equations/views.py b/equations/views.py index 41309c1..21c4f3a 100644 --- a/equations/views.py +++ b/equations/views.py @@ -35,7 +35,60 @@ def vars_by_symbs(request, which_symbols): return HttpResponse('[]', mimetype="text/javascript") if vars[-1] == '/' or vars[-1] == '': vars = vars[:-1] - returnables = Variable.objects.filter(symbol=vars[0]) + #vkeys = list() + returnables = list() + for v in vars: + returnables.append([r for r in Symbol.get_by_id(int(v)).variable_set.run()]) + print returnables + #vkeys.append(str(Symbol.get_by_id(int(v)).key())) + #returnables = Variable.objects.all().filter('symbol IN ', vkeys).run() - data = serializers.serialize("json", returnables) + data = [serializers.serialize("json", r) for r in returnables] return HttpResponse(data, mimetype="text/javascript") + #return HttpResponse(returnables, mimetype="text/javascript") + +def import_symbols(filename): + infile = open(filename) + stuff = infile.readlines() + infile.close() + l = eval(stuff[0]) + for symb in l: + vals = symb['fields'] + newsymb = Symbol(latex=vals['latex'], unicode=vals['unicode'], + name=vals['name']) + newsymb.save() + +def import_equations(filename): + infile = open(filename) + stuff = infile.readlines() + infile.close() + l = eval(stuff[0]) + for symb in l: + vals = symb['fields'] + newsymb = Symbol(latex=vals['latex'], unicode=vals['unicode'], + name=vals['name']) + newsymb.save() + +def import_variables(filename): + infile = open(filename) + stuff = infile.readlines() + infile.close() + l = eval(stuff[0], {'true':True, 'false':False}) + for vari in l: + vals = vari['fields'] + newvar = Variable(latex=vals['latex'], unicode=vals['unicode'], + name=vals['name'], description=vals['description'], + reference=vals['reference']) + newvar.save() + +def match_var_symb(): + vs = Variable.objects.all().run() + + for v in vs: + try: + vname = v.name.split("Generic ")[1] + s = Symbol.all().filter('name =', vname).run().next() + v.symbol = s + v.save() + except: + print "Error assigning symbol to value: %s " % v |