Some small SQL model improvements
authorElrond <elrond+mediagoblin.org@samba-tng.org>
Fri, 27 Jan 2012 23:33:23 +0000 (00:33 +0100)
committerElrond <elrond+mediagoblin.org@samba-tng.org>
Sun, 29 Jan 2012 22:02:40 +0000 (23:02 +0100)
- Add default for User.email_verified
- Add default for MediaEntry.state
- Let PathTupleWithSlashes store [] as "NULL",
  but not handling the reverse properly yet!
- Add _id alias field to MediaEntry and MediaComment

mediagoblin/db/sql/extratypes.py
mediagoblin/db/sql/models.py

index 33c9edee47a1b6481a28a9866431af5a98e66da2..21c806ec1fcedd5cfcec4754a44dbe469002fb66 100644 (file)
@@ -25,8 +25,10 @@ class PathTupleWithSlashes(TypeDecorator):
 
     def process_bind_param(self, value, dialect):
         if value is not None:
-            assert len(value), "Does not support empty lists"
-            value = '/'.join(value)
+            if len(value) == 0:
+                value = None
+            else:
+                value = '/'.join(value)
         return value
 
     def process_result_value(self, value, dialect):
index 9abd8ec7f14cc9da68b11630c953da9dcdf8ed09..7ec058763e131b68267d000e2f13d1e52b8b79ec 100644 (file)
@@ -50,7 +50,7 @@ class User(Base, UserMixin):
     email = Column(Unicode, nullable=False)
     created = Column(DateTime, nullable=False, default=datetime.datetime.now)
     pw_hash = Column(Unicode, nullable=False)
-    email_verified = Column(Boolean)
+    email_verified = Column(Boolean, default=False)
     status = Column(Unicode, default=u"needs_email_verification", nullable=False)
     verification_key = Column(Unicode)
     is_admin = Column(Boolean, default=False, nullable=False)
@@ -77,7 +77,8 @@ class MediaEntry(Base, MediaEntryMixin):
     description = Column(UnicodeText) # ??
     description_html = Column(UnicodeText) # ??
     media_type = Column(Unicode, nullable=False)
-    state = Column(Unicode, nullable=False) # or use sqlalchemy.types.Enum?
+    state = Column(Unicode, default=u'unprocessed', nullable=False)
+        # or use sqlalchemy.types.Enum?
     license = Column(Unicode)
 
     fail_error = Column(Unicode)
@@ -113,6 +114,8 @@ class MediaEntry(Base, MediaEntryMixin):
     # attachment_files
     # fail_error
 
+    _id = SimpleFieldAlias("id")
+
     def get_comments(self, ascending=False):
         order_col = MediaComment.created
         if not ascending:
@@ -215,6 +218,8 @@ class MediaComment(Base):
 
     get_author = relationship(User)
 
+    _id = SimpleFieldAlias("id")
+
 
 def show_table_init():
     from sqlalchemy import create_engine