Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/models/db.py
blob: a7c7732e18f872d3927fbbb9e0f8dfc2cabf3c9f (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
import uuid
import time
import pickle

class RESIZE:
     def __init__(self,nx=250,ny=32,error_message='not an image'):
        (self.nx,self.ny,self.error_message)=(nx,ny,error_message)
     def __call__(self,value):
          import google.appengine.api as api
          import cStringIO
          try:
              avatar = api.images.resize(value.file.read(), self.nx)
              value.file = cStringIO.StringIO(avatar)
              return (value,None)
          except:
              return (value,self.error_message)


if request.env.web2py_runtime_gae:
    db = DAL('gae')
    session.connect(request,response,db=db)
else:db = DAL("sqlite://storage.db")

db.define_table('upload_key',
   Field('upload_key', length=64, default=uuid.uuid4()),
   Field('user'))

db.define_table('image',
   Field('file', 'upload', requires=[IS_NOT_EMPTY(error_message="Please select a file to upload"), IS_UPLOAD_FILENAME(extension='ta', error_message="Must be a Turtle Art file")]),
   Field('title', requires=[IS_NOT_EMPTY(error_message="You must include a title")]),
   Field('image_id'),
   Field('creator', requires=IS_NOT_EMPTY(error_message="You must include your name")),
   Field('description', 'text'),
   Field('views',default = 0),
   Field('newimage', 'upload', requires=[IS_NOT_EMPTY(error_message="Please select a image to upload"), IS_UPLOAD_FILENAME(extension='png', error_message="Must be a PNG image")]),
   Field('avatar',default = None),
   Field('small_image','upload',requires=RESIZE()),
   Field('favorite_users','text',default=pickle.dumps([]), writable=False, readable=False),
   Field('upload_key', requires= [IS_NOT_IN_DB(db, 'image.upload_key'), IS_IN_DB(db, 'upload_key.upload_key', error_message="key not in database")]),
   Field('Submit_Time', default = time.time()))




db.define_table('comment',
   Field('image_id', db.image),
   Field('author'),
   Field('body', 'text'))


from gluon.tools import Auth
auth = Auth(globals(),db)
auth_table = db.define_table(
    auth.settings.table_user_name,
    Field('username', length=128, default="", unique = True),
    Field('email', length=128, default="", unique=True),
    Field('password', 'password', length=256,
          readable=False, label='Password'),
    Field('registration_key', length=128, default= "",
          writable=False, readable=False),
    Field('favorites','text',default=pickle.dumps([]), writable=False, readable=False),
    Field('requests','text',default=pickle.dumps([]), writable=False, readable=False),
    Field('friends','text',default=pickle.dumps([]), writable=False, readable=False),
    Field('avatar', default = None,writable=False,readable=False),
    Field('reset_password_key', length=128, default="",readable=False, writable=False))

db.comment.image_id.requires = IS_IN_DB(db, db.image.image_id, '%(title)s')
db.comment.author.requires = IS_NOT_EMPTY()
db.comment.body.requires = IS_NOT_EMPTY()

auth_table.username.requires = [IS_EXPR('str(value).count(" ") == 0', error_message='Username must be one word'), IS_NOT_IN_DB(db, auth_table.username)]
auth_table.password.requires = [CRYPT()]
auth_table.email.requires = [
  IS_EMAIL(error_message=auth.messages.invalid_email),
  IS_NOT_IN_DB(db, auth_table.email)]
auth.settings.table_user = auth_table
auth.define_tables()

from gluon.tools import Mail
mail = Mail()
mail.settings.server = 'gae'
mail.settings.sender = 'turtlesite.authentication@gmail.com'
mail.settings.login = None
auth.settings.mailer = mail