コード例 #1
0
ファイル: rpc.py プロジェクト: paulpv/evchargesites
class Site(db.Model):
  
  # RPC private/protected properties: read-only for ALL
  _deleted = db.BooleanProperty(default=False)
  _dateCreated = db.DateTimeProperty(auto_now_add=True)
  _dateModified = db.DateTimeProperty(auto_now=True)
  _dateAccessed = db.DateTimeProperty()
  _userLastAccessed = db.UserProperty()
  _rating = db.RatingProperty()
  
  # RPC public properties: writable by creator/admin
  userCreator = db.UserProperty(required=True) # creator or admin may change creator
  name = db.StringProperty(required=True)
  latlng = db.GeoPtProperty(required=True)
  address = db.PostalAddressProperty()
  description = db.TextProperty()
  pay = db.BooleanProperty() # pay access only?
  restricted = db.BooleanProperty() # authorized access only?
  
  # List of Service entries in the DB 
  services = db.ListProperty(db.Key) # List of keys to Service entities

  #db.BlobProperty() # images, etc
  #db.ListProperty() # images, history, ...
  # ReferenceProperty?
  # Related sites?
  
  contactName = db.StringProperty()
  contactAddress = db.PostalAddressProperty()
  contactPhone = db.PhoneNumberProperty()
  contactEmail = db.EmailProperty()
  contactURL = db.LinkProperty()
  contactIM = db.IMProperty()

  evcmid = db.StringProperty() # ID, if imported from EVChargerMaps.com
コード例 #2
0
class Settings(db.Model):
    companyName = db.StringProperty()
    companyAddress = db.PostalAddressProperty()
    companyPhone1 = db.PhoneNumberProperty()
    companyPhone2 = db.PhoneNumberProperty()
    logo = db.BlobProperty()
    bankName = db.StringProperty()
    bankAddress = db.PostalAddressProperty()
    bankAcctName = db.StringProperty()
    bankAcctNum = db.StringProperty()
    routingNumber = db.StringProperty()
    swiftCode = db.StringProperty()
    email = db.EmailProperty()
    sdin = db.StringProperty()
    sales_tax = db.FloatProperty(default=0.0)
    num_months = db.IntegerProperty(default=6)

    @classmethod
    def get_all(cls):
        cacheKey = "settings:all"
        allInstances = memcache.get(cacheKey)
        logging.info("******")
        logging.info(allInstances)
        if allInstances is None:
            logging.info("creating cache: " + cacheKey)
            allInstances = cls.all()[0]
            memcache.add(cacheKey, allInstances)
        else:
            logging.info("using cache: " + cacheKey)
        return allInstances
コード例 #3
0
class Venue(GeoModel):
    name = db.StringProperty()
    address = db.PostalAddressProperty()
    start_date = db.DateProperty()
    end_date = db.DateProperty()

    def date_string(self):
        start_date = self.start_date.strftime("%m/%d/%Y")
        end_date = self.end_date.strftime("%m/%d/%Y")

        return '%s - %s' % (start_date, end_date)

    def unlink_templates(self):
        templates = self.template_set
        for template in templates:
            template.venue = None
            template.put()

    def to_dict(self):
        result = to_dict(self)
        result['id'] = self.key().id()

        return result

    def delete(self):
        self.unlink_templates()
        super(Venue, self).delete()
コード例 #4
0
class Dealer(db.Model):
    name = db.StringProperty()
    url = db.LinkProperty()
    address = db.PostalAddressProperty()
    phone = db.PhoneNumberProperty()
    cars = db.ListProperty(db.Key)
    area = db.StringProperty()
コード例 #5
0
class Person(db.Model):
    """Base person class.  Necessary in the case of non-member board nominees."""

    firstname = db.StringProperty()
    lastname = db.StringProperty()
    username = db.StringProperty(required=True)
    email = db.EmailProperty(required=True)
    altemails = db.ListProperty(item_type=db.Email)
    phone = db.PhoneNumberProperty()
    altphones = db.ListProperty(item_type=db.PhoneNumber)
    address = db.PostalAddressProperty()
    # password is hashed with sha256
    password = db.BlobProperty(required=True)
    password_expired = db.BooleanProperty(default=False)
    active = db.BooleanProperty(default=True)
    admin = db.BooleanProperty(default=False)
    joined = db.DateProperty()
    left = db.DateProperty()

    @staticmethod
    def EncryptPassword(password):
        """Encrypts a password using SHA-256 encoding.

    Args:
      password: str, password to encrypt.
    Returns:
      str, encrypted password.
    """
        return hashlib.sha256(password).digest()
