from flask.ext.mongokit import Document from larva_library import app, db class User(Document): __collection__ = 'users' required_fields = ['email'] indexes = [{'fields' : 'email', 'unique' : True}] use_dot_notation = True structure = { 'name': unicode, 'email': unicode, 'institution': unicode } def __repr__(self): return '<User %r>' % (self.email) db.register([User]) def find_or_create_by_email(email): u = db.User.find_one({'email':email}) if u is None: u = db.User() u['email'] = unicode(email) u.save() return u
'max' : OR(int, float) } def to_data(self): data = {} data['diel_type'] = self.type try: data['diel_time'] = self.time.strftime("%H") + ":00" data['timezone'] = self.time.strftime("%z") except: data['diel_time'] = None data['timezone'] = None data['cycle'] = self.cycle; data['plus_or_minus'] = self.plus_or_minus data['hours'] = self.hours data['min'] = self.min data['max'] = self.max return data def __str__(self): if self.type == "cycles": return "At %s %s%i hour(s): Move towards %fm -> %fm" % (self.cycle, self.plus_or_minus, self.hours, self.min, self.max) elif self.type == "specifictime": if self.time is not None: t = self.time.strftime("%H:%M UTC") else: t = None return "At %s: Move towards %dm -> %dm" % (t, self.min, self.max) else: return "No known type defined" db.register([Diel])
from mongokit import Document from larva_library import db from mongokit import OR class Taxis(Document): __collection__= 'taxis' use_dot_notation = True structure = { 'variable' : unicode, 'units' : unicode, 'min' : OR(int, float), 'max' : OR(int, float), 'gradient' : OR(int, float) } def to_data(self): data = {} data['variable'] = self.variable data['units'] = self.units data['min'] = float(self.min) data['max'] = float(self.max) data['gradient'] = float(self.gradient) return data def __str__(self): return "%s (%s): %f -> %f +/- %f" % (self.variable, self.units, self.min, self.max, self.gradient) db.register([Taxis])
settlement = db.Settlement.find_one({'_id': sid}) # Populate newlifestage newlifestage = db.LifeStage() newlifestage.name = self.name newlifestage.duration = self.duration newlifestage.notes = self.notes newlifestage.linear_a = self.linear_a newlifestage.linear_b = self.linear_b newlifestage.diel = diels newlifestage.taxis = taxis newlifestage.capability = capability newlifestage.settlement = settlement return newlifestage db.register([LifeStage]) class LifeStageWizard(Form): name = TextField('Lifestage Name') duration = IntegerField('Lifestage Duration (days)') linear = BooleanField("") linear_a = FloatField("A", [validators.optional()]) linear_b = FloatField("B", [validators.optional()]) notes = TextAreaField('Notes') diel = BooleanField('Vertical Migration') taxis = BooleanField('Sensory') capability = BooleanField('Capability') settlement = BooleanField('Transition out of the plankton') # Diel
_keywords.extend(self.common_name.split(' ')) _keywords.extend(self.keywords) _keywords.extend(self.geo_keywords) self._keywords = list(set(_keywords)) def simplified_json(self): tm = json.loads(self.to_json()) remove_mongo_keys(tm) tm['_id'] = str(self._id) del(tm['lifestages']) del(tm['notes']) del(tm['keywords']) del(tm['geo_keywords']) return tm db.register([Library]) # custom field classes class TagListField(Field): widget = widgets.TextInput() def _value(self): if self.data: return u', '.join(self.data) else: return u'' def process_formdata(self, valuelist): if valuelist: self.data = [x.strip() for x in valuelist[0].split(',')] else:
from mongokit import Document from larva_library import db from mongokit import OR class Capability(Document): __collection__ = "capability" use_dot_notation = True structure = {"vss": OR(int, float), "variance": OR(int, float), "swim_turning": unicode, "nonswim_turning": unicode} db.register([Capability])
from mongokit import Document from larva_library import db from mongokit import OR class Settlement(Document): __collection__ = 'settlements' use_dot_notation = True structure = { 'upper' : OR(int, float), 'lower' : OR(int, float), 'type' : unicode } db.register([Settlement])
from larva_library import db, app from wtforms import * from datetime import datetime from copy import deepcopy import json class Capability(Document): __collection__ = 'capability' use_dot_notation = True structure = { 'vss' : float, 'variance' : float, 'swim_turning' : unicode, 'nonswim_turning' : unicode } db.register([Capability]) class Diel(Document): __collection__= 'diel' use_dot_notation = True structure = { 'type' : unicode, 'time' : datetime, 'cycle' : unicode, 'plus_or_minus' : unicode, 'hours' : int, 'min' : float, 'max' : float } def to_data(self): data = {}