Beispiel #1
0
def labels_for_values(p, meeting_id, in_participant_language=False, category=None):
    from cites.sugar import get_person_category_or_None
    import copy
    p = copy.deepcopy(p)
    labels = {}
    cache = get_db_cache()
    cache_key = 'values-and-labels-' + 'CountryRowISO'
    if not cache_key in cache:
        countries_dict = {c['iso']: c for c in database.get_all("country")}
        cache[cache_key] = countries_dict
    countries_dict = cache[cache_key]

    lang = {"E": "en", "S":"es", "F": "fr"}.get(
        p.get('personal_language'), 'en')

    # update regions with correct language
    if in_participant_language:
        regions = {iso:r[p['personal_language']] for iso, r in refdata.regions_iso.items()}
        countries = {iso:c[lang] for iso, c in countries_dict.items()}
        labels.update(regions)
    else:
        countries = {iso:c["en"] for iso, c in countries_dict.items()}
        labels.update(refdata.region)

    labels.update(countries)

    if p.get('representing_country'):
        p['representing_country'] = labels[p['representing_country']]
    if p.get('representing_region') and p['representing_region'] != 'None':
        p['representing_region'] = labels[p['representing_region']]
    if p.get('personal_country'):
        p['personal_country'] = labels[p['personal_country']]
    if category:
        p['personal_category'] = category.data['name_%s' % p.get('personal_language', 'E')]
    return p
Beispiel #2
0
def home():
    return {
            'countries': [Country.from_flat(country_row)
                          for country_row in database.get_all("country")],
            'regions': CountrySchema.regions,
            'date_types': CountrySchema.date_types
    }
Beispiel #3
0
def change_name_titles(meeting_id):
    session = database.get_session()
    persons = database.get_all("person")
    persons = [p for p in persons if p["personal_name_title"] in ["Miss", "Mrs"]]

    for p in persons:
        p["personal_name_title"] = u"Ms"
        session.save(p)

    session.commit()
Beispiel #4
0
 def __get__(self, instance, owner):
     cache = get_db_cache()
     cache_key = 'values-and-labels-' + self.table
     if not cache_key in cache:
         items = database.get_all(self.table)
         cache[cache_key] = {item[self.key_attr]: item[self.value_attr]
                             for item in items}
     items_dict = cache[cache_key]
     sorted_items = sorted(items_dict.items(),
                           key=operator.itemgetter(1))
     value = [item[0] for item in sorted_items]
     return value
Beispiel #5
0
def old_table():
    app = flask.current_app
    response = {}
    template = app.jinja_env.get_template("country/php/php.html")
    response["data"] = template.render({
        "mk": sugar.MarkupGenerator(
            app.jinja_env.get_template("widgets/widgets_edit.html")
        ),
        'countries': database.get_all("country"),
        'regions': CountrySchema.regions,
    })
    return flask.jsonify(response)
Beispiel #6
0
def home():

    cop_ids = set([int(r['meeting_id']) for r in database.get_all('resolution')])
    revised_ids = set([int(r['revised']) for r in database.get_all('resolution')
                       if r['revised']])
    corrected_ids = set([int(r['corrected']) for r in database.get_all('resolution')
                       if r['corrected']])
    repealed_ids = set([int(r['repealed']) for r in database.get_all('resolution')
                       if r['repealed']])

    meetings = [schema.Meeting.from_flat(m) for m in database.get_all('meeting')]
    cop = [m for m in meetings if m.id in cop_ids]
    revised = [m for m in meetings if m.id in revised_ids]
    corrected = [m for m in meetings if m.id in corrected_ids]
    repealed = [m for m in meetings if m.id in repealed_ids]

    return {
        'cop': cop,
        'revised': revised,
        'corrected': corrected,
        'repealed': repealed,
    }
Beispiel #7
0
def edit(resolution_id=None):
    if resolution_id is None:
        resolution_row = None
    else:
        resolution_row = database.get_or_404('resolution', resolution_id)

    meetings = [schema.Meeting.from_flat(m) for m in database.get_all('meeting')]
    session = database.get_session()

    if flask.request.method == "POST":
        form_data = dict(schema.ResolutionSchema.from_defaults().flatten())
        form_data.update(flask.request.form.to_dict())

        resolution_schema = schema.ResolutionSchema()
        resolution_schema.set_meetings(meetings)
        resolution_schema.set_flat(form_data)

        if resolution_schema.validate():
            if resolution_row is None:
                resolution_row = database.new('resolution')
            resolution_row.update(resolution_schema.flatten())
            session.save(resolution_row)
            session.commit()
            flask.flash('Resolution saved', 'success')
            if resolution_id:
                url = flask.url_for('resolution.view',
                                    resolution_id=resolution_id)
            else:
                url = flask.url_for('resolution.home')
            return flask.redirect(url)
        else:
            flask.flash(u"Errors in person information", "error")
    else:
        resolution_schema = schema.ResolutionSchema()
        resolution_schema.set_meetings(meetings)

        if resolution_row:
            resolution_schema.set_flat(resolution_row)
        else:
            resolution_schema = resolution_schema.from_defaults()
            resolution_schema.set_meetings(meetings)

    return {
        'mk': sugar.MarkupGenerator(
            flask.current_app.jinja_env.get_template('widgets/widgets_edit.html')
        ),
        'resolution_id': resolution_id,
        'resolution_schema': resolution_schema,
    }
Beispiel #8
0
def view(resolution_id):
    resolution_row = database.get_or_404('resolution', resolution_id)
    meetings = [schema.Meeting.from_flat(m) for m in database.get_all('meeting')]

    resolution_schema = schema.ResolutionSchema()
    resolution_schema.set_meetings(meetings)
    resolution_schema.set_flat(resolution_row)
    resolution = resolution_schema.value

    return {
        'mk': sugar.MarkupGenerator(
            flask.current_app.jinja_env.get_template("widgets/widgets_view.html")
        ),
        'resolution_schema': resolution_schema,
        'resolution_id': resolution_id,
        'resolution': resolution,
    }
def _dump(table):
    data = [d for d in database.get_all(table.__name__)]
    for d in data:
        d["id"] = str(d.id)
    return data
Beispiel #10
0
 def get_country_by_iso(cls, country_iso):
     for country in database.get_all("country"):
         if country_iso == country['iso']:
             return country