Exemple #1
0
    def post(self):
        """
        POST Method for Country. Login required

        :return: JSON response
        """
        errors = []
        try:
            self.validate_fields(Country.required_fields(), request.form)
        except ValueError:
            return self.response(400, 'Required fields: ' + ' '.join(Country.required_fields()))

        params = self.get_form_values(Country.get_columns(), request.form)

        validate = Country.query.filter_by(iso_code=params['iso_code']).first()
        if validate:
            errors.append("The iso_code already exists")

        if params['continental_code']:
            validate = Continent.query.filter_by(code=params['continental_code']).first()
            if validate is None:
                errors.append("The continental_code doesn't exists")

        if errors:
            return self.response(400, errors)

        new_country = Country(
            iso_code=params['iso_code'],
            iso_code_long=params['iso_code_long'],
            short_name=params['short_name'],
            formal_name=params['formal_name'],
            demonym=params['demonym'],
            country_code=params['country_code'],
            continental_code=params['continental_code'],
            coordinates=params['coordinates'],
            elevation=params['elevation'],
            elevation_low=params['elevation_low'],
            area=params['area'],
            land=params['land'],
            fertility=params['fertility'],
            death=params['death'],
            birth=params['birth'],
            population=params['population'],
            population_urban=params['population_urban'],
            itu=params['itu'],
            web=params['web'],
            gis=params['gis'],
            statistics=params['statistics'],
            flag=params['flag'],
            government=params['government'],
            boundary_box=params['boundary_box'],
            currency=params['currency'],
        )
        new_country.save()

        return self.response(201)