コード例 #6
0
ファイル: Server.py プロジェクト: ncvc/Live.fm
class Event(db.Model):
	eventID = db.IntegerProperty()
	eventTitle = db.StringProperty()
	eventDescription = db.TextProperty()
	eventImageURLs = db.ListProperty(db.Link)
	eventAttendance = db.IntegerProperty()
	eventReviews = db.IntegerProperty()
	eventTag = db.StringProperty()
	eventURL = db.LinkProperty()
	eventWebsite = db.LinkProperty()
	eventTickets = db.TextProperty()
	eventCancelled = db.BooleanProperty()
	
	venueID = db.IntegerProperty()
	venueName = db.StringProperty()
	venueURL = db.LinkProperty()
	venueWebsite = db.LinkProperty()
	venuePhoneNumber = db.PhoneNumberProperty()
	venueImageURLs = db.ListProperty(db.Link)
	venueAddress = db.PostalAddressProperty()
	venueTimeZone = db.StringProperty()
	
	artists = db.StringListProperty()
	headliner = db.StringProperty()
	
	tags = db.StringListProperty()
	
	geoPt = db.GeoPtProperty()
	date = db.DateTimeProperty()
	
	dateAdded = db.DateTimeProperty(auto_now_add=True)
コード例 #7
0
class SocialUser(db.Model):
    first_name = db.StringProperty(required=True)
    last_name = db.StringProperty(required=True)
    display_name = db.StringProperty()

    user_entity = db.UserProperty()

    bio = db.TextProperty()

    gender = db.StringProperty(choices=set(["M", "F", "U"]))
    birth_date = db.DateTimeProperty()

    email = db.EmailProperty(required=True)
    email_alternate = db.EmailProperty()

    mobile_number = db.PhoneNumberProperty()

    mailing_address = db.PostalAddressProperty()

    personal_website = db.LinkProperty()

    hometown = db.StringProperty()
    current_location = db.StringProperty()

    relationship_status = db.StringProperty()

    locale = db.StringProperty()
    timezone = db.StringProperty()

    enabled = db.BooleanProperty()
コード例 #8
0
ファイル: tests.py プロジェクト: sskrab001/dpxdt
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()
コード例 #9
0
class EventModel(polymodel.PolyModel):
    """This models a general event type

    .. method:: Event(name, date, startTime, endTime[, description])

       Creates a new Event entity

       :param name: Name of event
       :type name: unicode
    
       :param date: Date of the event
       :type date: datetime.date
    
       :param startTime: Time event starts at
       :type startTime: datetime.time
    
       :param endTime: Time event ends at
       :type endTime: datetime.time
    
       :param description: Description of the event
       :type description: unicode

       :rtype: Event model instance
    """
    # Required Attributes
    name = db.StringProperty(required=True)
    start_time = db.DateTimeProperty(required=True)
    end_time = db.DateTimeProperty(required=True)
    location = db.PostalAddressProperty(required=True)

    # Optional Attributes
    description = db.StringProperty()
コード例 #10
0
class UserSettings(db.Model):
    user = db.UserProperty()
    lastname = db.StringProperty(verbose_name=u'姓')
    firstname = db.StringProperty(verbose_name=u'名')
    gender = db.StringProperty(choices=(
        "M",
        "F",
    ), verbose_name=u'性别')
    profile = db.TextProperty(verbose_name=u'档案')
    language = db.IntegerProperty(verbose_name=u'语言')
    im = db.IMProperty()
    birthdate = db.DateProperty(verbose_name=u'生日')
    website = db.LinkProperty(verbose_name=u'网址')
    home_phone = db.PhoneNumberProperty(verbose_name=u'私人电话')
    work_phone = db.PhoneNumberProperty(verbose_name=u'工作电话')
    mobile = db.PhoneNumberProperty(verbose_name=u'手机')
    fax = db.PhoneNumberProperty(verbose_name=u'传真')
    address = db.PostalAddressProperty(verbose_name=u'地址')

    @staticmethod
    def getByUser(user):
        settings = UserSettings.all().filter('user =', user).get()
        if settings is None:
            settings = UserSettings(user=user)
            settings.put()
        return settings
        # q = db.GqlQuery("SELECT * FROM UserSettings WHERE user = :1", user)
        # return q.get()

    @staticmethod
    def getByCurrentUser():
        user = users.get_current_user()
        return UserSettings.getByUser(user)
