Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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,
    }
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
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
Exemplo n.º 5
0
def settings_phrases():
    return {
        "phrases": schema._load_json("refdata/phrases.json")
    }