From a556ed35202b7c8a433c739807ec9cee2e8ef9b6 Mon Sep 17 00:00:00 2001 From: Nikhil Rao Date: Thu, 26 Aug 2010 19:07:29 -0700 Subject: [PATCH] Add generic populate object form; convert submit listing handlers to use that --- viper/models.py | 48 +++++++++++++++++----------------- viper/templates/apartment/listing.html | 2 +- viper/templates/apartment/submit.html | 2 +- viper/web.py | 16 ++++-------- 4 files changed, 31 insertions(+), 37 deletions(-) diff --git a/viper/models.py b/viper/models.py index 7ac464c..87dfbde 100644 --- a/viper/models.py +++ b/viper/models.py @@ -1,20 +1,11 @@ from google.appengine.ext import db -class Listing(db.Model): +class City(db.Model): """ - Represents an apartment listing object. + Represents a city. A city consists of a list of locations (reference backproperty, city.location_set). """ - title = db.StringProperty(required=True) - description = db.TextProperty(required=True) - rent = db.IntegerProperty(required=True) - type = db.StringProperty() - address = db.StringProperty(multiline=True, required=True) - location = db.ReferenceProperty(Location) - date_available = db.DateTimeProperty() - viewing_scheduler = db.ReferenceProperty(Scheduler) - amenities = db.StringListProperty() - broker = db.ReferenceProperty(Broker) - date_submitted = db.DateTimeProperty(auto_now_add=True) + slug = db.StringProperty(required=True) + name = db.StringProperty(required=True) class Location(db.Model): """ @@ -24,13 +15,6 @@ class Location(db.Model): area = db.StringProperty(required=True) city = db.ReferenceProperty(City) -class City(db.Model): - """ - Represents a city. A city consists of a list of locations (reference backproperty, city.location_set). - """ - slug = db.StringProperty(required=True) - name = db.StringProperty(required=True) - class User(db.Model): """ Represents an enduser. @@ -38,7 +22,7 @@ class User(db.Model): This is a shell for users.User for use within viper. """ user = db.UserProperty() - favorites = db.ListProperty(Listing) + favorites = db.ListProperty(db.Key) class Broker(db.Model): """ @@ -62,6 +46,22 @@ class Scheduler(db.Model): """ Represents the viewing scheduler. """ - slots = db.ListProperty(TimeSlot) - busy_slots = db.ListProperty(TimeSlot) - available_slots = db.ListProperty(TimeSlot) + slots = db.ListProperty(db.Key) + busy_slots = db.ListProperty(db.Key) + available_slots = db.ListProperty(db.Key) + +class Listing(db.Model): + """ + Represents an apartment listing object. + """ + title = db.StringProperty(required=True) + description = db.TextProperty() + rent = db.IntegerProperty(required=True) + type = db.StringProperty() + address = db.StringProperty(multiline=True, required=True) + location = db.ReferenceProperty(Location) + date_available = db.DateTimeProperty() + viewing_scheduler = db.ReferenceProperty(Scheduler) + amenities = db.StringListProperty() + broker = db.ReferenceProperty(Broker) + date_submitted = db.DateTimeProperty(auto_now_add=True) diff --git a/viper/templates/apartment/listing.html b/viper/templates/apartment/listing.html index ede7864..b58a51d 100644 --- a/viper/templates/apartment/listing.html +++ b/viper/templates/apartment/listing.html @@ -10,7 +10,7 @@
{{ listing.title }}
{{ listing.address }}
{{ listing.rent }}
-
Created on {{ listing.date }}
+
Created on {{ listing.date_submitted }}
{% endfor %} {% endblock %} diff --git a/viper/templates/apartment/submit.html b/viper/templates/apartment/submit.html index fa948c3..b9ffca3 100644 --- a/viper/templates/apartment/submit.html +++ b/viper/templates/apartment/submit.html @@ -8,7 +8,7 @@

Input Form

-
Listing Title
+
Title
Address
diff --git a/viper/web.py b/viper/web.py index b5c351d..ccce870 100644 --- a/viper/web.py +++ b/viper/web.py @@ -7,6 +7,9 @@ from google.appengine.ext import webapp from google.appengine.ext.webapp import template from google.appengine.ext.webapp.util import run_wsgi_app +import forms +import models + class MainPage(webapp.RequestHandler): def get(self): user = users.get_current_user() @@ -27,15 +30,9 @@ class UserPage(webapp.RequestHandler): self.response.out.write('

User Page

') self.response.out.write('Logout' % users.create_logout_url('/')) -class Listing(db.Model): - title = db.StringProperty() - address = db.StringProperty(multiline=True) - rent = db.IntegerProperty() - date = db.DateTimeProperty(auto_now_add=True) - class ListingPage(webapp.RequestHandler): def get(self): - listings = Listing.all() + listings = models.Listing.all() template_config = { 'user': users.get_current_user(), 'login_url': users.create_login_url(self.request.uri), @@ -54,10 +51,7 @@ class SubmitListingPage(webapp.RequestHandler): self.response.out.write(template.render('templates/apartment/submit.html', template_config)) def post(self): - listing = Listing() - listing.title = self.request.get('title') - listing.address = self.request.get('address') - listing.rent = int(self.request.get('rent')) + listing = forms.populate_listing(self.request) listing.put() self.redirect('/listing') -- 2.11.4.GIT