def get (self): tool_user, db_user = ADayThere.tool_user () if not ADayThere.admin_user (db_user): self.response.status = 401 self.response.write ("Unauthorized") return adaythere = ADayThere () adaythere.add_meta_tags ([ { "charset":"UTF-8" }, { "http-equiv":"X-UA-Compatible", "content":"IE=edge" }, { "name":"viewport", "content":"initial-scale=1"} ]) adaythere.add_links ([ { "rel":"stylesheet", "href":"css/bootstrap.css" }, { "rel":"stylesheet", "href":"css/adaythere.css" } ]) adaythere.add_script_tags_for_body ([ { "src":"js/jquery-1.11.0-beta2.js" }, { "src":"js/angular/angular.min.js" }, { "src":"js/angular/angular-route.min.js" }, { "src":"js/ui-bootstrap-tpls-0.10.0.min.js" }, { "src":"js/adaythere.js" } ]) adaythere.open_element ("header", {"id":"page_header"}) adaythere.open_element ("h1", {"id":"page_heading"}, "A Day There - Administration Page") adaythere.close_element ("h1") adaythere.open_element ("nav") adaythere.append_to_element ("") adaythere.close_element ("nav") adaythere.close_element ("header") adaythere.open_element ("section", {"ng-controller":"adminCtrl", "style":"width:600px;margin:0px auto;"}) adaythere.open_element ("div", {"id":"admin_profile_div"}) type = self.request.get ('type', default_value=None) if type is not None: if type == 'profiles': self.get_profile_form (adaythere) elif type == 'days': self.get_days_form (adaythere) adaythere.close_element ("div") adaythere.close_element ("section") adaythere.open_element ("footer", {"id":"page_footer"}) adaythere.open_element ("p", None, "© 2014 SoftSprocket") adaythere.close_element ("p") adaythere.close_element ("footer") self.response.status = 200 self.response.write (adaythere.get ())
def post(self): tool_user, db_user = ADayThere.tool_user() if not tool_user: self.response.status = 401 return data = json.loads(self.request.body) day = Day.query_user_title(db_user.user_id, data["title"]).get() KeywordsDayList.delete_keywords(day) day.full_locality = data["full_locality"] day.title = data["title"] day.description = data["description"] if isinstance(data["keywords"], basestring): if "," in data["keywords"]: day.keywords = data["keywords"].split(",") else: day.keywords = data["keywords"].split(" ") else: day.keywords = data["keywords"] for keyword in day.keywords: Keywords.add_if_missing(keyword) day.places = [] for place in data["places"]: p = Place() p.name = place["name"] p.comment = place["comment"] p.location = Location() p.location.latitude = str(place["location"]["latitude"]) p.location.longitude = str(place["location"]["longitude"]) p.location.vicinity = place["vicinity"] day.places.append(p) day.photos = [] for photo in data["photos"]: day_photo = DayPhoto() day_photo.title = photo["title"] day_photo.description = photo["description"] day.photos.append(day_photo) photo_query = Photos.query_photo(db_user.user_id, photo["title"]) pq = photo_query.get() cnt = pq.used_by.count(day.title) if cnt == 0: pq.used_by.append(day.title) day.put() KeywordsDayList.add_keywords(day) Words.update_words(day.title, day.description, day.key, day.full_locality) self.response.status = 200
def delete(self): tool_user, db_user = ADayThere.tool_user() if not tool_user: self.response.status = 401 return title = self.request.get("title") day = Day.query_user_title(db_user.user_id, title).get() for photo in day.photos: photo_query = Photos.query_photo(db_user.user_id, photo.title) pq = photo_query.get() try: index = pq.index(day.title) day.title.pop(index) except: pass pq.key.delete() day.key.delete() KeywordsDayList.delete_keywords(day) Words.delete_words(day.key) self.response.status = 200
def put (self): logged_in_user, commenters_id = ADayThere.tool_user () if not logged_in_user: self.response.status = 401 return data = json.loads (self.request.body) print "DATA", data userid = data.get ('userid', None) title = data.get ('title', None) review = data.get ('rating', 1) if title is None or userid is None: self.response.status = 401 return prev_comment = UserComment.query_previous_comment (commenters_id.name, userid, title).get () if prev_comment is not None: self.response.status = 409 self.response.write (json.dumps ({'rating': prev_comment.rating, 'title': prev_comment.title})) return day = Day.query_user_title (userid, title).get () if day is None: self.response.status = 403 return new_comment = UserComment () new_comment.commenters_name = commenters_id.name new_comment.userid = userid new_comment.title = title new_comment.text = data.get ('text', None) new_comment.rating = review new_comment.put () if day.numberOfReviews == None or day.numberOfReviews == 0: day.numberOfReviews = 1; day.averageReview = review; else: rev = (day.numberOfReviews * day.averageReview) + review day.numberOfReviews = day.numberOfReviews + 1 day.averageReview = rev / day.numberOfReviews day.put () self.response.write (json.dumps ({'numberOfReviews': day.numberOfReviews, 'averageReview': day.averageReview, 'review': new_comment.to_dict ()})); self.response.status = 200
def get (self): tool_user, db_user = ADayThere.tool_user () if not tool_user: self.response.status = 401 return action = self.request.get ('action'); if action is None: self.response.status = 401 return if (action == 'count'): count = 0 query = Photos.query_user_id (db_user.user_id) if query is not None: count = query.count () res = json.dumps ({ "count": count }) self.response.write (res) return elif (action == 'img'): title = self.request.get ('title', None) if title is None: self.response.status = 401 return photo_query = Photos.query_photo (db_user.user_id, title) photo = photo_query.get () if photo is None: self.response.status = 404 return self.response.headers['Content-Type'] = 'image/png' self.response.write (photo.photo) return elif (action == 'list'): list_query = Photos.query_user_id (db_user.user_id) if list_query is None: self.response.status = 404 return titles = [] photos = list_query.fetch () for photo in photos: d = {} d['title'] = photo.title; d['used_by'] = photo.used_by; titles.append (d) self.response.write (json.dumps (titles)) return
def get (self): tool_user, db_user = ADayThere.tool_user () if not tool_user or not ADayThere.admin_user (db_user): self.response.status = 401 self.response.write ("Unauthorized") return query = User.query () if 'name' in self.request.GET.keys (): name = self.request.GET['name'] if name != '': query = query.filter (User.name == name) if 'email' in self.request.GET.keys (): email = self.request.GET['email'] if email != '': query = query.filter (User.email == email) if 'user_id' in self.request.GET.keys (): uid = self.request.GET['user_id'] if uid != '': query = query.filter (User.user_id == uid) limit = self.request.get ('limit', None) if limit is None: limit = ProfilesHandler.max_limit cursor = ndb.Cursor (urlsafe=self.request.get ('cursor')) users, cursor, more = query.fetch_page (int (limit), start_cursor=cursor) users_arr = [] for each in users: u = self.__build_user (each) users_arr.append (u) safe_cursor = '' if cursor: safe_cursor = cursor.urlsafe () resp_obj = { "users": users_arr, "cursor": safe_cursor, "more": more } resp = json.dumps (resp_obj) self.response.write (resp)
def get (self): tool_user, db_user = ADayThere.tool_user () if not ADayThere.admin_user (db_user): self.response.status = 401 self.response.write ("Unauthorized") return query = Day.query () if 'name' in self.request.GET.keys (): name = self.request.GET['name'] if name != '': query = query.filter (Day.name == name) if 'title' in self.request.GET.keys (): title = self.request.GET['title'] if title != '': query = query.filter (Day.title == title) if 'locale' in self.request.GET.keys (): locale = self.request.GET['locale'] if locale != '': query = query.filter (Day.full_locality == locale) limit = self.request.get ('limit', None) if limit is None: limit = DaysHandler.max_limit cursor = ndb.Cursor (urlsafe=self.request.get ('cursor')) days, cursor, more = query.fetch_page (int (limit), start_cursor=cursor) days_arr = [] for each in days: d = self.__build_day (each) days_arr.append (d) safe_cursor = '' if cursor: safe_cursor = cursor.urlsafe () resp_obj = { "days": days_arr, "cursor": safe_cursor, "more": more } resp = json.dumps (resp_obj) self.response.write (resp)
def get(self): tool_user, db_user = ADayThere.tool_user() if not tool_user: self.response.status = 401 return days = [] data = Day.query_user(db_user.user_id).fetch() for each in data: days.append(json.dumps(each.to_dict())) self.response.write(json.dumps(days))
def __init__(self, db_user): admin_menu = "" tool_user, holder = ADayThere.tool_user() if ADayThere.admin_user(db_user): admin_menu = """ <li class="dropdown" ng-controller="adminCtrl"> <a href="/admin" class="dropdown-toggle"> Admin </a> <ul class="dropdown-menu adt-nav-menu-button"> <a href="/admin?type=profiles">profiles</a> <a href="/admin?type=days">days</a> </ul> </li> """ self.html = """ <li class="dropdown" ng-controller="loginCtrl"> <a href ng-click="googlelogout()" class="dropdown-toggle"> Logout </a> </li> <li class="dropdown" ng-controller="profileCtrl"> <a href class="dropdown-toggle" id="profile_ctrl_menu_toggle"> {0} </a> <ul id="tool_user_related_menu" class="dropdown-menu adt-nav-menu-button"> """.format( db_user.name ) if tool_user: self.html += LoggedInNavView.tool_user_menus() else: self.html += LoggedInNavView.non_tool_user_menus() self.html += """ </ul> </li> {0} {1} {2} <a href popover-placement="bottom" popover-trigger="mouseenter" popover="Click links to see drop down menus">?</a> """.format( get_help_menu(), get_contact_menu(), admin_menu )
def get (self): logged_in_user, commenters_id = ADayThere.tool_user () userid = self.request.get ('userid', None) title = self.request.get ('title', None) limit = self.request.get ('limit', 20) cursor = self.request.get ('cursor', None) if title is None or userid is None: self.response.status = 401 return json_comments = [] if commenters_id is not None: prev_comment = UserComment.query_previous_comment (commenters_id.name, userid, title).get () if prev_comment is not None: json_comments.append (json.dumps (prev_comment.to_dict ())) comments_query = UserComment.query_comments (userid, title) if cursor is not None: comments, cursor, more = comments_query.fetch_page (limit, start_cursor = cursor) else: comments, cursor, more = comments_query.fetch_page (limit) for each in comments: if prev_comment is None or each.commenters_name != prev_comment.commenters_name: json_comments.append (json.dumps (each.to_dict ())) return_vals= { 'comments': json_comments, 'cursor': None, 'more': more }; if cursor is not None: return_vals['cursor'] = cursor.urlsafe() self.response.write (json.dumps (return_vals)) if prev_comment is not None: self.response.status = 201 else: self.response.status = 200
def delete (self): tool_user, db_user = ADayThere.tool_user () if not tool_user: self.response.status = 401 return titlestr = self.request.get ("titles", None) used_by = self.request.get ("used_by", None) if titlestr is None: self.response.status = 401 return titles = titlestr.split (",") if used_by is not None: photos = Photos.query (Photos.user_id == db_user.user_id, Photos.title.IN (titles), Photos.used_by == used_by).fetch (keys_only=True) else: photos = Photos.query (Photos.user_id == db_user.user_id, Photos.title.IN (titles)).fetch (keys_only=True) ndb.delete_multi (photos)
def put (self): tool_user, db_user = ADayThere.tool_user () if not tool_user: self.response.status = 401 return data = self.request.body lst = json.loads (data) entities = [] for p in lst: photo = Photos () photo.user_id = db_user.user_id photo.title = p['title'] decoded = p['url'].decode ('base64') photo.photo = decoded entities.append (photo) ndb.put_multi (entities) self.response.status = 200
def post (self): tool_user, db_user = ADayThere.tool_user () if not ADayThere.admin_user (db_user): self.response.status = 401 self.response.write ("Unauthorized") return sent_day = json.loads (self.request.body) day_query = Day.query_user_title (sent_day['userid'], sent_day['title']) day = day_query.get () if day is None: self.response.status = 404 self.response.write ("Not Found") return day.key.delete () self.response.status = 200 self.response.write ("OK")
def post (self): tool_user, db_user = ADayThere.tool_user () if not tool_user or not ADayThere.admin_user (db_user): self.response.status = 401 self.response.write ("Unauthorized") return user = json.loads (self.request.body) record = User.query_user_id (user['user_id']) if 'type' not in self.request.GET.keys (): self.response.status = 400 else: tp = self.request.GET['type'] if tp == 'ban': record.banned = user['banned'] record.put () self.response.status = 200 else: self.response.status = 400