예제 #1
0
def manage_roles(edit_role_name=None):
    settings = check_and_initialize()
    form = helpers.deploy_custom_form('manage_roles')
    if request.method == 'POST' and form.validate_on_submit():
        role_name = helpers.slug(request.form.get('display_name'))
        existing_role = g.db.settings.find_one(
            {
                'roles.name': role_name
            }
        )
        if existing_role:
            flash(
                'Role already exists, please check the name and try again',
                'error'
            )
            form.display_name.errors.append('Duplicate role')
            return render_template(
                'admin/manage_roles.html',
                form=form,
                roles=settings.get('roles')
            )
        else:
            g.db.settings.update(
                {
                    '_id': settings.get('_id')
                }, {
                    '$push': {
                        'roles': {
                            'name': role_name,
                            'display_name': helpers.normalize(
                                request.form.get('display_name')
                            ),
                            'active': bool(request.form.get('status'))
                        }
                    }
                }
            )
            flash('Role successfully Added', 'success')
            return redirect(url_for('adminblueprint.manage_roles'))
    elif request.method == 'POST' and not (form.validate_on_submit()):
        flash(
            'Form validation failed. Please check the form and try again',
            'error'
        )
        return render_template(
            'admin/manage_roles.html',
            form=form,
            roles=settings.get('roles')
        )
    else:
        return render_template(
            'admin/manage_roles.html',
            form=form,
            roles=settings.get('roles')
        )
예제 #2
0
 def insertStudent(login,  group_id = None):
     login = slug(login)
     
     try: 
         c = query('INSERT INTO students(login, group_id) VALUES(?,?)', (login, group_id, ))
     except Exception as e:
         raise UserException("Takový uživatel již existuje")
             
     if not c.rowcount:
         raise UserException("Chyba při vkládání uživatele")
         
     return Model.get( login )                                      
예제 #3
0
 def insertLector(login, psw, roles = "lector"):
     login = slug(login)
     
     psw = sha1(psw.encode('utf-8')).hexdigest()
              
     try: 
         c = query('INSERT INTO lectors(login, roles, password) VALUES(?,?,?)', (login, roles or "", psw))
     except Exception as e:
         raise UserException("Takový uživatel již existuje")
             
     if not c.rowcount:
         raise UserException("Chyba při vkládání uživatele")
         
     return Model.get( login )    
예제 #4
0
import numpy as np
import pandas as pd

from geonamescache import GeonamesCache
from helpers import slug
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
from mpl_toolkits.basemap import Basemap

filename = 'csv/ag.lnd.frst.zs_Indicator_en_csv_v2/ag.lnd.frst.zs_Indicator_en_csv_v2.csv'
shapefile = 'shp/countries/ne_10m_admin_0_countries_lakes'
num_colors = 9
year = '2012'
cols = ['Country Name', 'Country Code', year]
title = 'Forest area as percentage of land area in {}'.format(year)
imgfile = 'img/{}.png'.format(slug(title))

description = '''
Forest area is land under natural or planted stands of trees of at least 5 meters in situ, whether 
productive or not, and excludes tree stands in agricultural production systems (for example, in 
fruit plantationsand agroforestry systems) and trees in urban parks and gardens. Countries without 
data are shown in grey. Data: World Bank - worldbank.org • Author: Ramiro Gómez - ramiro.org'''.strip(
)

gc = GeonamesCache()
iso3_codes = list(gc.get_dataset_by_key(gc.get_countries(), 'iso3').keys())

