Exemple #1
0
class API_Key(db.Model):
    # What the API-key gives access to
    host = db.CategoryProperty(required=True)
    
    # What level of authority does the key have? ("Read", "Write" etc.)
    level = db.CategoryProperty(required=True)
    
    # The key itself
    apikey = db.StringProperty(required=True)
Exemple #2
0
class Health(db.Expando):
    account = db.ReferenceProperty(Account)
    profile = db.ReferenceProperty(Profile)
    gh_identifier = db.StringProperty()
    category_ccr = db.CategoryProperty()  # MEDICATION
    category_item = db.CategoryProperty()  # Captopril
    category_kind = db.CategoryProperty(
        default="http://schemas.google.com/health/kinds#profile")
    ccr = db.TextProperty()
    created = db.DateTimeProperty(auto_now_add=True)
    updated = db.DateTimeProperty(auto_now=True)
Exemple #3
0
class Task(db.Model):
    proposer = db.UserProperty()
    proposed = db.DateTimeProperty()
    uuid = db.StringProperty()
    title = db.StringProperty()
    blocks = db.SelfReferenceProperty()
    status = db.CategoryProperty()
Exemple #4
0
class Badge(db.Model):

    name = db.StringProperty(required=True)
    description = db.StringProperty(required=True)
    category = db.CategoryProperty(required=True)
    image = db.StringProperty(required=True)
    value = db.IntegerProperty(required=True)
Exemple #5
0
class UserPrefs(db.Model):
    user = db.UserProperty()  # User object
    level = db.CategoryProperty(default='Normal')  # TODO: Access level
    name_override = db.StringProperty(default='')
    posts = db.IntegerProperty(default=0)  # Number of posts this user has made
    posts_sage = db.IntegerProperty(
        default=0)  # Number of sage posts this user has made
Exemple #6
0
class Product(BaseModel):
    name = db.StringProperty(indexed=True, required=False)
    category = db.ReferenceProperty(Category,
                                    collection_name='products',
                                    indexed=True,
                                    required=False)
    # Keep a String reference to the Department key_name
    department = db.StringProperty(indexed=True, required=False)
    collection = db.StringProperty(required=False, indexed=True)
    type = db.CategoryProperty(indexed=True, required=False)
    price = db.FloatProperty(indexed=True, required=False)
    # Some Products may not have a width and instead just a Depth, eg. for Diameter
    width = db.FloatProperty(indexed=True, required=False)
    height = db.FloatProperty(indexed=True, required=False)
    depth = db.FloatProperty(indexed=True, required=False)
    # Some products may have just a length
    length = db.FloatProperty(indexed=True, required=False)
    colour = db.StringProperty(indexed=True,
                               required=False,
                               choices=set([
                                   'black', 'blue', 'bronze', 'brown', 'clear',
                                   'gold', 'green', 'grey', 'metallics',
                                   'mirrored', 'multi-coloured', 'natural',
                                   'neutral', 'orange', 'pink', 'purple',
                                   'red', 'silver', 'white', 'yellow', ''
                               ]))
    description = db.TextProperty(required=False)
    images = db.ListProperty(db.Key, required=True, indexed=False)
    url = db.LinkProperty(required=False, indexed=True)
Exemple #7
0
class AllPropertiesModel(db.Model):
    """Property names are ugly, yes."""
    prop_string = db.StringProperty()
    prop_byte_string = db.ByteStringProperty()
    prop_boolean = db.BooleanProperty()
    prop_integer = db.IntegerProperty()
    prop_float = db.FloatProperty()
    prop_date_time = db.DateTimeProperty()
    prop_date = db.DateProperty()
    prop_time = db.TimeProperty()
    prop_list = db.ListProperty(int)
    prop_string_list = db.StringListProperty()
    prop_reference = db.ReferenceProperty()
    prop_self_refeference = db.SelfReferenceProperty()
    prop_user = db.UserProperty()
    prop_blob = db.BlobProperty()
    prop_text = db.TextProperty()
    prop_category = db.CategoryProperty()
    prop_link = db.LinkProperty()
    prop_email = db.EmailProperty()
    prop_geo_pt = db.GeoPtProperty()
    prop_im = db.IMProperty()
    prop_phone_number = db.PhoneNumberProperty()
    prop_postal_address = db.PostalAddressProperty()
    prop_rating = db.RatingProperty()
