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') )
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 )
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 )
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.
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 )
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 )
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 )
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