df = pd.read_csv(filename, skiprows=4, usecols=cols)
df.set_index('Country Code', inplace=True)
df = df.ix[iso3_codes].dropna()  # Filter out non-countries and missing values.
예제 #5
0
파일: views.py 프로젝트: dev-ace/pitchfork
def manage_form_fields(form_id, field_name=None):
    error = True
    custom_form = g.db.forms.find_one({'_id': ObjectId(form_id)})
    sorted_fields = help.get_and_sort(custom_form.get('fields'), 'order')
    title = "Manage Fields for %s" % custom_form.get('display_name').title()
    if field_name:
        fields = g.db.forms.find_one(
            {
                '_id': ObjectId(form_id),
                'fields': {
                    '$elemMatch': {
                        'name': field_name
                    }
                }
            }
        ).get('fields')

        edit_field = None
        for field in fields:
            if field.get('name') == field_name:
                edit_field = field
                break

        if edit_field:
            form = forms.BuildCustomForm(
                form_id=custom_form.get('_id'),
                name=field_name,
                label=edit_field.get('label'),
                field_type=edit_field.get('field_type'),
                default=edit_field.get('default'),
                default_value=edit_field.get('default_value'),
                style_id=edit_field.get('style_id'),
                description=edit_field.get('description'),
                required=edit_field.get('required'),
                active=edit_field.get('active'),
                field_choices=edit_field.get('field_choices'),
                order=edit_field.get('order')
            )
    else:
        form = forms.BuildCustomForm(form_id=custom_form.get('_id'))

    if request.method == 'POST' and form.validate_on_submit():
        sani_name = help.slug(request.form.get('name'))
        active, required, default = False, False, False

        if field_name:
            if not sani_name == field_name:
                if g.db.forms.find(
                    {
                        '_id': ObjectId(form_id),
                        'fields': {
                            '$elemMatch': {
                                'name': sani_name
                            }
                        }
                    }
                ).count() > 0:
                    flash(
                        'Field name already exists, '
                        'please check the name and try again',
                        'error'
                    )
                    return render_template(
                        'admin/manage_form_fields.html',
                        form=form,
                        title=title,
                        fields=sorted_fields,
                        form_id=form_id,
                        error=error
                    )
        else:
            if g.db.forms.find(
                {
                    '_id': ObjectId(form_id),
                    'fields.name': sani_name
                }
            ).count() > 0:
                flash(
                    'Field name already exists, '
                    'please check the name and try again',
                    'error'
                )
                return render_template(
                    'admin/manage_form_fields.html',
                    form=form,
                    title=title,
                    fields=sorted_fields,
                    form_id=form_id,
                    error=error
                )

        if field_name:
            g.db.forms.update(
                {
                    '_id': ObjectId(form_id),
                    'fields.name': field_name
                },
                {
                    '$set': {
                        'fields.$.name': sani_name,
                        'fields.$.label': request.form.get('label'),
                        'fields.$.field_type': request.form.get('field_type'),
                        'fields.$.field_choices': request.form.get(
                            'field_choices'
                        ),
                        'fields.$.default': bool(request.form.get('default')),
                        'fields.$.default_value': request.form.get(
                            'default_value'
                        ),
                        'fields.$.style_id': request.form.get('style_id'),
                        'fields.$.required': bool(
                            request.form.get('required')
                        ),
                        'fields.$.active': bool(request.form.get('active')),
                        'fields.$.order': int(request.form.get('order')),
                        'fields.$.description': request.form.get('description')
                    }
                }
            )
            flash('Field successfully updated')
            return redirect(
                url_for(
                    'adminblueprint.manage_form_fields',
                    form_id=form_id
                )
            )
        else:
            g.db.forms.update(
                {
                    '_id': ObjectId(form_id)},
                {
                    "$push": {
                        'fields': {
                            'name': sani_name,
                            'label': request.form.get('label'),
                            'field_type': request.form.get('field_type'),
                            'field_choices': request.form.get('field_choices'),
                            'default': bool(request.form.get('default')),
                            'default_value': request.form.get('default_value'),
                            'style_id': request.form.get('style_id'),
                            'required': bool(request.form.get('required')),
                            'active': bool(request.form.get('active')),
                            'order': help.get_form_field_order(form_id),
                            'description': request.form.get('description')
                        }
                    }
                }
            )
            flash('Field successfully added to form')
            return redirect(
                url_for(
                    'adminblueprint.manage_form_fields',
                    form_id=form_id
                )
            )
    elif request.method == 'POST' and not form.validate_on_submit():
        flash(
            'Form validation error. Please check the form and try again',
            'error'
        )
        return render_template(
            'admin/manage_form_fields.html',
            form=form,
            title=title,
            fields=sorted_fields,
            form_id=form_id,
            error=error
        )
    else:
        if form_id and field_name:
            show_default_field, show_field_type = False, False
            if (
                field.get('field_type') == 'SelectField' or
                field.get('field_type') == 'RadioField' or
                field.get('field_type') == 'SelectMultipleField'
            ):
                show_field_type = True

            if field.get('default'):
                show_default_field = True

            return render_template(
                'admin/_edit_custom_fields.html',
                form=form,
                form_id=form_id,
                field_name=field_name,
                show_default_field=show_default_field,
                show_field_type=show_field_type
            )
        else:
            return render_template(
                'admin/manage_form_fields.html',
                form=form,
                title=title,
                fields=sorted_fields,
                form_id=form_id
            )