Exemple #8
0
class Locale(db.Model):
    name = db.StringProperty(default=None)
    description = db.TextProperty(default=None)
    language = db.CategoryProperty(choices=set(['en', 'ko', 'ja']),
                                   required=True)
    story = db.ReferenceProperty(Story, default=None, required=True)
    page = db.ReferenceProperty(Page, default=None, required=True)
    content = db.ReferenceProperty(Content, default=None, required=True)
Exemple #9
0
class SubmittedRequestInfo(db.Model):
    name = db.StringProperty(required=True)
    email = db.EmailProperty(required=True)
    request = db.CategoryProperty(required=True)
    targetDate = db.DateTimeProperty()
    details = db.TextProperty(required=True)
    requestDate = db.DateTimeProperty(required=True,
                                      auto_now_add=True,
                                      auto_now=False)
Exemple #10
0
class ArticleOfClothing(db.Model):
  """Models an article of clothing with type, temperatureBands, image, and name"""
  name = db.StringProperty()
  clothingType = db.CategoryProperty()
  temperatureBands = db.ListProperty(long)
  nonDummyData = db.IntegerProperty()
  image = db.BlobProperty()
  imagePath = db.StringProperty()
  has_image = db.StringProperty()
Exemple #11
0
class ArtElem(db.Model):
    """Models navigation data store."""
    title = db.StringProperty(required=True)
    date = db.StringProperty(required=True)
    mainPic = db.BlobProperty(default=None, required=True)
    thumb = db.BlobProperty(default=None, required=True)
    price = db.FloatProperty(required=True)
    dimension = db.FloatProperty(required=True)
    category = db.CategoryProperty(required=True)
    closeUps = db.ReferenceProperty(ImgElem)
Exemple #12
0
class Listing(GeoModel):
    address = db.PostalAddressProperty()
    price = db.FloatProperty()
    baths = db.FloatProperty()
    beds = db.FloatProperty()
    size = db.FloatProperty()
    description = db.StringProperty(multiline=True)
    property_type = db.StringProperty()
    amenities = db.StringProperty()
    author = db.UserProperty()
    createDate = db.DateTimeProperty(auto_now_add=True)
    lastUpdateDate = db.DateTimeProperty(auto_now=True)
    status = db.StringProperty()
    tag = db.CategoryProperty()
    portfolio = db.StringProperty()
    photo = db.BlobProperty()

    def __unicode__(self):
        return self.address

    @staticmethod
    def public_attributes():
        """Returns a set of simple attributes on listing entities."""
        return ['address', 'price', 'baths', 'beds']

    def set_location(self):
        if address:
            pts = geocoder.query()
            if pts and len(pts) >= 2:
                self.location = db.GeoPt()
                self.location.lat = pts[0]
                self.location.lon = pts[1]

    def _get_latitude(self):
        return self.location.lat if self.location else None

    def _set_latitude(self, lat):
        if not self.location:
            self.location = db.GeoPt()

        self.location.lat = lat

    latitude = property(_get_latitude, _set_latitude)

    def _get_longitude(self):
        return self.location.lon if self.location else None

    def _set_longitude(self, lon):
        if not self.location:
            self.location = db.GeoPt()

        self.location.lon = lon

    longitude = property(_get_longitude, _set_longitude)
class CoverageData(db.Model):
  """This represents one coverage report from the build bot."""
  # The date the report was made.
  date = db.DateTimeProperty(required=True)

  # Coverage percentages.
  line_coverage = db.FloatProperty(required=True)
  function_coverage = db.FloatProperty(required=True)
  branch_coverage = db.FloatProperty()

  # The report category must be one of the REPORT_CATEGORIES.
  report_category = db.CategoryProperty()
Exemple #14
0
class ReceiptModel(LoggableModel):
	receipt_type = db.CategoryProperty(choices=set([
				'candy',
				'money',
				'data',
#				'play',
				'gift']),required=True)
	before = db.IntegerProperty(required=True)
	cost = db.IntegerProperty(required=True)
	after = db.IntegerProperty(required=True)
	dataID = db.IntegerProperty(default=0)
	receipt_hash = db.StringProperty()
Exemple #15
0
class Picture(db.Model):
    #Picture name
    title = db.StringProperty(required=True)
    #Date creation
    date = db.DateTimeProperty(auto_now_add=True)
    #Date last modification
    date_modify = db.DateTimeProperty(auto_now=True)
    #Image category(defined on upload mako)
    category = db.CategoryProperty(required=True)
    #Uploader
    user = db.UserProperty(required=False)
    #Image binary
    image = db.BlobProperty()