コード例 #11
0
ファイル: index.py プロジェクト: chrismour90/UniProjects
class User(db.Model):
  name = db.StringProperty()
  surname = db.StringProperty()
  account = db.StringProperty()
  password = db.StringProperty()
  address= db.PostalAddressProperty()
  cellphone= db.PhoneNumberProperty()
  email= db.EmailProperty()  
  id_photo=db.BlobProperty()
コード例 #12
0
class Winery(db.Model):
    """Models a winery"""
    name = db.StringProperty()
    description = db.TextProperty()
    rating = db.RatingProperty()
    email = db.EmailProperty()
    phone = db.PhoneNumberProperty()
    hours = db.ReferenceProperty(WeeklyHours)
    address = db.PostalAddressProperty()
    location = db.GeoPtProperty()
    image = db.BlobProperty()
コード例 #13
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)
コード例 #14
0
class SpoonStep(db.Model):
    "Step of a spoon travel"

    PROPERTIES = set(
        ['spoon', 'date', 'comment', 'place', 'email', 'image_blob'])

    spoon = db.ReferenceProperty(Spoon, collection_name="spoonSteps")
    date = db.DateTimeProperty(auto_now_add=True)
    comment = db.StringProperty(multiline=True)
    place = db.PostalAddressProperty()
    email = db.EmailProperty()
    image_blob = db.BlobProperty()
    currentOwner = db.StringProperty()
コード例 #15
0
class PerzoUser(db.Model):
  # Models an individual Perzo User - This is the primary user profile for login verification
  # All other profile, stream, filestore dbs are linked here via datastore keys
  index = db.IntegerProperty()				# Unique Integer ID for each User
  email = db.StringProperty()				# Email for Signing in to Perzo
  gemail = db.UserProperty()				# Google User ID (gmail)
  firstname = db.StringProperty()			# User's proper first name(s)
  lastname = db.StringProperty()			# User's proper family name
  nickname = db.StringProperty()			# Screen name for the user
  password = db.StringProperty()			# Password for signing into Perzo
  status = db.StringProperty()				# User status (set by user)
  state = db.StringProperty()				# User state (set by Robbie: home, traveling, etc.)
  photo = db.BlobProperty()					# Quick access thumbnail photo
  mobile = db.PhoneNumberProperty()			# Mobile number required for Perzo use
  homeaddress = db.PostalAddressProperty()
  workaddress = db.PostalAddressProperty()
  shipaddress = db.PostalAddressProperty()
  currentloc = db.GeoPtProperty()
  homeloc = db.GeoPtProperty()
  workloc = db.GeoPtProperty()
  userextras = db.Key()						# Pointer to extended user data base
  robbie = db.Key()							# Pointer to Robbie data bases
  profilephotos = db.Key()					# Pointer to profile photo list
  streams = db.Key()						# Pointer to streams
  files = db.Key()							# Pointer to Perzo file store
  signals = db.Key()						# Pointer to signal filters
  contacts = db.Key							# Pointer to user contacts
  signinlog = db.Key()						# Pointer to Perzo signin history (IP, date)
  googleplussignin = db.BooleanProperty()
  googleplus = db.Key()
  facebooksignin = db.BooleanProperty()
  facebook = db.Key()
  twitterplussignin = db.BooleanProperty()
  twitter = db.Key()
  linkedinsignin = db.BooleanProperty()
  linkedin = db.Key()
  date = db.DateTimeProperty(auto_now_add=True) # Date & time of account creation