예제 #6
0
파일: views.py 프로젝트: dev-ace/pitchfork
def menu_settings(edit_menu_name=None):
    error = True
    settings = check_and_initialize()
    menu_list = help.get_and_sort(
        settings.get('menu'),
        'parent_order',
        'order'
    )
    top_level_menu = help.get_and_sort(
        settings.get('top_level_menu'),
        'order'
    )

    if edit_menu_name:
        menus = settings.get('menu')
        menu_edit = None
        for item in menus:
            if item.get('name') == edit_menu_name:
                menu_edit = item
                break

        if menu_edit:
            title = "Edit Menu Settings for %s" % \
                help.unslug(edit_menu_name)
            menu_form = help.deploy_custom_form(
                'menu_items_form',
                parent_menu=menu_edit.get('parent'),
                menu_display_name=menu_edit.get('display_name'),
                menu_item_url=menu_edit.get('url'),
                menu_permissions=menu_edit.get('view_permissions'),
                menu_item_status=menu_edit.get('active'),
                db_name=menu_edit.get('name'),
                action='edit'
            )
        else:
            title = "Application Menu Settings"
            menu_form = help.deploy_custom_form('menu_items_form')
            edit_menu_name = None
    else:
        title = "Application Menu Settings"
        menu_form = help.deploy_custom_form('menu_items_form')

    parent_menus = help.generate_parent_menu(settings.get('menu'))
    menu_form.parent_menu.choices = [
        (parent, parent) for parent in parent_menus
    ]

    active_roles = help.generate_active_roles(settings.get('roles'))
    menu_form.menu_permissions.choices = [
        (help.slug(role), role) for role in active_roles
    ]
    if request.method == 'POST' and menu_form.validate_on_submit():
        db_name = help.slug(
            str(request.form.get('db_name'))
        )
        existing_name = g.db.settings.find_one(
            {
                'menu.name': db_name
            }
        )
        if existing_name:
            if not (edit_menu_name and (menu_edit.get('name') == db_name)):
                flash(
                    'Name already exists, please choose another name',
                    'error'
                )
                return render_template(
                    'admin/manage_menu.html',
                    title=title,
                    menu_form=menu_form,
                    menu_list=menu_list,
                    top_level_menu=top_level_menu,
                    error=error
                )

        existing_url = g.db.settings.find_one(
            {
                'menu.url': request.form.get('menu_item_url')
            }
        )
        if existing_url:
            if not (edit_menu_name and
                    menu_edit.get('url') == request.form.get('menu_item_url')):
                flash(
                    'URL is already being used, '
                    'please check the URL and try again',
                    'error'
                )
                return render_template(
                    'admin/manage_menu.html',
                    title=title,
                    menu_form=menu_form,
                    menu_list=menu_list,
                    top_level_menu=top_level_menu,
                    error=error
                )

        if request.form.get('parent_menu') == "Add New Parent":
            if request.form.get('new_parent'):
                existing_parent = g.db.settings.find_one(
                    {
                        'top_level_menu.slug': help.slug(
                            request.form.get('new_parent')
                        )
                    }
                )
                if existing_parent:
                    flash(
                        'Parent is already in use, '
                        'please check the value and try again',
                        'error'
                    )
                    return render_template(
                        'admin/manage_menu.html',
                        title=title,
                        menu_form=menu_form,
                        menu_list=menu_list,
                        top_level_menu=top_level_menu,
                        error=error
                    )
                parent_menu = help.normalize(request.form.get('new_parent'))
            else:
                flash(
                    'New Parent cannot be blank when adding a new Parent Item',
                    'error'
                )
                return render_template(
                    'admin/manage_menu.html',
                    title=title,
                    menu_form=menu_form,
                    menu_list=menu_list,
                    top_level_menu=top_level_menu,
                    error=error
                )
        else:
            parent_menu = help.normalize(request.form.get('parent_menu'))

        status = False
        if request.form.get('menu_item_status'):
            status = True

        if edit_menu_name:
            g.db.settings.update(
                {
                    'menu.name': edit_menu_name
                }, {
                    '$set': {
                        'menu.$.name': db_name,
                        'menu.$.display_name': help.normalize(
                            request.form.get('menu_display_name')
                        ),
                        'menu.$.url': request.form.get('menu_item_url'),
                        'menu.$.view_permissions': request.form.get(
                            'menu_permissions'
                        ),
                        'menu.$.active': status,
                        'menu.$.parent': help.slug(parent_menu),
                        'menu.$.parent_order': help.get_parent_order(
                            parent_menu,
                            settings,
                            request.form.get('menu_display_name')
                        )
                    }
                }
            )
            if (
                (
                    menu_edit.get('display_name') != help.normalize(
                        request.form.get('menu_display_name')
                    )
                ) or (
                    menu_edit.get('parent') != help.slug(parent_menu)
                )
            ):
                help.check_top_level_to_remove(menu_edit)
            flash('Menu Item was edited successfully')
        else:
            g.db.settings.update(
                {
                    '_id': settings.get('_id')
                }, {
                    '$push': {
                        'menu': {
                            'name': db_name,
                            'display_name': help.normalize(
                                request.form.get('menu_display_name')
                            ),
                            'url': request.form.get('menu_item_url'),
                            'view_permissions': request.form.get(
                                'menu_permissions'
                            ),
                            'active': status,
                            'parent': help.slug(parent_menu),
                            'order': help.get_next_order_number(
                                menu_list, parent_menu
                            ),
                            'parent_order': help.get_parent_order(
                                parent_menu,
                                settings,
                                request.form.get('menu_display_name')
                            )
                        }
                    }
                }
            )
            flash('Menu Item successfully Added')

        return redirect(url_for('adminblueprint.menu_settings'))
    elif request.method == 'POST' and not (menu_form.validate_on_submit()):
        flash(
            'Form validation failed. Please check the form and try again',
            'error'
        )
        return render_template(
            'admin/manage_menu.html',
            title=title,
            menu_form=menu_form,
            menu_list=menu_list,
            top_level_menu=top_level_menu,
            error=error
        )
    else:
        if edit_menu_name:
            return render_template(
                'admin/_edit_settings_menu.html',
                menu_form=menu_form,
                name=menu_edit.get('name')
            )
        else:
            return render_template(
                'admin/manage_menu.html',
                title=title,
                menu_form=menu_form,
                menu_list=menu_list,
                top_level_menu=top_level_menu
            )