Exemple #16
0
class Entry(CustomModel):
    title = db.StringProperty()
    slug = db.StringProperty()
    pub_date = db.DateTimeProperty(auto_now_add=True)
    description = db.TextProperty()
    text = db.TextProperty()
    tags = db.ListProperty(db.Category)
    format = db.CategoryProperty()
    published = db.BooleanProperty(default=False)
    author = db.UserProperty()
    template = db.StringProperty()
    show_in_rss = db.BooleanProperty(default=False)
    cacheable = db.BooleanProperty(default=True)
    sequence = db.IntegerProperty()
    old_id = db.IntegerProperty()
    disable_comments = db.BooleanProperty(default=False)

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('entry', args=[self.slug])

    def put(self):
        if not self.slug:
            self.slug = unicode(slugify(self.title))

        # Delete from cache
        cache.delete(Entry.get_cache_key(self.slug))

        return super(Entry, self).put()

    @classmethod
    def get_cache_key(cls, slug):
        return app_settings.BLOG_CACHE_KEY_PREFIX + slug

    def description_or_text(self):
        return self.description or self.text[:200]+'...'

    @classmethod
    def latest(cls):
        l = cls.all().filter('published =', True)
        l.order('-pub_date')

    def get_text(self):
        if self.format == 'markdown':
            return markdown(self.text)
        elif self.format == 'textile':
            return textile(self.text)
        
        return self.text
Exemple #17
0
class Registration(db.Model):
    full_name = db.StringProperty()
    gender = db.CategoryProperty()
    email = db.EmailProperty()
    highschool = db.StringProperty()
    emergency_contact_name = db.StringProperty()
    emergency_contact_number = db.StringProperty()
    laptop = db.BooleanProperty()
    year = db.IntegerProperty()
    level = db.IntegerProperty()
    reason = db.StringProperty()

    # Created
    created = db.DateTimeProperty(auto_now_add=True)
Exemple #18
0
class ContentModel (MemcachedModel):
	version = db.IntegerProperty(default=1)
	visible = db.IntegerProperty(default=1)
	group = db.ReferenceProperty(AccountModel,
			collection_name='groupowns',
			required=False)
	creator = db.ReferenceProperty(AccountModel,
			collection_name='createds',
			required=True)
	index = db.IntegerProperty(default=0)
	price = db.IntegerProperty(default=0)
	content_type = db.CategoryProperty(choices=set(['category','story','page','content']),
				required=True)
	expiration_days = db.IntegerProperty(default=0)
	expiration_mins = db.IntegerProperty(default=0)
Exemple #19
0
class SessionData(db.Model):
    presenter = db.ListProperty(unicode, default=None)
    user_id = db.StringProperty()
    name = db.StringProperty()
    room = db.StringProperty(indexed=True)
    date = db.StringProperty()
    time = db.StringProperty()
    dotw = db.StringProperty()
    #date_time =         db.DateTimeProperty()
    create_date = db.DateTimeProperty(auto_now_add=True)
    module = db.StringProperty(default=module)
    blob_store_key = blobstore.BlobReferenceProperty()
    filename = db.StringProperty()
    uploaded_to_dbox = db.BooleanProperty(default=False)
    dbox_path = db.CategoryProperty(default=None)
    dbox_size = db.StringProperty(default=None)
class Wiki(CustomModel):
    title = db.StringProperty()
    slug = db.StringProperty()
    pub_date = db.DateTimeProperty(auto_now_add=True)
    description = db.TextProperty()
    text = db.TextProperty()
    tags = db.ListProperty(db.Category)
    format = db.CategoryProperty()
    published = db.BooleanProperty(default=False)
    author = db.UserProperty()
    template = db.StringProperty()
    show_in_rss = db.BooleanProperty(default=False)
    cacheable = db.BooleanProperty(default=True)
    sequence = db.IntegerProperty()
    old_id = db.IntegerProperty()
    disable_comments = db.BooleanProperty(default=False)

    def __unicode__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('wiki', args=[self.slug])

    def put(self):
        if not self.slug:
            self.slug = unicode(slugify(self.title))

        # Delete from cache
        cache.delete(Wiki.get_cache_key(self.slug))

        return super(Wiki, self).put()

    @classmethod
    def get_cache_key(cls, slug):
        return app_settings.WIKI_CACHE_KEY_PREFIX + slug

    def description_or_text(self):
        return self.description or self.text

    def render(self):
        return render_to_string('gae_wiki/render_wiki.html', {'wiki': self})
