def get(self): story=Story().all().latest() msg=toHash(story.mykey) + " " + story.link if not story.tweeted: story.tweeted=True story.save() twitterCron.tweet(msg) else: logging.info('Already tweeted: ' + msg)
def post(self): try: current_app.logger.info("Received StoriesResource POST Request") StatManager.create(request.environ["PATH_INFO"] + " " + request.environ["REQUEST_METHOD"]) story_data = json.loads(request.data) story_created = Story.create( story_data["user_id"], story_data["location"], story_data["visibility"], story_data["title"], story_data["description"], story_data["is_quick_story"], story_data["timestamp"]) current_app.logger.debug("Python Server Response: 200 - %s", story_created) if config.firebase_config.FIREBASE_NOTIFICATIONS_ENABLED is True: try: user = User.get_user_by_id(story_data["user_id"]) if user is not None: user = user["user"] for friend_username in user["friends_usernames"]: try: FirebaseManager.send_firebase_message( user["name"], friend_username, NOTIFICATION_TYPE_STORY_MESSAGE, NOTIFICATION_TYPE_STORY) except UserNotFoundException: pass except UserNotFoundException: pass return make_response(jsonify(story_created), 200) except ValueError: error = "Unable to handle StoriesResource POST Request" current_app.logger.error("Python Server Response: 500 - %s", error) return ErrorHandler.create_error_response(500, error)
def post(self): try: id = self.request.GET['chapter_id'] except: id = None if not id: self.redirect("/error?msg=Key missing for deletion (post).") return user = users.get_current_user() if user: try: chapter = ndb.Key(urlsafe=id).get() story = Story.get_by_id(chapter.story) except: self.redirect("/error?msg=Key was not found for deletion.") return self.redirect("/info?msg=Chapter deleted: " + (story.title + ": " + chapter.title).encode("ascii", "replace") + "&url=/manage_chapters?story_id=" + story.key.urlsafe()) # Remove chapter model.remove_data.remove_chapter(chapter.key) else: self.redirect("/")
def get(self): stories=Story.all().order('-timestamp').fetch(1000, offset=0) for story in stories: story.delete() videos=Video.all().order('-timestamp').fetch(1000, offset=0) for video in videos: video.delete()
def get(self): try: chapter_id = self.request.GET['chapter_id'] except: self.redirect("/error?msg=missing key for modifying") return user = users.get_current_user() if user: user_name = user.nickname() access_link = users.create_logout_url("/") try: chapter = ndb.Key(urlsafe=chapter_id).get() story = Story.get_by_id(chapter.story) except: self.redirect("/error?msg=key does not exist") return template_values = { "info": AppInfo, "user_name": user_name, "access_link": access_link, "story": story, "chapter": chapter, } jinja = jinja2.get_jinja2(app=self.app) self.response.write( jinja.render_template("modify_chapter.html", **template_values)) else: self.redirect("/")
def post(self): try: section_id = self.request.GET['section_id'] except: self.redirect("/error?msg=Key missing for deletion.") return user = users.get_current_user() if user: try: section = ndb.Key(urlsafe=section_id).get() chapter = Chapter.get_by_id(section.chapter) story = Story.get_by_id(chapter.story) except: self.redirect("/error?msg=Key was not found.") return self.redirect("/info?msg=Section deleted: " + story.title.encode("ascii", "replace") + ": " + chapter.title.encode("ascii", "replace") + " - " + str(section.num) + "&url=/manage_sections?chapter_id=" + chapter.key.urlsafe()) # Remove story model.remove_data.remove_section(section.key) else: self.redirect("/")
def setUp(self): super(TestStories, self).setUp() self.resource_name = 'story' self.resources_uri = self.root_uri + 'projects/1/sprints/1/stories' self.single_resource_uri = self.resources_uri + '/1' self.example_resource = Story(title="Test story title", description="some description", points=12, notes='some notes', sprint_id=1, id_=2) self.update_resource = Story(title="Updated test story title", description="some updated description", points=1, notes='some updated notes', sprint_id=1, id_=2)
def get(self): stories=[] for s in Story.all().order('-timestamp').fetch(100): stories.append(s) template_values = { "stories":stories } path = os.path.join(os.path.dirname(__file__), '../html/article.html') shared.render(self, path, template_values)
def patch(self, story_id): try: current_app.logger.info( "Received SingleStoryResource PATCH Request for story: " + str(request.data)) StatManager.create(request.environ["PATH_INFO"] + " " + request.environ["REQUEST_METHOD"]) patch_document = json.loads(request.data) # See http://jsonpatch.com/ for more info story_updated = None if patch_document["path"] == "/reactions" and patch_document[ "op"] == "add": current_app.logger.debug("Add reaction: " + str(patch_document["value"])) story_updated = Story.add_reaction(story_id, patch_document["value"]) if patch_document["path"] == "/reactions" and patch_document[ "op"] == "remove": current_app.logger.debug("Remove reaction: " + str(patch_document["value"])) story_updated = Story.remove_reaction(story_id, patch_document["value"]) if patch_document["path"] == "/comments" and patch_document[ "op"] == "add": current_app.logger.debug("Adding comment to story: " + str(patch_document["value"])) story_updated = Story.add_comment(story_id, patch_document["value"]) current_app.logger.debug("Python Server Response: 200 - %s", story_updated) return make_response(jsonify(story_updated), 200) except ValueError: error = "Unable to handle StoriesResource POST Request" current_app.logger.error("Python Server Response: 500 - %s", error) return ErrorHandler.create_error_response(500, error)
def get(self): stories=[] for s in Story.all().order('-timestamp').fetch(100): stories.append(s) videos=[] for v in Video.all().order('-timestamp').fetch(100): videos.append(v) template_values = { "stories":stories, "videos":videos } path = os.path.join(os.path.dirname(__file__), '../html/index.html') shared.render(self, path, template_values)
def post(self): try: id = self.request.GET['story_id'] except: id = None if not id: self.redirect("/error?msg=missing id for modification") return user = users.get_current_user() story = None if user: # Get story by key try: story = ndb.Key(urlsafe=id).get() except: self.redirect("/error?msg=key does not exist") return story.title = self.request.get("title", "").strip() story.subtitle = self.request.get("subtitle", "").strip() story.summary = self.request.get("summary", "").strip() # Chk if len(story.title) < 1: self.redirect("/error?msg=Aborted modification: missing title") return # Chk title existing_stories = Story.query(Story.title == story.title) if (existing_stories and existing_stories.count() > 0 and existing_stories.get() != story): self.redirect("/error?msg=Story with title \"" + story.title.encode("ascii", "replace") + "\" already exists.") return # Save story.put() self.redirect("/info?msg=Story modified: \"" + story.title.encode("ascii", "replace") + "\"&url=/manage_stories") else: self.redirect("/")
def get(self): user = users.get_current_user() num_stories = len(Story.query().fetch(keys_only=True)) + 1 if user: story = Story() story.user = user.user_id() story.title = "Untitled " + str(num_stories) story.subtitle = "A new story." story.summary = "An awesome story." key = model.story.update(story) self.redirect("/stories/modify?story_id=" + key.urlsafe()) else: self.redirect("/") return
def post(self): try: character_id = self.request.GET['character_id'] except: self.redirect("/error?msg=missing id for modification") return user = users.get_current_user() if user: # Get story by key try: character = ndb.Key(urlsafe=character_id).get() story = Story.get_by_id(character.story) except: self.redirect("/error?msg=key does not exist") return character.name = self.request.get("name", "").strip() character.summary = self.request.get("summary", "").strip() # Chk if len(character.name) < 1: self.redirect("/error?msg=Aborted modification: missing name") return # Chk title existing_characters = Character.query( Character.name == character.name) if (existing_characters and existing_characters.count() > 0 and existing_characters.get() != character): self.redirect("/error?msg=Character with name \"" + character.title.encode("ascii", "replace") + "\" already exists.") return # Save character.put() self.redirect("/info?msg=Character modified: \"" + character.name.encode("ascii", "replace") + "@" + story.title.encode("ascii", "replace") + "\"&url=/manage_characters?story_id=" + story.key.urlsafe()) else: self.redirect("/")
def buildStoryFromString(data, stories): story=findStory(data, stories) if not story: url="http://www.google.com/search?q="+data.replace(' ', '+') logging.info(url) try: raw_data = http.getHttp(url) soup = BeautifulSoup(raw_data) story=None a=soup.find(lambda tag: tag.name=='a' and tag.attrs[0][0]=='href' and not tag.attrs[0][1].startswith('/') and not 'google' in tag.attrs[0][1]) if a and a.text: story=Story() story.deleteFlag=False story.mykey=data story.title='' for c in a.contents: if type(c) == Tag: story.title+=c.text else: story.title+=c story.link=a.attrs[0][1] story.text='' for c in a.parent.contents[4].contents: if type(c) == Tag: story.text+=c.text else: story.text+=c story.put() except DownloadError: #@UndefinedVariable logging.error(url + ' failed to load') ''' scraper=SearchScraper() scraper.feed(raw_data) return scraper.story '''
def get(self): user = users.get_current_user() if user: user_name = user.nickname() try: chapter_id = self.request.GET['chapter_id'] except: self.redirect("/error?msg=Key missing for management.") return try: chapter = ndb.Key(urlsafe=chapter_id).get() story = Story.get_by_id(chapter.story) except: self.redirect("/error?msg=Key was not found.") return sections = Section.query( Section.chapter == chapter.key.id()).order(Section.num) total_stats = count_chapter(chapter.key.id()) access_link = users.create_logout_url("/") template_values = { "info": AppInfo, "user_name": user_name, "access_link": access_link, "story": story, "chapter": chapter, "sections": sections, "total_crs": total_stats["crs"], "total_ws": total_stats["ws"], "total_pgs": total_stats["pgs"] } jinja = jinja2.get_jinja2(app=self.app) self.response.write( jinja.render_template("sections.html", **template_values)) else: self.redirect("/") return
def post(self): try: section_id = self.request.GET['section_id'] except: self.redirect("/error?msg=missing key for modification") return user = users.get_current_user() if user: try: section = ndb.Key(urlsafe=section_id).get() chapter = Chapter.get_by_id(section.chapter) story = Story.get_by_id(chapter.story) except: self.redirect("/error?msg=key does not exist") return section.text = self.request.get("text", "").strip() # Chk if len(section.text) < 1: self.redirect( "/error?msg=Aborted modification: missing section's text") return if section.num < 1: self.redirect( "/error?msg=Aborted modification: missing section's number" ) return # Save model.section.update(section) self.redirect("/info?msg=Section modified: \"" + (story.title + ": " + chapter.title).encode("ascii", "replace") + ": " + str(section.num) + "\"&url=/manage_sections?chapter_id=" + chapter.key.urlsafe()) else: self.redirect("/")
def get(self): try: user_id = request.args.get('user_id') current_app.logger.info( "Received StoriesResource GET Request for User ID: " + user_id) StatManager.create(request.environ["PATH_INFO"] + " " + request.environ["REQUEST_METHOD"]) response = Story.get_by_user(user_id) current_app.logger.debug("Python Server Response: 200 - %s", response) return make_response(jsonify(response), 200) except ValueError: error = "Unable to handle StoriesResource GET Request" current_app.logger.error("Python Server Response: 500 - %s", error) return ErrorHandler.create_error_response(500, error) except UserNotFoundException as e: status_code = 403 message = e.args[0] current_app.logger.error("Python Server Response: %s - %s", status_code, message) return ErrorHandler.create_error_response(status_code, message)
def delete(self, story_id): try: current_app.logger.info( "Received SingleStoryResource DELETE Request for story: " + story_id) StatManager.create(request.environ["PATH_INFO"] + " " + request.environ["REQUEST_METHOD"]) deleted_story = Story.delete(story_id) if deleted_story is None: current_app.logger.debug("Python Server Response: 409 - %s", "No story found with that ID!.") return make_response("No story found with that ID!", 409) else: current_app.logger.debug("Python Server Response: 201 - %s", deleted_story) return make_response(jsonify(deleted_story), 201) except ValueError: error = "Unable to handle SingleFriendshipRequestResource - DELETE Request" current_app.logger.error("Python Server Response: %s - %s", 500, error) return ErrorHandler.create_error_response(500, error)
def get(self): user = users.get_current_user() if user: user_name = user.nickname() stories = Story.query( Story.user == user.user_id()).order(-Story.added) access_link = users.create_logout_url("/") template_values = { "info": AppInfo, "user_name": user_name, "access_link": access_link, "stories": stories } jinja = jinja2.get_jinja2(app=self.app) self.response.write( jinja.render_template("stories.html", **template_values)) else: self.redirect("/") return
def post(self, story_id): try: current_app.logger.info("Received FileResource POST Request") StatManager.create(request.environ["PATH_INFO"] + " " + request.environ["REQUEST_METHOD"]) upload_headers = {'Authorization': 'Bearer {}'.format(APP_SERVER_TOKEN)} uploaded_file = request.files['file'].read() filename = request.form.get('filename') shared_server_upload = requests.post(SHARED_SERVER_FILE_UPLOAD_PATH, files={'file': (filename, uploaded_file)}, headers=upload_headers) current_app.logger.debug("Shared Server Response: %s - %s", shared_server_upload.status_code, shared_server_upload.text) file_data = json.loads(shared_server_upload.text) if shared_server_upload.ok: story_updated = Story.update_file(story_id, file_data['file']['resource']) current_app.logger.debug("Python Server Response: %s - %s", shared_server_upload.status_code, story_updated) return make_response(jsonify(story_updated), 200) return make_response(shared_server_upload.text, shared_server_upload.status_code) except ValueError as ex: error = "Unable to handle FileResource POST Request" + ex current_app.logger.error("Python Server Response: 500 - %s", error) return ErrorHandler.create_error_response(500, error)
def get(self): try: id = self.request.GET['section_id'] except: self.redirect("/error?msg=Key missing for deletion.") return user = users.get_current_user() if user: user_name = user.nickname() access_link = users.create_logout_url("/") try: section = ndb.Key(urlsafe=id).get() chapter = Chapter.get_by_id(section.chapter) story = Story.get_by_id(chapter.story) except: self.redirect("/error?msg=Key was not found.") return template_values = { "info": AppInfo, "user_name": user_name, "access_link": access_link, "story": story, "chapter": chapter, "section": section } jinja = jinja2.get_jinja2(app=self.app) self.response.write( jinja.render_template("delete_section.html", **template_values)) else: self.redirect("/")
def get(self): stories=Story.all().fetch(1000) GTrendCron.doCron(stories) videos=Video.all().fetch(1000) YTrendCron.doCron(videos)
def __init__(self): super(TestDataGenerator, self).__init__() self.users = [ User(email='asdf@asdf', password=HASHED_EXAMPLE_PASSWORD, firstname='Bertrand', lastname='Meier', projects=[], assigned_tasks=[], id_=1), User(email='aaron@richiger', password=HASHED_EXAMPLE_PASSWORD, firstname='Aaron', lastname='Richiger', projects=[], assigned_tasks=[], id_=2), User(email='vimal@chellakudam', password=HASHED_EXAMPLE_PASSWORD, firstname='Vimal', lastname='Chellakudam', projects=[], assigned_tasks=[], id_=3) ] self.projects = [ Project(name='Project 1', description='Some description', start_date=date(2014, 1, 1), end_date=date(2015, 1, 31), status=OPEN, owner=1, invited_devs=[], sprints=[], id_=1), Project(name='Project 2', description='Some description', start_date=date(2014, 1, 1), end_date=date(2015, 1, 31), status=OPEN, owner=1, invited_devs=[], sprints=[], id_=2), Project(name='Project 3', description='Some description', start_date=date(2014, 1, 1), end_date=date(2015, 1, 31), status=OPEN, owner=2, invited_devs=[], sprints=[], id_=3) ] self.messages = [ Message(text='Message 1', timestamp='2012-04-23T18:25:43.511Z', project_id=1, user_id=1, id_=1), Message(text='Message 2', timestamp='2012-04-23T18:26:43.511Z', project_id=1, user_id=2, id_=2), Message(text='Message 3', timestamp='2012-04-23T18:27:43.511Z', project_id=1, user_id=1, id_=3), Message(text='Message 4', timestamp='2012-04-23T18:28:43.511Z', project_id=1, user_id=2, id_=4), ] self.sprints = [ Sprint(name='Sprint 1', start_date=date(2014, 1, 1), end_date=date(2014, 1, 31), status=CLOSED, project_id=1, stories=[], id_=1), Sprint(name='Sprint 2', start_date=date(2014, 12, 1), end_date=date(2014, 12, 31), status=IN_PROGRESS, project_id=1, stories=[], id_=2), Sprint(name='Sprint 3', start_date=date(2015, 1, 1), end_date=date(2015, 1, 31), status=PLANNED, project_id=1, stories=[], id_=3), Sprint(name='Sprint 4', start_date=date(2014, 12, 1), end_date=date(2014, 12, 31), status=IN_PROGRESS, project_id=2, stories=[], id_=4) ] self.stories = [ Story(title='Story 1', description='Story description', points=40, notes='Some note', sprint_id=1, id_=1), Story(title='Story 2', description='Story description', points=50, notes='Some note', sprint_id=1, id_=2), Story(title='Story 3', description='Story description', points=60, notes='Some note', sprint_id=1, id_=3), Story(title='Story 4', description='Story description', points=70, notes='Some note', sprint_id=2, id_=4) ] self.tasks = [ Task(nr=10, description='Task 1', comment='Some comment', status=T_COMPLETED, progress=100, completion_date=date(2014, 1, 10), owner=1, story_id=1, assigned_devs=[], id_=1), Task(nr=10, description='Task 2', comment='Some comment', status=T_COMPLETED, progress=100, completion_date=date(2014, 1, 14), owner=1, story_id=1, assigned_devs=[], id_=2), Task(nr=10, description='Task 3', comment='Some comment', status=T_IN_PROGRESS, progress=50, completion_date=None, owner=2, story_id=1, assigned_devs=[], id_=3), Task(nr=10, description='Task 4', comment='Some comment', status=T_NOT_STARTED, progress=0, completion_date=None, owner=2, story_id=2, assigned_devs=[], id_=4) ] self.project_shares = [ ProjectShare(user_id=1, project_id=1), ProjectShare(user_id=1, project_id=2), ProjectShare(user_id=1, project_id=3), ProjectShare(user_id=2, project_id=1), ProjectShare(user_id=2, project_id=3) ] self.task_assignments = [ TaskAssignment(user_id=1, task_id=1), TaskAssignment(user_id=1, task_id=2), TaskAssignment(user_id=2, task_id=3), TaskAssignment(user_id=2, task_id=1), TaskAssignment(user_id=2, task_id=3), TaskAssignment(user_id=2, task_id=4), ]