def migrate_country_name_to_code(): session = database.get_session() countries = _load_json('refdata/countries.json') old_countries = _load_json('refdata/old_countries.json') country_mapping = {} for k, v in countries.items(): country_mapping[v] = k country_mapping.update(old_countries) for row in database.get_all_reports(): modified = False for index in range(0, len(country_mapping) + 1): country_name = row.get('header_country_' + str(index)) if country_name and country_name in country_mapping.keys(): row['header_country_' + str(index)] = country_mapping[country_name] modified = True if modified: session.save(row) session.commit()
def send_mail(person_id): app = flask.current_app session = database.get_session() person = schema.Person.get_or_404(person_id) phrases = {item["id"]: item["name"] for item in schema._load_json("refdata/phrases.json")} if flask.request.method == "POST": mail = Mail(app) # populate schema with data from POST mail_schema = schema.MailSchema.from_flat(flask.request.form.to_dict()) if mail_schema.validate(): # flatten schema mail_data = {} mail_data.update(mail_schema.flatten()) # construct recipients from "to" recipients = [mail_data["to"]] # recipients = ["*****@*****.**"] # send email msg = Message(mail_data["subject"], sender="*****@*****.**", recipients=recipients, cc=[mail_data["cc"]], body=mail_data["message"]) pdf = sugar.generate_pdf_from_html( flask.render_template("participant/credentials.html", **{ "person": schema.Person.get_or_404(person_id), "meeting_description": MEETING_DESCRIPTION, "meeting_address": MEETING_ADDRESS, }) ) msg.attach("credentials.pdf", "application/pdf", pdf) mail.send(msg) if app.config["MAIL_SUPPRESS_SEND"]: flask.flash(u"This is a demo, no real email was sent", "info") else: # flash a success message success_msg = u"Mail sent to %s" % mail_data["to"] if mail_data["cc"]: success_msg += u" and to %s" % mail_data["cc"] flask.flash(success_msg, "success") else: flask.flash(u"Errors in mail information", "error") else: # create a schema with default data mail_schema = schema.MailSchema({ "to": person["personal"]["email"], "subject": phrases["EM_Subj"], "message": "\n\n\n%s" % phrases["Intro"], }) return { "mk": sugar.MarkupGenerator( app.jinja_env.get_template("widgets/widgets_mail.html") ), "person": person, "mail_schema": mail_schema, }
def get_us_states(): us_states = schema._load_json("refdata/us.states.json") return flask.Response(response=flask.json.dumps(us_states), mimetype="application/json")
def import_seris(): """ Imported fields: u'details_original_name' u'format_availability_url' 'details_translated_in_0' u'details_publisher' 'header_country_0' u'format_date_of_last_update' u'details_english_name' u'format_report_type' 'details_original_language_0' u'short_description' """ from seris_old import SERIS_DATA from schema import _load_json countries_mapping = _load_json("refdata/seris_old_countries_mapping.json") countries_list = _load_json("refdata/countries_list.json") countries = [pair[0] for pair in countries_list] imported = 0 skipped = 0 for country, reports in SERIS_DATA.items(): if country == 'eea' or countries_mapping[country] in countries: for form_data in reports: report_row = database.ReportRow() seris_review_row = database.SerisReviewRow() session = database.get_session() for k, v in form_data.items(): if v is None: del (form_data[k]) found = False for count in range(0, 100): header_country = form_data.get('header_country_%s' % count) if header_country not in countries: if header_country: del (form_data['header_country_%s' % count]) else: found = True if not found: if country == 'eea': print( 'Skipped report %s from eea: ' 'countries not in scope' % form_data.get('details_original_name')) skipped += 1 continue else: form_data['header_country_0'] = countries_mapping[ country] if country == 'eea': form_data['header_region_0'] = ( 'European Environment Agency') if form_data.get('category') == 'National portal': form_data['format_report_type'] = 'portal (dynamic source)' try: int(form_data.get('format_date_of_publication')) except ValueError: print 'Report %s in country %s - invalid year "%s"' % ( form_data.get('details_original_name'), country, form_data.get('format_date_of_publication')) except TypeError: pass report_schema = schema.ReportSchema.from_flat(form_data) seris_review_schema = schema.SerisReviewSchema.from_flat( form_data) report_row.update(report_schema.flatten()) uploader = 'Imported from SERIS 1' report_row['header_uploader'] = uploader report_row['header_upload_date'] = '01 Jan 1999, 00:00' session.save(report_row) seris_review_schema['report_id'].set(report_row.id) # Review part seris_review_row.clear() seris_review_row.update(seris_review_schema.flatten()) session.save(seris_review_row) imported += 1 session.commit() print '%s reports imported' % imported print '%s reports skipped' % skipped
def settings_phrases(): return { "phrases": schema._load_json("refdata/phrases.json") }