Exemple #21
0
class Everything(db.Model):
    str = db.StringProperty()
    bool = db.BooleanProperty()
    int = db.IntegerProperty()
    float = db.FloatProperty()
    datetime = db.DateTimeProperty()
    date = db.DateProperty()
    time = db.TimeProperty()
    list = db.ListProperty(types.IntType)
    strlist = db.StringListProperty()
    user = db.UserProperty()
    blob = db.BlobProperty()
    text = db.TextProperty()
    category = db.CategoryProperty()
    link = db.LinkProperty()
    email = db.EmailProperty()
    geopt = db.GeoPtProperty()
    im = db.IMProperty()
    phonenumber = db.PhoneNumberProperty()
    postaladdress = db.PostalAddressProperty()
    rating = db.RatingProperty()
Exemple #22
0
class LinkModel (LoggableModel):
	score = db.IntegerProperty(default=0)
	link_type = db.CategoryProperty(choices=set(['accountcategory','accountstory','accountpage','accountcontent']),
			required=True)
Exemple #23
0
class User(db.Model):
    username = db.StringProperty(required=True)
    password = db.StringProperty(required=True)
    email = db.StringProperty(required=True)
    user_class = db.CategoryProperty(required=True)
    created = db.DateTimeProperty(auto_now_add=True)
Exemple #24
0
class TaskCategory(db.Model):
    owner = db.UserProperty()
    name = db.CategoryProperty()
 class Song(db.Model):
     artist = db.ReferenceProperty(Artist)
     album = db.ReferenceProperty(Album)
     duration = db.StringProperty()
     genre = db.CategoryProperty()
     title = db.StringProperty()
Exemple #26
0
class FoodType(db.Model):
    name = db.CategoryProperty()
Exemple #27
0
class Document(db.Model):
    """A document is a piece of (possibly long) user generated text
    that is attached to a specific djdb object.
    """
    # The object that this document's text is the subject of.
    subject = db.ReferenceProperty(required=True)

    # The user who wrote the text.
    author = db.ReferenceProperty(User, required=False)
    
    # If the author is not a user, then use this field.
    author_name = db.StringProperty(required=False)
    
    revoked = db.BooleanProperty(required=False, default=False)

    @property
    def author_display(self):
        if self.author:
            return self.author
        else:
            return self.author_name
            
    # When this document was created.
    created = db.DateTimeProperty(required=True, auto_now_add=True)

    # When this document was last modified.
    modified = db.DateTimeProperty(required=True, auto_now=True)

    @property
    def created_display(self):
        """This is the time to show to users."""
        return time_util.convert_utc_to_chicago(self.created)

    # What type of document this is.
    # Example: "review" for an Album review.
    doctype = db.CategoryProperty(required=True)

    # If True, this document should not be shown under normal
    # circumstances.
    is_hidden = db.BooleanProperty(required=True, default=False)

    # The title of this document.
    title = db.StringProperty()
    
    # The text of the document, exactly as it was entered by the user.
    # This might not be HTML-safe!
    unsafe_text = db.TextProperty()

    @property
    def text(self):
        """Returns a sanitized version of the text the user input."""
        return sanitize_html.sanitize_html(self.unsafe_text)

    @property
    def truncated_text(self):
        """Returns truncated text."""
        if len(self.text) > 100:
            text = self.text[0:100] + "..."
        else:
            text = self.text
        return text

    @property
    def sort_key(self):
        # We want to sort documents in reverse chronological order.
        return tuple(-x for x in self.created.utctimetuple())
