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
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)
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()
class User(db.Model, Root.Handler): _address = db.TextProperty() # Check if Address property exists _email = db.EmailProperty() _firstname = db.StringProperty() _lastname = db.StringProperty() _phoneNumber = db.PhoneNumberProperty() _campaigns = db.ReferenceProperty(campaign.Campaign, collection_name="campaigns")
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()
class Player(db.Model): """Object representing a player for Esri Hockey""" fname = db.StringProperty() lname = db.StringProperty() email = db.EmailProperty() goalie = db.BooleanProperty() inThisWeek = db.BooleanProperty() sub = db.BooleanProperty() team = db.StringProperty() phone = db.PhoneNumberProperty() def full_name(): return self.fname + " " + self.lname def toJson(self): json = {} json['fname'] = self.fname json['lname'] = self.lname json['email'] = self.email json['goalie'] = 'true' if self.goalie else 'false' json['inThisWeek'] = 'true' if self.inThisWeek else 'false' json['sub'] = 'true' if self.sub else 'false' json['team'] = self.team if self.team != "" else None json['phone'] = self.phone if self.phone else None return json
class Booking(db.Model): booking_reference = db.StringProperty(required=True) property = db.StringProperty(required=True) first_name = db.StringProperty(required=True) last_name = db.StringProperty(required=True) email = db.EmailProperty(required=True) phone = db.PhoneNumberProperty(required=True) notes = db.TextProperty(required=False) booking_date = db.DateTimeProperty(auto_now_add=True) source = db.StringProperty(required=True) arrival_date = db.DateProperty(required=True) departure_date = db.DateProperty(required=True) number_of_people = db.IntegerProperty(required=True) gross = db.FloatProperty(required=True) is_discount = db.BooleanProperty(required=True) commission = db.FloatProperty(required=True) due_date = db.DateProperty(required=True) is_commission = db.BooleanProperty(required=True) is_greeting = db.FloatProperty(required=True) is_laundry = db.FloatProperty(required=True) is_cleaning = db.FloatProperty(required=True) is_con = db.FloatProperty(required=True) net = db.FloatProperty(required=True) # TODO: Change the below to required=True booking_fee = db.FloatProperty(required=False) house_owner_fee = db.FloatProperty(required=False) total_fees = db.FloatProperty(required=False) owner_income = db.FloatProperty(required=False)
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)
class User(db.Model): # username = db.StringProperty() phone = db.PhoneNumberProperty() pw_hash = db.StringProperty() @classmethod def by_id(cls, uid): return User.get_by_id(uid, parent=users_key()) # @classmethod # def by_name(cls, name): # u = User.all().filter('username ='******'phone =', phone).get() return u @classmethod def register(cls, phone, pw): pw_hash = make_pw_hash(phone, pw) return User(parent=users_key(), phone=phone, pw_hash=pw_hash) @classmethod def login(cls, phone, pw): u = cls.by_phone(phone) if u and valid_pw(phone, pw, u.pw_hash): return u
class User(db.Model): firstName = db.StringProperty() lastName = db.StringProperty() fullName = db.StringProperty() lcaseName = db.StringProperty() passwordHash = db.StringProperty() #Permissions key: # 0: Public Restricted # 1: Read-only Member, can read restricted content # 2: Read-Write Member, can create and edit content, but only if he/she created it # 3: Admin, can read, create, and edit everything #TODO Remove this, groups are enough now permissions = db.IntegerProperty() groups = db.StringProperty() keyHash = db.StringProperty() email = db.EmailProperty() #TODO This can also be done better with groups subscribed = db.BooleanProperty() number = db.PhoneNumberProperty() def isGroup(self, group): if self.groups is not None: split = self.groups.split(",") [x.strip().lower() for x in split] if group.strip().lower() in split: return True else: return False else: return False
class Dealer(db.Model): name = db.StringProperty() url = db.LinkProperty() address = db.PostalAddressProperty() phone = db.PhoneNumberProperty() cars = db.ListProperty(db.Key) area = db.StringProperty()
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
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()
class Shop(GeoModel): """TODO: Describe Shop""" Company = db.ReferenceProperty(reference_class=Company, collection_name="company_shops") Name= db.StringProperty(required=True, ) ContactPhone= db.PhoneNumberProperty() WorkingDays= db.StringListProperty(required=True, )#choices=[x[0] for x in Days]) NormalHoursStart= db.TimeProperty(required=True, default=time(8,0), ) NormalHoursEnd= db.TimeProperty(required=True, default=time(20,0) ,) WeekendHoursStart= db.TimeProperty(required=True, default=time(10, 00), ) WeekendHoursEnd= db.TimeProperty(required=True, default=time(22,00), ) IsWorkingOnWeekend= db.BooleanProperty(default=True, ) IsWorkingSunday= db.BooleanProperty(default=False, ) DateAdded= db.DateProperty(auto_now_add=True) DateModified = db.DateProperty(auto_now=True) def put(self): self.update_location() super(Shop, self).put() @classmethod def CreateNew(cls ,name,location,contactphone,workingdays,normalhoursstart,normalhoursend,weekendhoursstart,weekendhoursend,isworkingonweekend,isworkingsunday , _isAutoInsert=False): result = cls( Name=name, Location=location, ContactPhone=contactphone, WorkingDays=workingdays, NormalHoursStart=normalhoursstart, NormalHoursEnd=normalhoursend, WeekendHoursStart=weekendhoursstart, WeekendHoursEnd=weekendhoursend, IsWorkingOnWeekend=isworkingonweekend, IsWorkingSunday=isworkingsunday,) if _isAutoInsert: result.put() return result def __str__(self): #TODO: Change the method to represent something meaningful return self.Name+"("+self.Company.Name+")"+str(self.location)
class Phone(db.Model): date_added = db.DateTimeProperty(auto_now_add=True) phone = db.PhoneNumberProperty() # Напоминания отправляются только на подтверждённые номера. confirmed = db.BooleanProperty() # Код подтверждения. Сохраняется при выдаче, после проверки очищается. confirm_code = db.IntegerProperty()
class Captain(BaseModel): """A work captain.""" name = db.StringProperty(required=True) # "Joe User" # Using the UserProperty seems to be more hassle than it's worth. # I was getting errors about users that didn't exist when loading sample # data. email = db.EmailProperty() # "*****@*****.**" rooms_id = db.StringProperty() phone1 = db.PhoneNumberProperty() phone1.verbose_name = 'Preferred Phone (deprecated)' phone2 = db.PhoneNumberProperty() phone2.verbose_name = 'Backup Phone (deprecated)' phone_mobile = db.StringProperty() phone_work = db.StringProperty() phone_home = db.StringProperty() phone_fax = db.StringProperty() phone_other = db.StringProperty() tshirt_size = db.StringProperty(choices=('Small', 'Medium', 'Large', 'X-Large', '2XL', '3XL')) notes = db.TextProperty() last_welcome = db.DateTimeProperty() modified = db.DateTimeProperty(auto_now=True) last_editor = db.UserProperty(auto_current_user=True) search_prefixes = db.StringListProperty() def put(self, *a, **k): self.email = self.email.lower() prefixes = set() if self.name: prefixes.add(self.name) for part in self.name.split(): prefixes.add(part) for i in xrange(1, 7): prefixes.add(part[:i]) if self.email: prefixes.add(self.email) for i in xrange(1, 7): prefixes.add(self.email[:i]) self.search_prefixes = [p.lower() for p in prefixes] super(BaseModel, self).put(*a, **k) def __unicode__(self): return self.name def Label(self): return "%s <%s>" % (self.name, self.email)
class Congressman(db.Model): name = db.StringProperty() district = db.StringProperty() party = db.StringProperty() email = db.StringProperty() phone_number = db.PhoneNumberProperty() twitter = db.StringProperty() created_on = db.DateTimeProperty(auto_now_add=1)
class LicensePlates(db.Model): user_id = db.IntegerProperty() unique_plate = db.StringProperty() state = db.StringProperty() plate = db.StringProperty() phone = db.PhoneNumberProperty() created = db.DateTimeProperty(auto_now_add=True) last_modified = db.DateTimeProperty(auto_now=True)
class Watcher(db.Model): user = db.UserProperty() mobile = db.PhoneNumberProperty() code = db.StringProperty() date = db.DateTimeProperty(auto_now_add=True) websites = db.ListProperty(db.Key) ports = db.ListProperty(db.Key) wgets = db.ListProperty(db.Key)
class Phonebook(db.Model): #id_ = db.IntegerProperty(required=True) timestamp_ = db.DateTimeProperty(auto_now_add=True) name = db.StringProperty(required=True) phonenumber = db.PhoneNumberProperty(required=False) email = db.EmailProperty(required=False) description = db.StringProperty(multiline=True) """ will be trying for auto_id
class Business(geo.geomodel.GeoModel): user_id = db.StringProperty(required=True) address = db.StringProperty(required=True) name = db.StringProperty(required=True) phone_number = db.PhoneNumberProperty() boo = db.IntegerProperty() open_time = db.TimeProperty() close_time = db.TimeProperty()
class WebsiteElem(db.Model): """Models global site data store.""" title = db.StringProperty() subtitle = db.StringProperty() welcome = db.TextProperty() email = db.EmailProperty() phone = db.PhoneNumberProperty() address = db.StringProperty() categories = db.ListProperty(str)
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()
class Contact(db.Model): id = db.IntegerProperty(required=True) timestamp = db.DateTimeProperty(auto_now_add=True) name = db.StringProperty() email = db.EmailProperty() phone = db.PhoneNumberProperty() street = db.StringProperty() city = db.StringProperty() state = db.StringProperty() zip = db.StringProperty()
class Volunteer(db.Model): first_name = db.StringProperty(required=True) last_name = db.StringProperty(required=True) phone = db.PhoneNumberProperty(required=False) email = db.EmailProperty(required=False) trainee_input = db.StringProperty(required=False) project = db.StringProperty(required=True) cos = db.DateTimeProperty(required=False) sitelocation = db.TextProperty(required=False) notes = db.TextProperty(required=False)
class Contact(db.Model): """Data model class to hold user objects.""" handle = db.StringProperty(required=True) firstname = db.StringProperty() lastname = db.StringProperty() phone_home = db.PhoneNumberProperty() phone_office = db.PhoneNumberProperty() phone_mobile = db.PhoneNumberProperty() email = db.EmailProperty() status = db.TextProperty() avatar = db.BlobProperty() deleted = db.BooleanProperty() updated = db.DateTimeProperty(auto_now_add=True) @classmethod def get_contact_info(cls, username): if username not in (None, ''): query = cls.gql('WHERE handle = :1', username) return query.get() return None @classmethod def get_contact_last_updated(cls, username): if username not in (None, ''): query = cls.gql('WHERE handle = :1', username) return query.get().updated return None @classmethod def get_contact_id(cls, username): if username not in (None, ''): query = cls.gql('WHERE handle = :1', username) return query.get().key().id() return None @classmethod def get_contact_status(cls, username): if username not in (None, ''): query = cls.gql('WHERE handle = :1', username) return query.get().status return None
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()
class Reports(db.Model): user_id = db.StringProperty() nickname = db.StringProperty() unique_plate = db.StringProperty() state = db.StringProperty() plate = db.StringProperty() phone = db.PhoneNumberProperty() status = db.StringProperty() incident = db.StringProperty() notes = db.StringProperty() created = db.DateTimeProperty(auto_now_add=True)
class Billboard(db.Model): created = db.DateTimeProperty(auto_now_add=True) title = db.StringProperty() phone = db.PhoneNumberProperty() email = db.EmailProperty() image = db.BlobProperty() image_thumb = db.BlobProperty() image_medium = db.BlobProperty() image_small = db.BlobProperty() ads = db.ListProperty(db.Key) sponsors = db.ListProperty(db.Key)
class Doctor(db.Model): first_name = db.StringProperty(required=True) last_name = db.StringProperty(required=True) phone = db.PhoneNumberProperty(required=True) hospital = db.StringProperty() def to_message(self): """ Turns the Doctor entity into a ProtoRPC object. """ return DoctorPut(email=self.key().name(), first_name=self.first_name, last_name=self.last_name, phone=self.phone, hospital=self.hospital) def get_patients(self): """ Builds a message consisting of all the doctor's patients Returns: An instance of PatientListResponse """ patients = [patient.to_message() for patient in self.patient_set] return PatientListResponse(patients=patients) def get_alerts(self): """ Builds a message consisting of all the doctor's patients alerts Returns: An instance of AlertListResponse """ alerts = [] for patient in self.patient_set: for alert in patient.alert_set: alerts.append(alert.to_message()) return AlertListResponse(alerts=alerts) @classmethod def put_from_message(cls, message): """ Inserts a doctor into the DB Args: message: A DoctorPut instance to be inserted, note that the email is used as the entity key Returns: The Doctor entity that was inserted. """ new_doctor = cls(key_name=message.email, first_name=message.first_name, last_name=message.last_name, phone=message.phone, hospital=message.hospital) new_doctor.put() return new_doctor