コード例 #16
0
class SocialEvent(db.Model):
    user = db.ReferenceProperty(SocialUser)
    social_account = db.ReferenceProperty(SocialAccount)
    social_account_item_id = db.StringProperty()

    name = db.StringProperty()
    start_time = db.DateTimeProperty()
    end_time = db.DateTimeProperty()

    location_text = db.StringProperty()
    location_address = db.PostalAddressProperty()

    #rsvp = db.StringProperty(required=True, choices=set(["Y","N","M"]))  # Yes, NO, or Maybe
    rsvp = db.StringProperty()
    friend_list = db.StringListProperty()
コード例 #17
0
class SocialFriend(db.Model):
    user = db.ReferenceProperty(SocialUser)
    social_account = db.ReferenceProperty(SocialAccount)
    social_account_item_id = db.StringProperty()

    social_account_username = db.StringProperty()

    first_name = db.StringProperty()
    last_name = db.StringProperty()
    display_name = db.StringProperty()

    location = db.PostalAddressProperty()

    original_friend_date = db.DateTimeProperty()
    internal_retrieval_date = db.DateTimeProperty(auto_now_add=True)
コード例 #18
0
class SocialReview(db.Model):
    user = db.ReferenceProperty(SocialUser)
    social_account = db.ReferenceProperty(SocialAccount)
    social_account_item_id = db.StringProperty()

    full_business_name = db.StringProperty()
    social_account_business_id = db.StringProperty()
    business_category_list = db.StringListProperty()
    business_address = db.PostalAddressProperty()

    review_rating = db.RatingProperty(
    )  #every rating is normalized to 1 out of 100
    review_date = db.DateTimeProperty()
    review_text = db.TextProperty()

    checkin_count = db.IntegerProperty()
コード例 #19
0
class MetaData(db.Model):
    title = db.StringProperty(required=True)
    sub_title = db.StringProperty(required=True)
    adresse = db.PostalAddressProperty(required=True)
    contact = db.StringProperty(required=True)
    email1 = db.EmailProperty(required=True)
    email2 = db.EmailProperty(required=True)
    default_from_email = db.EmailProperty(required=True)
    domain = db.LinkProperty(required=True)
    domain_contrib = db.LinkProperty(required=True)
    phone = db.PhoneNumberProperty(required=True)
    online = db.BooleanProperty()
    dateonline = db.DateProperty(required=True, auto_now=True)

    def __unicode__(self):
        return u'Données globales : %s %s' % (self.title, self.domain)
コード例 #20
0
class Agenda(db.Model):
    title_event = db.StringProperty(required=True,
                                    verbose_name=u"Titre de l'événement")
    agenda_startdate = db.DateTimeProperty(required=True,
                                           verbose_name=u"Début")
    agenda_enddate = db.DateTimeProperty(required=True, verbose_name="Fin")
    agenda_lieux = db.PostalAddressProperty(
        required=True, verbose_name=u"Lieux de l'événement")
    content = HTMLProperty(required=True, verbose_name=u"Description")
    agenda_online = db.BooleanProperty(required=True, verbose_name="En ligne")
    agenda_contact = db.ReferenceProperty(User,
                                          required=True,
                                          verbose_name="Contact")

    def __unicode__(self):
        return u'Evénemenet : %s (début: %s, fin: %s)' % (
            self.title_event, self.agenda_startdate, self.agenda_startdate)
