Esempio n. 1
0
    def post(self):
        user = users.get_current_user()

        if not user:
            self.error(401)
            return

        # Load the json from the request
        try:
            new_project = json.loads(self.request.body)
        # If we get a malformed json send 400 - Bad Request and stop execution
        except ValueError:
            self.error(400)
            return

        # Try to parse the request json to useful project data
        # Stop execution and server error 400 if anything goes wrong
        try:
            # First check that we didn't get any empty values
            if new_project['title'] is None:
                raise ValueError('No title')
            if new_project['description'] is None:
                raise ValueError('No description')
            if new_project['location'] is None:
                raise ValueError('No location')
            if new_project['requested_amount'] is None:
                raise ValueError('No requested amount')
            if new_project['category'] is None:
                raise ValueError('No category')
            if new_project['due_date'] is None:
                raise ValueError('No due date')
            if new_project['tags'] is None:
                raise ValueError('No tags')
                
            # Try to construct a Project object from the given data
            project = Anna_Project()
            project.user_id = user.user_id()
            project.title = new_project['title']
            project.description = new_project['description']
            project.category = new_project['category']
            project.tags = new_project['tags']
            project.location = new_project['location']
            project.requested_amount = int(new_project['requested_amount'])
            # DateTime format ex. 24122016 (24th of January, 2016), %d%m%Y
            project.due_date = datetime.datetime.strptime(new_project['due_date'], "%d%m%Y")
            
        # Request data was somehow wrong (Datetime didnt match the specified format or something similar)
        except ValueError:
            self.error(400)
            return
        # Something else broke in trying to parse the new project data from the request
        except Exception, e:
            self.error(400)
            return