def update_activity(): id = new_activity.get('id') if not id: self.abort(400, 'Scraped post missing id') activity = Activity.get_by_id(id) if activity: # we already have this activity! merge in any new comments. merged_activity = copy.deepcopy(new_activity) existing_activity = json_loads(activity.activity_json) # TODO: extract out merging replies replies = merged_activity.setdefault('object', {}).setdefault( 'replies', {}) gr_source.merge_by_id( replies, 'items', existing_activity.get('object', {}).get('replies', {}).get('items', [])) replies['totalItems'] = len(replies.get('items', [])) # TODO: merge tags too activity.activity_json = json_dumps(merged_activity) else: activity = Activity(id=id, source=source.key, html=self.request.text, activity_json=json_dumps(new_activity)) # store and return the activity activity.put() logging.info(f"Stored activity {id}") self.output(new_activity)
def update_activity(): id = new_activity.get('id') if not id: self.error('Scrape error: post missing id') activity = Activity.get_by_id(id) if activity: # we already have this activity! merge in any new comments and likes merged_activity = copy.deepcopy(new_activity) merged_obj = merged_activity.setdefault('object', {}) existing_activity = json_loads(activity.activity_json) existing_obj = existing_activity.get('object', {}) replies = merged_obj.setdefault('replies', {}) gr_source.merge_by_id( replies, 'items', existing_obj.get('replies', {}).get('items', [])) replies['totalItems'] = len(replies.get('items', [])) gr_source.merge_by_id(merged_obj, 'tags', existing_obj.get('tags', [])) activity.activity_json = json_dumps(merged_activity) else: activity = Activity(id=id, source=source.key, html=request.get_data(as_text=True), activity_json=json_dumps(new_activity)) # store and return the activity activity.put() logger.info(f"Stored activity {id}")
def get(self, *args): respo = self.response.out.write output = self.dbg respo ("<html><head><title>Test</title></head><body>") if (self.request.path.endswith('/clean')): output ("Begin Clean Up") self.cleanUp() output ("Cleaning up done") return output("Now let's go") billList = [('Cort', '75.5'), ('Balls', '15')] output ("BillList: ", billList) allacts = Activity.all() for act in allacts: bill = act.bill for entry in bill: output ("Entry:", entry, ",", lb = False) output() output ("acts:", act.key().id(), "Total Expense:", act.expense, "Expanse Bill: ", bill) mem = Membership.all().get() output ("New activity") act = Activity(name = "test act", duration=2.0, organizer = mem.user, club = mem.club, bill = billList, expense = '100' ) output ("Expense:", act.expense) output ("Bill:", act.bill) output ("Now, put") key = act.put() output ("Act Saved: ", act.is_saved(), "Key is ", key, " Id is", key.id()) respo("</body></html>")
def activities(request): # Function to get all activities and handle POST request to add or edit # an activity response_params = {} response_params['activities'] = models.Activity.all() response_params['activity_form'] = ActivityForm() # If the form is submitted if request.method == "POST": tags = request.POST['tags'].split(',') tag_ids = [] for tag in tags: if tag.strip() != '': t = models.Tag.get_or_insert(key_name=tag) tag_ids.append(t.key()) name = request.POST['name'] price = int(request.POST['price']) duration_min = timedelta(seconds=floatToSeconds(float(request.POST['duration_min']))) duration_max = timedelta(seconds=floatToSeconds(float(request.POST['duration_max']))) # If we got an activity id from the request, we do an update instead of an add if 'activity-id' in request.POST: logging.info('edit an existing activity') activity = Activity.get_by_id(int(request.POST['activity-id'])) activity.name = name activity.price = price activity.duration_min = duration_min activity.duration_max = duration_max activity.tags = tag_ids activity.put() else: activity = Activity(name=name,price=price,duration_min=duration_min,duration_max=duration_max,tags=tag_ids) activity.put() return render_to_response('activities.html', response_params)