def edit_ad(ad_id): """ Updates specific ad with user edited information. :param ad_id: id of the ad :return: either current ad info (on GET) or updated ad (on POST) """ selected_ad = database.get_ad_by_id(int(ad_id)) if not user_is_authorized_to_update_item(selected_ad.user_id): flash("You are not authorized to update this page") return redirect(url_for("index")) edit_ad_form = FlaskForm() if request.method == "POST" and edit_ad_form.validate_on_submit(): # using FlaskForm only for csrf protection in this case, rest is custom-built update_ad_from_form_info(selected_ad, request.form) flash("Ad was updated") categories_with_sub_categories = database.get_categories_with_subcategories( ) cities = database.get_cities() categories_json = json.dumps(categories_with_sub_categories) ad_dict = database.ad_to_dict(selected_ad) selected_sub_categories = categories_with_sub_categories[ ad_dict["category"]]["value"] return render_template("edit_my_ad.html", ad=ad_dict, categories_json=categories_json, categories=categories_with_sub_categories, selected_sub_categories=selected_sub_categories, cities=cities, edit_ad_form=edit_ad_form, page_info=get_page_info())
def new_ad(): """ Creates new ad from user inputs :return: on get add page; on post add and redirects to my ads page ; on get returns partly filled in template """ # using FlaskForm for csrf protection, rest is custom - built new_ad_form = FlaskForm() if request.method == "POST" and new_ad_form.validate_on_submit(): ad_new = create_database.Ad(user_id=flask_login.current_user.id) update_ad_from_form_info(ad_new, request.form) database.update_ad(ad_new) flash("New ad was successfully added") return redirect(url_for("my_ads")) user = database.get_user_by_unicode_id(flask_login.current_user.id) new_ad_template = database.get_ad_template( user, initialize_city=True, initialize_category_and_subcategory=True) categories_with_sub_categories = database.get_categories_with_subcategories( ) cities = database.get_cities() categories_json = json.dumps(categories_with_sub_categories) selected_sub_categories = categories_with_sub_categories[ new_ad_template["category"]]["value"] return render_template("new_ad.html", ad=new_ad_template, categories_json=categories_json, categories=categories_with_sub_categories, new_ad_form=new_ad_form, selected_sub_categories=selected_sub_categories, cities=cities, page_info=get_page_info())
def generate_config(empty=False): """ Generate a config file for adding static values by hand. """ if empty: return generate_empty_config() session = DatabaseSession() sectors = session.query(Sector).all() print(sectors) sectors_data = [] for sector in sectors: city_data = [] sector_data = {"name": sector.name, "cities": city_data} cities = get_cities(session, sector) print(cities) for city in cities: city_data.append({"name": city.name, "location": city.location.position}) sectors_data.append(sector_data) ship_chassis_data = [] for chassis in session.query(ShipChassis).all(): data = chassis.json data.pop(TYPE_META) data.pop("id") ship_chassis_data.append(data) print(ship_chassis_data) ship_system_data = [] ship_systems = session.query(ShipSystem).all() for ship_system in ship_systems: attributes = {} data = {"name": ship_system.name, "attributes": attributes} for attribute in ship_system.attributes: attributes[attribute.type.value] = attribute.value ship_system_data.append(data) resource_data = [] for resource_type in session.query(ResourceType).all(): data = {"name": resource_type.name, "base_cost": resource_type.base_cost} resource_data.append(data) print( yaml.dump( { "Sector": sectors_data, "ShipChassis": ship_chassis_data, "ShipSystem": ship_system_data, "Resources": resource_data, }, sort_keys=False, ) )
def get_list_of_cities(): """ Returns JSON for list of cities with ids :return: JSON for all cities """ cities = database.get_cities() list_of_city_dictionaries = [ database.city_to_dict(city) for city in cities ] return jsonify(list_of_city_dictionaries)
def index(): """ :return: main page of the application """ print_current_session() categories_with_sub_categories = database.get_categories_with_subcategories( ) categories_json = json.dumps(categories_with_sub_categories) cities = database.get_cities() return render_template("index.html", categories=categories_with_sub_categories, categories_json=categories_json, cities=cities, page_info=get_page_info())
def send_cities(message): # pylint: disable=unused-argument """ Trigger a 'load_city' event for each city in the game. """ LOGGER.debug(f"City list requested by {current_user}") for city in get_cities(database_session, current_user.ship.location.sector): resources = {} for resource_held in city.resources: resources[resource_held.resource.name] = resource_held.amount response = { "position": city.location.coordinate, "id": city.id, "name": city.name, "resources": resources, "population": city.population, } LOGGER.debug(f"Emitting {response} to {current_user}") emit("load_city", response)
def get(): data = get_cities() cities = [] for record in data: cities.append({'id': record.city_id, 'name': record.city_name}) return cities