Esempio n. 1
0
def item(_id):
    items = get_items_for_user_action([_id], 'items')
    if not items:
        return

    item = items[0]
    set_permissions(item, 'wire', False if flask.request.args.get('ignoreLatest') == 'false' else True)
    display_char_count = get_resource_service('ui_config').getSectionConfig('wire').get('char_count', False)
    if is_json_request(flask.request):
        return flask.jsonify(item)
    if not item.get('_access'):
        return flask.render_template('wire_item_access_restricted.html', item=item)
    previous_versions = get_previous_versions(item)
    template = 'wire_item.html'
    data = {'item': item}
    if 'print' in flask.request.args:
        if flask.request.args.get('monitoring_profile'):
            data.update(flask.request.view_args)
            template = 'monitoring_export.html'
        else:
            template = 'wire_item_print.html'

        update_action_list([_id], 'prints', force_insert=True)
        get_resource_service('history').create_history_record([item], 'print', get_user(),
                                                              request.args.get('type', 'wire'))

    return flask.render_template(
        template,
        **data,
        previous_versions=previous_versions,
        display_char_count=display_char_count)
Esempio n. 2
0
 def render_403(err):
     if flask.request and is_json_request(flask.request):
         return flask.jsonify({
             'code': 403,
             'error': str(err),
             'info': getattr(err, 'description', None)
         }), 403
     return flask.render_template('403.html'), 403
Esempio n. 3
0
def edit(_id):
    if flask.request.args.get('context', '') == 'wire':
        items = get_items_for_user_action([_id], 'items')
        if not items:
            return

        item = items[0]
        if is_json_request(flask.request):
            return flask.jsonify(item)

    if 'print' in flask.request.args:
        assert flask.request.args.get('monitoring_profile')
        monitoring_profile = get_entity_or_404(
            flask.request.args.get('monitoring_profile'), 'monitoring')
        items = get_items_for_monitoring_report([_id],
                                                monitoring_profile,
                                                full_text=True)
        flask.request.view_args['date_items_dict'] = get_date_items_dict(items)
        flask.request.view_args['monitoring_profile'] = monitoring_profile
        flask.request.view_args['monitoring_report_name'] = app.config.get(
            'MONITORING_REPORT_NAME', 'Newsroom')
        flask.request.view_args['print'] = True
        return wire_print(_id)

    profile = find_one('monitoring', _id=ObjectId(_id))
    if not profile:
        return NotFound(gettext('monitoring Profile not found'))

    if flask.request.method == 'POST':
        form = MonitoringForm(monitoring=profile)
        if form.validate_on_submit():
            updates = form.data
            request_updates = flask.request.get_json()

            # If the updates have anything other than 'users', only admin or monitoring_admin can update
            if len(request_updates.keys()
                   ) == 1 and 'users' not in request_updates:
                user = get_user()
                if not is_admin(user):
                    return jsonify({'error': 'Bad request'}), 400

                company = get_entity_or_404(profile['company'], 'companies')
                if str(user['_id']) != str(
                        company.get('monitoring_administrator')):
                    return jsonify({'error': 'Bad request'}), 400

            process_form_request(updates, request_updates, form)
            set_version_creator(updates)
            get_resource_service('monitoring').patch(ObjectId(_id),
                                                     updates=updates)
            return jsonify({'success': True}), 200
        return jsonify(form.errors), 400
    return jsonify(profile), 200
Esempio n. 4
0
def item(_id):
    item = get_entity_or_404(_id, 'agenda')
    if is_json_request(flask.request):
        return flask.jsonify(item)

    if 'print' in flask.request.args:
        template = 'agenda_item_print.html'
        update_action_list([_id], 'prints', force_insert=True)
        return flask.render_template(template, item=item)

    data = get_view_data()
    data['item'] = item
    return flask.render_template('agenda_index.html',
                                 data=data,
                                 title=item.get('name', item.get('headline')))
Esempio n. 5
0
def item(_id):
    item = get_entity_or_404(_id, 'items')
    set_permissions(item)
    if is_json_request(flask.request):
        return flask.jsonify(item)
    if not item.get('_access'):
        return flask.render_template('wire_item_access_restricted.html',
                                     item=item)
    previous_versions = get_previous_versions(item)
    if 'print' in flask.request.args:
        template = 'wire_item_print.html'
        update_action_list([_id], 'prints', force_insert=True)
    else:
        template = 'wire_item.html'
    return flask.render_template(template,
                                 item=item,
                                 previous_versions=previous_versions)
Esempio n. 6
0
def item(_id):
    item = get_entity_or_404(_id, 'agenda')

    user = get_user()
    company = get_user_company(user)
    if not is_admin_or_internal(user):
        item.get('event', {}).pop('files', None)
        planning_items = item.get('planning_items', [])
        [item.pop('internal_note', None) for item in planning_items]
        coverages = item.get('coverages', [])
        [c.get('planning', {}).pop('internal_note', None) for c in coverages]
        item.get('event', {}).pop('internal_note', None)

    if company and not is_admin(user) and company.get('events_only', False):
        # if the company has permission events only permission then
        # remove planning items and coverages.
        if not item.get('event'):
            # for adhoc planning items abort the request
            flask.abort(403)

        item.pop('planning_items', None)
        item.pop('coverages', None)

    if is_json_request(flask.request):
        return flask.jsonify(item)

    if 'print' in flask.request.args:
        map = flask.request.args.get('map')
        template = 'agenda_item_print.html'
        update_action_list([_id], 'prints', force_insert=True)
        return flask.render_template(
            template,
            item=item,
            map=map,
            dateString=get_agenda_dates(item),
            location=get_location_string(item),
            contacts=get_public_contacts(item),
            links=get_links(item),
            is_admin=is_admin_or_internal(user)
        )

    data = get_view_data()
    data['item'] = item
    return flask.render_template('agenda_index.html', data=data, title=item.get('name', item.get('headline')))
Esempio n. 7
0
def item(_id):
    item = get_entity_or_404(_id, 'items')
    set_permissions(item, 'media_releases')
    display_char_count = get_resource_service('ui_config').getSectionConfig('media_releases').get('char_count', False)
    if is_json_request(flask.request):
        return flask.jsonify(item)
    if not item.get('_access'):
        return flask.render_template('wire_item_access_restricted.html', item=item)
    previous_versions = get_previous_versions(item)
    if 'print' in flask.request.args:
        template = 'wire_item_print.html'
        update_action_list([_id], 'prints', force_insert=True)
    else:
        template = 'wire_item.html'
    return flask.render_template(
        template,
        item=item,
        previous_versions=previous_versions,
        display_char_count=display_char_count)
Esempio n. 8
0
 def render_404(err):
     if flask.request and is_json_request(flask.request):
         return flask.jsonify({'code': 404}), 404
     return flask.render_template('404.html'), 404