-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathmodels.py
91 lines (72 loc) · 2.23 KB
/
models.py
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
86
87
88
89
#!/usr/bin/env python
# encoding: utf-8
"""
models.py
Created by David Ackerman & Sweta Vajjhala on 2010-10-16.
Copyright (c) 2010 __MyCompanyName__. All rights reserved.
"""
import re
from google.appengine.ext import db
class Company(db.Model):
name = db.StringProperty()
urlname = db.StringProperty()
industry = db.StringProperty()
url = db.StringProperty()
@staticmethod
def UrlName(name):
name = str(name)
return name.lower().replace(' ','-').translate(None, '.,?!')
def GetReviews(self, order=None):
query = Review.all().filter('company = ', self)
if order:
query = query.order(order)
reviews = []
for entry in query:
reviews.append(entry)
return reviews
def GetRating(self):
reviews = self.GetReviews()
total = 0.0
count = 0
for review in reviews:
if review.rating:
total += review.rating.overall or 0
count += 1
if not count:
return 0
return total / count
def SetUrlName(self):
if self.name:
self.urlname = Company.UrlName(self.name)
def put(self):
self.SetUrlName()
return super(Company, self).put()
rating = property(GetRating)
class Rating(db.Model):
overall = db.IntegerProperty()
salary = db.IntegerProperty()
benefits = db.IntegerProperty()
growth = db.IntegerProperty()
peers = db.IntegerProperty()
environment = db.IntegerProperty()
location = db.IntegerProperty()
def WeightedAverage(self):
num_ratings = 6
return (self.GetValueOrDefault(self.salary) +
self.GetValueOrDefault(self.benefits) +
self.GetValueOrDefault(self.growth) +
self.GetValueOrDefault(self.peers) +
self.GetValueOrDefault(self.environment) +
self.GetValueOrDefault(self.location)) / num_ratings
def GetValueOrDefault(self, value):
default = Rating.GetDefaultRating()
return value if value else default
@staticmethod
def GetDefaultRating():
return 3
class Review(db.Model):
author = db.UserProperty()
date = db.DateTimeProperty(auto_now_add=True)
company = db.ReferenceProperty(Company)
text = db.StringProperty(multiline=True)
rating = db.ReferenceProperty(Rating)