コード例 #21
0
class Park(db.Model):
    """ Park model for the App Engine data store. """

    guid = db.StringProperty(required=True)
    name = db.StringProperty(required=True)
    address = db.PostalAddressProperty(required=True)
    neighbourhood = db.StringProperty(required=True)
    geolocation = db.GeoPtProperty(required=True)

    dogs = db.BooleanProperty(default=False)
    leashed = db.BooleanProperty(default=False)
    restrictions = db.BooleanProperty(default=False)
    notes = db.StringProperty(multiline=True)

    overallRating = db.RatingProperty(default=0)
    amountVotes = db.IntegerProperty(default=0)
    overallBayesian = db.RatingProperty(default=0)

    facilityVotes = db.IntegerProperty(default=0)
    facilityVotesTotal = db.IntegerProperty(default=0)
    facilityRating = db.RatingProperty(default=0)
    facilityBayesian = db.RatingProperty(default=0)

    cleanlinessVotes = db.IntegerProperty(default=0)
    cleanlinessVotesTotal = db.IntegerProperty(default=0)
    cleanlinessRating = db.RatingProperty(default=0)
    cleanlinessBayesian = db.RatingProperty(default=0)

    friendlinessVotes = db.IntegerProperty(default=0)
    friendlinessVotesTotal = db.IntegerProperty(default=0)
    friendlinessRating = db.RatingProperty(default=0)
    friendlinessBayesian = db.RatingProperty(default=0)

    def getmarker(self):
        if not self.dogs:
            return app.config.markerbase + 'dogs-no.png'
        else:
            if not self.restrictions:
                if not self.leashed:
                    return app.configmarkerbase + 'dogs-free.png'
                else:
                    return app.configmarkerbase + 'dogs-leashed.png'
            else:
                return app.configmarkerbase + 'dogs-restrictions.png'
コード例 #22
0
class User(db.Model):
    name = db.StringProperty('Full Name')
    account = db.UserProperty()
    phone_number = db.PhoneNumberProperty('Phone Number')
    address = db.PostalAddressProperty('Postal Address')
    website = db.StringProperty('Homepage URL')
    description = db.TextProperty('Brief Biography')
    rating = db.FloatProperty(default=0.0)
    rating_count = db.IntegerProperty(default=0)
    tags = db.StringListProperty('Expertise, one per line', default=None)
    availability = db.TextProperty(
        'Availability',
        default='Available by appointment on weekdays in PST timezone')
    has_chat = db.BooleanProperty('Use Google Chat', default=False)

    def email(self):
        result = self.account.nickname() if self.account else ''
        return (result +
                '@gmail.com') if result and '@' not in result else result
コード例 #23
0
class Site(BaseModel):
    """A work site."""
    # "10001DAL" reads: 2010, #001, Daly City
    number = db.StringProperty(required=True)
    number.unique = True
    name = db.StringProperty()  # "Belle Haven"
    name.verbose_name = 'Recipient Name'
    street = db.StringProperty()  # Not full street address, for privacy.
    applicant = db.StringProperty()
    applicant.verbose_name = 'Applicant Contact'
    sponsors = db.StringProperty()
    difficulty = db.StringProperty()
    postal_address = db.PostalAddressProperty()  # Full street address.
    work_start = db.DateProperty()
    work_end = db.DateProperty()
    notes = db.TextProperty()

    def __unicode__(self):
        return 'Site #%s | %s' % (self.key().id(), self.name)
コード例 #24
0
class Company(db.Model):
    company_name = db.StringProperty()
    company_n_fractions = db.StringListProperty()
    company_site_url = db.LinkProperty()
    short_description = db.TextProperty()
    sh_d_fractions = db.StringListProperty()# to lower
    phone = db.StringListProperty()
    phone_type = db.StringProperty()
    gen_description = db.TextProperty()
    gen_d_fractions = db.StringListProperty()# to lower
    description_headers = db.StringListProperty()
    description_paragraph = db.TextProperty()
    description_p_fractions = db.StringListProperty()# to lower
    tags = db.StringListProperty()# to lower
    category = db.StringListProperty()# to lower
    address = db.PostalAddressProperty()
    postal_code = db.IntegerProperty() # 
    city = db.StringProperty() #
    city_fractions = db.StringListProperty() #
    country = db.StringProperty() #
    continent = db.StringProperty() #
コード例 #25
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()
コード例 #26
0
class Supplier(BaseModel):
    """A supplier of Items."""
    # TODO: fax, contact name vs. supplier name,
    name = db.StringProperty()
    name.unique = True
    name.required = True
    email = db.EmailProperty()
    address = db.PostalAddressProperty()
    phone1 = db.PhoneNumberProperty()
    phone2 = db.PhoneNumberProperty()
    notes = db.TextProperty()
    since = db.DateProperty(auto_now_add=True)
    active = db.StringProperty(choices=('Active', 'Inactive'),
                               default='Active')
    visibility = db.StringProperty(choices=('Everyone', 'Staff Only'),
                                   default='Everyone')

    def __unicode__(self):
        return self.name

    def __str__(self):
        return self.name