Exemple #28
0
class Track(db.Model):
    """A track in CHIRP's digital library.

    Each track's audio content is stored in a separate MP3 file in
    the digital library.

    Attributes:
      album: A reference to the Album entity that this track is a part of.
      title: The name of the track, as stored in the MP3 file's TIT2 tag.
      pronunciation: How to pronounce the track title.
      track_artist: A reference to the Artist entity of the track's creator.
        This must be set if self.album.is_compilation is True.
        It may be set if self.album.is_compilation is False.
      import_tags: A list of the tags that were attached to this track
        when it was imported into the library.
      sampling_rate_hz: The sampling rate of the track's MP3 file, measured
        in Hertz.
      bit_rate_kbps: The bit rate of the MP3 file, measured in kbps (kilobits
        per second).
      channels: The number and type of channels in the MP3 file.
      duration_ms: The duration of the track, measured in milliseconds.
        (Remember that 1 second = 1000 milliseconds!)
      revoked: If true, this object has been revoked.  Revoked items should
        not be returned in search results, and should be otherwise hidden
        from users when possible.
    """
    album = db.ReferenceProperty(Album, required=True)

    title = db.StringProperty(required=True)

    pronunciation = db.StringProperty(required=False)

    track_artist = db.ReferenceProperty(Artist, required=False)

    import_tags = db.StringListProperty()

    # Do not manipulate this field directly!  Instead, use the
    # functions provided in the tag_util module.
    #
    # This is just a cached version of the data; the authoritative
    # version of the tags for 'obj' are found by calling
    # TagEdit.fetch_and_merge(obj).
    current_tags = db.StringListProperty()

    # TODO(trow): Validate that this is > 0 and <= self.album.num_tracks.
    track_num = db.IntegerProperty(required=True)

    sampling_rate_hz = db.IntegerProperty(required=True)

    bit_rate_kbps = db.IntegerProperty(required=True)

    channels = db.CategoryProperty(required=True, choices=_CHANNEL_CHOICES)

    # TODO(trow): Validate that this is > 0.
    duration_ms = db.IntegerProperty(required=True)

    revoked = db.BooleanProperty(required=False, default=False)

    # Whether the track belongs to an album that has been reviewed.
    is_reviewed = db.BooleanProperty(required=False, default=False)

    @property
    def duration(self):
        """A human-readable version of the track's duration."""
        dur_ms = self.duration_ms % 1000
        dur_s = ((self.duration_ms - dur_ms) // 1000) % 60
        dur_m = (self.duration_ms - dur_ms - 1000*dur_s) // 60000
        return "%d:%02d" % (dur_m, dur_s)

    @property
    def artist_name(self):
        """Returns a string containing the name of the track's creator."""
        return ((self.track_artist and self.track_artist.name)
                or self.album.artist_name)

    @property
    def artist_url(self):
        """Returns a URL for this track's artist's information."""
        return ((self.track_artist and self.track_artist.url)
                or self.album.album_artist.url)

    @property
    def sort_key(self):
        """A key that can be used to sort Albums into a reasonable order."""
        return (self.album.sort_key, self.track_num)

    _KEY_PREFIX = u"djdb/t:"

    @classmethod
    def get_key_name(cls, ufid):
        """Returns the datastore key name based on the track's UFID."""
        return cls._KEY_PREFIX + ufid

    def __init__(self, *args, **kwargs):
        """Constructor.

        If necessary, automatically sets the entity's key according
        to our standard scheme.
        """
        if 'ufid' in kwargs:
            assert 'key_name' not in kwargs
            kwargs['key_name'] = self.get_key_name(kwargs['ufid'])
        db.Model.__init__(self, *args, **kwargs)

    @property
    def ufid(self):
        """Returns the library UFID of the track's MP3."""
        return self.key().name()[len(self._KEY_PREFIX):]

    def __unicode__(self):
        return self.title

    @property
    def sorted_current_tags(self):
        """Returns a sorted list of tags."""
        return sorted(self.current_tags, key=unicode.lower)

    def has_tag(self, tag):
        """Returns true if tag 'tag' is currently set."""
        tag = tag.lower()
        return any(tag == t.lower() for t in self.current_tags)

    @property
    def is_explicit(self):
        """Returns True if the [Explicit] tag is set on this track."""
        return self.has_tag(EXPLICIT_TAG)

    @property
    def is_recommended(self):
        """Returns True if the [Recommended] tag is set on this track."""
        return self.has_tag(RECOMMENDED_TAG)
Exemple #29
0
class Reference(db.Model):
    category_ccr = db.CategoryProperty()  # MEDICATION
    category_item = db.CategoryProperty()  # Captopril
    category_item_kwds = db.StringListProperty(
    )  # captopril, i.e., lowercase keywords for a search
Exemple #30
0
class Label(db.Model):
    timestamp = db.DateTimeProperty(auto_now_add=True)
    url = db.StringProperty()
    label = db.StringProperty()
    mode = db.CategoryProperty(choices=("page", "site"))