예제 #7
0
파일: views.py 프로젝트: dev-ace/pitchfork
def manage_forms(form_id=None):
    error, edit_form = True, None
    all_forms = g.db.forms.find()
    if form_id:
        edit_form = g.db.forms.find_one({'_id': ObjectId(form_id)})
        form = forms.BuildForm(
            name=edit_form.get('name'),
            submission_url=edit_form.get('submission_url'),
            active=edit_form.get('active'),
            system_form=edit_form.get('system_form')
        )
    else:
        form = forms.BuildForm()

    if request.method == 'POST' and form.validate_on_submit():
        sani_name = help.slug(request.form.get('name'))
        active, system_form = False, False

        active = bool(request.form.get('active'))
        system_form = bool(request.form.get('system_form'))

        if edit_form:
            if not edit_form.get('name') == sani_name:
                if g.db.forms.find_one({'name': sani_name}):
                    flash(
                        'Form name already exists, please check '
                        'the name and try again',
                        'error'
                    )
                    return render_template(
                        'admin/manage_forms.html',
                        form=form,
                        all_forms=all_forms,
                        error=error
                    )
            if not edit_form.get('submission_url') == \
                    request.form.get('submission_url'):
                if g.db.forms.find_one(
                    {
                        'submission_url': request.form.get(
                            'submission_url'
                        )
                    }
                ):
                    flash(
                        'Another form posts to the same URL. '
                        'Please check the URL and try again',
                        'error'
                    )
                    return render_template(
                        'admin/manage_forms.html',
                        form=form,
                        all_forms=all_forms,
                        error=error
                    )

            g.db.forms.update(
                {
                    '_id': ObjectId(form_id)
                }, {
                    '$set': {
                        'name': sani_name,
                        'display_name': help.unslug(sani_name),
                        'submission_url': request.form.get('submission_url'),
                        'active': active,
                        'system_form': system_form
                    }
                }
            )
        else:
            if g.db.forms.find_one({'name': sani_name}):
                flash(
                    'Form name already exists, please check'
                    ' the name and try again',
                    'error'
                )
                return render_template(
                    'admin/manage_forms.html',
                    form=form,
                    all_forms=all_forms,
                    error=error
                )
            elif g.db.forms.find_one(
                    {
                        'submission_url': request.form.get(
                            'submission_url'
                        )
                    }):
                flash(
                    'Another form posts to the same URL.'
                    ' Please check the URL and try again',
                    'error'
                )
                return render_template(
                    'admin/manage_forms.html',
                    form=form,
                    all_forms=all_forms,
                    error=error
                )

            g.db.forms.insert(
                {
                    'name': sani_name,
                    'display_name': help.unslug(sani_name),
                    'submission_url': request.form.get('submission_url'),
                    'active': active,
                    'system_form': system_form
                }
            )
        if edit_form:
            flash('Successfully updated Custom Form')
            return redirect(url_for('adminblueprint.manage_forms'))
        else:
            flash('Successfully added Custom Form')
            return redirect(url_for('adminblueprint.manage_forms'))
    elif request.method == 'POST' and not form.validate_on_submit():
        flash(
            'Form Validation failed. Please check the form and try again',
            'error'
        )
        return render_template(
            'admin/manage_forms.html',
            form=form,
            all_forms=all_forms,
            error=error
        )
    else:
        if form_id:
            return render_template(
                'admin/_edit_custom_forms.html',
                form=form,
                form_id=form_id
            )
        else:
            return render_template(
                'admin/manage_forms.html',
                form=form,
                all_forms=all_forms
            )