コード例 #27
0
class Contact(polymodel.PolyModel):
  phone_number = db.PhoneNumberProperty()
  address = db.PostalAddressProperty()
コード例 #28
0
class Event(db.Model):
    title = db.StringProperty(required=True)
    start= db.DateTimeProperty(required=True)
    end=db.DateTimeProperty(required=True, indexed=True)
    location=db.PostalAddressProperty(required=False, indexed=False)
    link=db.LinkProperty(required=False, indexed=False)
    description=db.TextProperty()
    cost=db.TextProperty(required=False)
    submitted_by=db.ReferenceProperty(Profile,required=False, collection_name='events_submitted')
    submitted_at=db.DateTimeProperty(auto_now_add=True)
    site=db.ReferenceProperty(Eventsite, required=True)
    sort_dt=db.DateTimeProperty()
    status=db.StringProperty(required=True)
    score=db.IntegerProperty(indexed=False)
    approved_by=db.ReferenceProperty(Profile,indexed=False, collection_name="events_approved")
    approved_on=db.DateTimeProperty()
    tags=db.StringListProperty()
    credit_name=db.StringProperty(required=True, indexed=False)
    credit_link=db.LinkProperty(required=False, indexed=False)
    source=db.ReferenceProperty(required=False)
    last_seen=db.DateTimeProperty(required=False)
    source_uid=db.StringProperty(required=False)
    repeats_frequency=db.StringProperty(required=False)
    repeats_weekday=db.IntegerProperty(required=False)
    #repeats_setpos=db.IntegerProperty(required=False)
    repeats_monthday=db.IntegerProperty(required=False)

    def __unicode__(self):
        return "%s: %s" %(self.local_start.date().strftime("%a %b %d"), self.title)

    @DerivedProperty
    def local_start(self):
        if self.start.tzinfo == None:
            ls= utc.localize(self.start).astimezone(self.site.tz)
            return ls.replace(tzinfo=None)
        else:
            return self.start.astimezone(self.site.tz) + self.site.tz.utcoffset(self.site.tz)
    
    @DerivedProperty    
    def local_end(self):
        if self.end.tzinfo == None:
            ls= utc.localize(self.end).astimezone(self.site.tz)
            return ls.replace(tzinfo=None)
        else:
            return self.end.astimezone(self.site.tz) + self.site.tz.utcoffset(self.site.tz)
        
        
    @DerivedProperty
    def multiday(self):
         return ((self.local_start.date() < self.local_end.date()) and  (self.local_end -self.local_start) > timedelta(1))
        
    @DerivedProperty
    def allday(self):
        return ((self.local_start.time() == time(0) and self.local_end.time() == time(0)))
    
    @DerivedProperty
    def continues(self):
        if self.multiday:
            rule=rrule(DAILY, dtstart=self.local_start, until=self.local_end)
            return [str(dt.date()) for dt in list(rule)]
        else:
            return None
    
    
    @DerivedProperty
    def repeats_setpos(self):
        month_start=(self.local_start+relativedelta(day=1))
        weekday=(MO,TU,WE,TH,FR,SA,SU)[self.local_start.weekday()]
        tests=[(-1,month_start+relativedelta(day=31,weekday=weekday(-1))),
                (1,month_start+relativedelta(day=1,weekday=weekday(1))),
                (2,month_start+relativedelta(day=1,weekday=weekday(2))),
                (3,month_start+relativedelta(day=1,weekday=weekday(2))),]
        
        for pos, d in tests:
            logging.warning("comparing %s and %s" %(str(d),str(self.local_start.date()) ))
            if self.local_start.date()==d.date(): return pos
    
    
    @property
    def event_link(self):
        return self.link    
    
    @property
    def item_pubdate(self):
        return self.approved_on
    
    
    def copy(self, rule):
        copies=[]
        delta=self.end-self.start
        #search_after=utc.localize(datetime.now())
        logging.warning(rule)
        for dt in rule[1:6]:
            if not (dt.date() > self.local_start.date()): continue 
            logging.warning(dt)
            new_start=self.site.tz.localize(self.local_start.replace(tzinfo=None)).replace(dt.year,dt.month,dt.day)
            e=Event(parent=self,key_name=dt.strftime("%Y%m%j"),
            title = self.title,
            start= new_start,
            end=new_start+delta,
            location=self.location,
            link=self.link,
            description=self.description,
            cost=self.cost,
            site=self.site,
            sort_dt=self.sort_dt,
            status=self.status,
            tags=self.tags,
            credit_name=self.credit_name,
            credit_link=self.credit_link,
            last_seen=datetime.now()  
            )
            copies.append(e)
        return copies
    
    
    def check_scores(self):
        if (self.approved_on or (self.score > 2)):
            pass
    
    
    
    @classmethod
    def from_gdata(cls,gevent, source):
            #logging.warning(type(parser.parse(gevent.when[0].start_time)))
            dtstart=parser.parse(gevent.when[0].start_time)
            
            dtend=parser.parse(gevent.when[0].end_time)
            summary=gevent.title.text
            
            location= gevent.where[0].value_string or None
            link= source.source_link
            uid=gevent.id.text
            key_name=uid
            #first check for duplicate key name
            existing_event=Event.get_by_key_name(key_name)
            #fail-over to name and start

            if not existing_event:
                existing_event=source.event_set.filter('title = ', summary).filter('start = ',dtstart).get()


            logging.warning("searched for existing event with key %s, found %s" %(key_name,existing_event))
            if existing_event and source.trusted:
                        existing_event.title=summary or "Untitled Event"
                        existing_event.start=dtstart
                        existing_event.end=dtend
                        existing_event.last_seen=datetime.now()
                        if location:existing_event.location=location
                        if link: existing_event.link=link or source.source_link
                        existing_event.put()
                        return existing_event

            if existing_event and not source.trusted:
                return existing_event

            if source.trusted:
                    status='approved'
                    approved_on=datetime.now()
            else:
                    status='submitted'
                    approved_on=None
            event=Event(key_name=key_name,
                title=summary or "Untitled Event",
                start=dtstart,
                end=dtend,
                site=source.site,
                location=location,
                link=link,
                status=status,
                tags=source.default_tags,
                credit_name=source.name,
                credit_link=source.source_link,
                source=source,
                source_uid=uid,
                approved_on=approved_on,
                last_seen=datetime.now())
                #source_ical_hash=source_ical_hash)
            event.put()
            source.site.expire_assets()
            return event
            
            
    @classmethod
    def from_vcal(cls,vcal, source):
        def start_dt(dateobject):
            if type(dateobject) == datetime: 
                if hasattr (dateobject,'tzinfo') and dateobject.tzinfo:
                    return dateobject
                else:
                    return source.site.tz.localize(dateobject)
            if not dateobject: return None
            return source.site.tz.localize(datetime.combine(dateobject, time(0)))

        def end_dt(dateobject):
            if not dateobject: return None
            if type(dateobject) == datetime:
                    if hasattr (dateobject,'tzinfo') and dateobject.tzinfo:
                        return dateobject
                    else:
                        return source.site.tz.localize(dateobject)


            return source.site.tz.localize(datetime.combine(dateobject, time(0)))
        #logging.warning("hey!")
        parsedCal = vobject.readOne(vcal)
        vevent=parsedCal.vevent
        dtstart=start_dt(vevent.dtstart.value)
        if dtstart < utc.localize(datetime.today()) - timedelta(1):
            return logging.warning("skipping old event with dtstart %s" % dtstart)
        
        
        if (hasattr(vevent,'dtend') and vevent.dtend):
            dtend=(end_dt(vevent.dtend.value) or dtstart)
        else:
            dtend=dtstart
        summary=vevent.summary.value
        location= vevent.getChildValue('location') or None
        link=vevent.getChildValue('url') or source.source_link
        uid=vevent.uid.value or link or str(dtstart)
        key_name="%s-%s-%s"%(source.site.slug, source.slug,uid)
        #first check for duplicate key name
        existing_event=Event.get_by_key_name(key_name)
        #fail-over to name and start
        
        if not existing_event:
            existing_event=source.event_set.filter('title = ', summary).filter('start = ',dtstart).get()


        logging.warning("searched for existing event with key %s, found %s" %(key_name,existing_event))
        if existing_event and source.trusted:
                    existing_event.title=summary or "Untitled Event"
                    existing_event.start=dtstart
                    existing_event.end=dtend
                    existing_event.last_seen=datetime.now()
                    if location:existing_event.location=location
                    if link: existing_event.link=link or source.source_link
                    #existing_event.source_ical_hash=source_ical_hash
                    existing_event.put()
                    return existing_event
                    
        if existing_event and not source.trusted:
            return existing_event
                    
        if source.trusted:
                status='approved'
                approved_on=datetime.now()
        else:
                status='submitted'
                approved_on=None
        event=Event(key_name=key_name,
            title=summary or "Untitled Event",
            start=dtstart,
            end=dtend,
            site=source.site,
            location=location,
            link=link,
            status=status,
            tags=source.default_tags,
            credit_name=source.name,
            credit_link=source.source_link,
            source=source,
            source_uid=uid,
            approved_on=approved_on,
            last_seen=datetime.now())
            #source_ical_hash=source_ical_hash)
        event.put()
        source.site.expire_assets()
        return event

        @classmethod
        def for_site_week(cls,site,day):
            monday=day+relativedelta(weekday=MO(-1))
            sunday=monday+relativedelta(weekday=SU)
