-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathblog_models.py
More file actions
77 lines (60 loc) · 2.28 KB
/
blog_models.py
File metadata and controls
77 lines (60 loc) · 2.28 KB
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
# todo: warn on no default, or something
# todo: get default collection name for picklestorage, mongostorage constructors
# todo: requirements.txt
# todo: distutils
import pprint
from modularodm import StoredObject
from modularodm.fields.StringField import StringField
from modularodm.fields.IntegerField import IntegerField
from modularodm.fields.FloatField import FloatField
from modularodm.fields.BooleanField import BooleanField
from modularodm.fields.DateTimeField import DateTimeField
from modularodm.fields.ForeignField import ForeignField
from modularodm.storage.PickleStorage import PickleStorage
from modularodm.storage.MongoStorage import MongoStorage
from modularodm.validators import *
from modularodm.query.querydialect import DefaultQueryDialect as Q
pp = pprint.PrettyPrinter(indent=4)
import random
import logging
debug = False
logging.basicConfig(level=logging.DEBUG)
if debug:
import os
try:os.remove('db_blog.pkl')
except:pass
try:os.remove('db_tag.pkl')
except:pass
class Tag(StoredObject):
value = StringField(primary=True)
count = StringField(default='c', validate=True)
misc = StringField()
misc2 = StringField()
# created = DateTimeField(validate=True)
# modified = DateTimeField(validate=True, auto_now=True)
keywords = StringField(default=['keywd1', 'keywd2'], validate=[MinLengthValidator(5), MaxLengthValidator(10)], list=True)
mybool = BooleanField(default=False)
myint = IntegerField()
myints = IntegerField(default=[1,2,3], list=True)
myfloat = FloatField()
class Blog(StoredObject):
_id = StringField(primary=True, optimistic=True)
body = StringField(default='blog body')
title = StringField(default='asdfasdfasdf', validate=MinLengthValidator(8))
tag = ForeignField('Tag', backref='tagged')
tags = ForeignField('Tag', list=True, backref='taggeds')
_meta = {'optimistic':True}
# import pdb; pdb.set_trace()
# Tag.set_storage(MongoStorage(db, 'tag'))
# Blog.set_storage(MongoStorage(db, 'blog'))
Tag.set_storage(PickleStorage('tag'))
Blog.set_storage(PickleStorage('blog'))
if debug:
t = Tag(value="tester")
t.save()
l = Tag(value="next")
l.save()
b = Blog(body="Hello world!", tag=t, tags=[t, l])
b.save()
b2 = Blog(body="Goodbye world", tag=l, tags=[l])
b2.save()