예제 #8
0
    def insert_from_form(self, form):
        
        # Initialize return dictionary
        insert_dict = {}

        # Push messaging
        msg = PushMessage()
        
        
        # insert artist data 
        msg.send('Inserting Artist & Label Data')
        insert_dict['artists'] = []
        for artist in form.data['release']['artists']:
            insert_dict['artists'].append({
                'name':artist['name'],
                'url':artist['url'],
                'slug':slug(artist['name']),
                'geo':{
                    'city':{
                        'name':artist['geo']['city'],
                        'slug':slug(artist['geo']['city']),
                    },
                    'province':{
                        'name':artist['geo']['province'],
                        'slug':slug(artist['geo']['province']),
                    },
                    'country':{
                        'name':artist['geo']['country'],
                        'slug':slug(artist['geo']['country']),
                    },
                },
            })

        # insert label data
        insert_dict['labels'] = []
        for label in form.data['release']['labels']:
            insert_dict['labels'].append({
                'name':label['name'],
                'url':label['url'],
                'slug':slug(label['name']),
                'geo':{
                    'city':{
                        'name':label['geo']['city'],
                        'slug':slug(label['geo']['city']),
                    },
                    'province':{
                        'name':label['geo']['province'],
                        'slug':slug(label['geo']['province']),
                    },
                    'country':{
                        'name':label['geo']['country'],
                        'slug':slug(label['geo']['country']),
                    },
                },

            })

        # insert author data
        insert_dict['authors'] = []
        for author in form.data['authors']:
            insert_dict['authors'].append({
                'name':author,
                'slug':slug(author),
            })
        # Future work: grab author URL and info from author db.

        # Insert content data
        insert_dict['contents'] = []
        for content in form.data['contents']:
            insert_dict['contents'].append({
                'language':content['language'],
                'from_the':content['from_the'],
                'content':content['text'],
                })
        
        # Insert Left over meta data
        insert_dict['section'] = form.data['section']
        insert_dict['publish_date'] = datetime.datetime.combine(form.data['publish_date'].date(),datetime.time(6,30)),
        insert_dict['tags'] = []
        for tag in form.data['tags'].split(';'):
            insert_dict['tags'].append(tag)
        
        # initialize AWS connection
        aws = AWSWrapper()

        # Upload Tracks
        insert_dict['tracks'] = []
        for track in form.data['tracks']:
            # make sure file is not empty
            if track['mp3'].filename != '': 
                filename = 'Weird_Canada-' + str(form.data['publish_date'].date()) + '-' + slug(track['artist']) + '-' + slug(track['name']) + os.path.splitext(track['mp3'].filename)[1]
                msg.send('uploading ' + filename + ' to AWS...')
                aws.put(data=track['mp3'], folder='music', filename=filename)
                insert_dict['tracks'].append({
                    'name':track['name'],
                    'artist':track['artist'],
                    'url':aws.aws_http + '/music/' + filename,
                })

        # Upload Cover Scan
        insert_dict['images'] = {}
        filename = 'Weird_Canada-' + str(form.data['publish_date'].date()) + '-' + slug(os.path.splitext(form.data['release']['cover_scan']['image'].filename)[0]) + os.path.splitext(form.data['release']['cover_scan']['image'].filename)[1]
        msg.send('uploading cover scan... ' + filename)
        aws.put(data=form.data['release']['cover_scan']['image'], folder='images', filename=filename)
        insert_dict['images']['cover_scan']= {
            'one_liner':form.data['release']['cover_scan']['one_liner'],
            'description':form.data['release']['cover_scan']['description'],
            'url':aws.aws_http + '/images/' + filename,
            }
       
        # Uploading Support Images
        insert_dict['images']['support_images'] = []
        for index, support in enumerate(form.data['release']['support_images']):
            if support['image'].filename != '':
                filename = 'Weird_Canada-' + str(form.data['publish_date'].date()) + '-' + slug(os.path.splitext(support['image'].filename)[0]) + os.path.splitext(support['image'].filename)[1]
                msg.send('uploading support image ... ' + filename)
                aws.put(data=support['image'], folder='images', filename=filename)
                insert_dict['images']['support_images'].append({
                    'one_liner':support['one_liner'],
                    'description':support['description'],
                    'url':aws.aws_http + '/images/' + filename,
                })

        self.object_id = self.collection.insert(insert_dict)
        return self.object_id