コード例 #29
0
ファイル: models.py プロジェクト: frankk00/realtor
class Listing(GeoModel):
  """A location-aware model entities.
  
  See http://nces.ed.gov/ccd/psadd.asp for details on attributes.
  """
  address = db.PostalAddressProperty("Address", required=True)
  price = db.FloatProperty("Price", required=True)
  baths = db.FloatProperty("Baths")
  beds = db.FloatProperty("Beds")
  size = db.FloatProperty("Size")
  description = db.TextProperty("Description")
  propertyType =  db.StringProperty("Property Type", choices=propertyTypes)
  amenities = db.StringListProperty("Amenities")
  author = db.UserProperty("Author", required=True)
  createDate = db.DateTimeProperty("Create Date", required=True, auto_now_add=True)
  lastUpdate = db.DateTimeProperty("Last Update", required=True, auto_now=True)
  tags = db.StringListProperty("Tags")
  portfolio = db.StringProperty("Portfolio Url")
  photo = db.BlobProperty()
  listingAgentName = db.StringProperty("Listing Agent Name")
  listingAgentPhone = db.PhoneNumberProperty("Listing Agent Phone")
  listingAgentEmail = db.EmailProperty("Listing Agent Email");
  listingAgentAddress = db.PostalAddressProperty("Listing Agent Address")
  listingAgentCompany = db.StringProperty("Listing Agent Company")

  def __unicode__(self):
        return "%s %s/%s %s" % (self.address, self.beds. self.baths, self.price)
  
  @staticmethod
  def public_attributes():
    """Returns a set of simple attributes on listing entities."""
    return [
      'address', 'price', 'baths', 'beds', 'size', 'description', 'propertyType', 'listingAgentName', 'listingAgentPhone', 'listingAgentPhone', 'listingAgentCompany', 'listingAgentEmail'
    ]
      
  def _get_author(self):
      return users.get_current_user()
  
  def _set_author(self):
      self.author = users.get_current_user()
      
  author = property(_get_author, _set_author)
    
  def set_location(self):
      logging.info("Set Location for Address: %s" % self.address)
      if self.address:
          r = geocoder.geocode(self.address)
          if not r:
              raise "Cannot find geolocation for address: %s" %s
          pts = r.split(",")
          logging.info("Geocode Lookup Results: %s" % pts)
          if pts and len(pts) >= 2:
              self.location = db.GeoPt(pts[2], pts[3])
              logging.info("Geo Point: %s" % self.location)
              self.update_location()
              
  def getKeyName(self):
      return self.key.name()

  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)
コード例 #30
0
ファイル: __init__.py プロジェクト: bopopescu/FatCatMap-Proto
class CandidatePhysicalAddress(CandidateContact):
    value = db.PostalAddressProperty()