def wfs_edit(): user = current_user form = WFSEditForm() add_layer_form = WFSAddLayerForm() couch = CouchDBBox(current_app.config.get('COUCH_DB_URL'), '%s_%s' % (SystemConfig.AREA_BOX_NAME, user.id)) if add_layer_form.validate_on_submit(): title = add_layer_form.data.get('new_layer') layer = re.sub(r'[^a-z0-9]*', '', title.lower()) couch = CouchDBBox(current_app.config.get('COUCH_DB_URL'), '%s_%s' % (SystemConfig.AREA_BOX_NAME, user.id)) schema = florlp.base_schema() if couch.layer_schema(layer): flash(_('Layer %(title)s already exists', title=title), 'error') else: couch.store_layer_schema(layer, schema, title=title) flash(_('Layer %(title)s created', title=title)) form.layer.choices = [(layer, title) for layer, title in couch.get_layer_names() if layer != current_app.config.get('USER_READONLY_LAYER')] if form.validate_on_submit(): layer = form.data.get('layer', current_app.config.get('USER_WORKON_LAYER')) if not int(form.data['external_editor']): return redirect(url_for('.wfs_edit_layer', layer=layer)) else: return redirect(url_for('.wfs_session', layer=layer)) return render_template('maps/wfs_edit.html', form=form, add_layer_form=add_layer_form, not_removable_layer=current_app.config.get('USER_WORKON_LAYER'))
def new(): form = NewUserForm() if form.validate_on_submit(): florlp_session = False user_type = form.data['type'] layers = [(current_app.config.get('USER_READONLY_LAYER'), current_app.config['USER_READONLY_LAYER_TITLE']), (current_app.config.get('USER_WORKON_LAYER'), current_app.config['USER_WORKON_LAYER_TITLE'])] if user_type == User.Type.CUSTOMER: try: florlp_session = create_florlp_session(form.data['florlp_name'], form.data['florlp_password']) except FLOrlpUnauthenticated: flash(_('Invalid florlp username/password'), 'error') return render_template("user/new.html", form=form) user = User(form.data['email'], form.data['password']) user.realname = form.data['realname'] user.florlp_name = form.data['florlp_name'] user.type = form.data.get('type') user.street = form.data['street'] user.housenumber = form.data['housenumber'] user.zipcode = form.data['zipcode'] user.city = form.data['city'] user.active = user_type == User.Type.CUSTOMER verify = EmailVerification.verify(user) db.session.add(user) db.session.add(verify) db.session.commit() send_mail( _("Email verification mail subject"), render_template("user/verify_mail.txt", user=user, verify=verify, _external=True), [user.email] ) couch_url = current_app.config.get('COUCH_DB_URL') if user.is_service_provider or user.is_customer: # create couch document and area boxes # and initialize security init_user_boxes(user, couch_url) if florlp_session: couch = CouchDBBox(couch_url, '%s_%s' % (SystemConfig.AREA_BOX_NAME, user.id)) try: schema, feature_collection = latest_flursteuck_features(florlp_session) finally: remove_florlp_session(florlp_session) feature_collection = transform_geojson(from_srs=current_app.config.get('FLORLP_SHP_SRS'), to_srs=3857, geojson=feature_collection) for layer, title in layers: couch.store_layer_schema(layer, schema, title=title) couch.store_features(layer, feature_collection['features']) if user.is_service_provider: couch = CouchDBBox(couch_url, '%s_%s' % (SystemConfig.AREA_BOX_NAME, user.id)) couch.store_layer_schema(current_app.config['USER_WORKON_LAYER'], florlp.base_schema(), title=current_app.config['USER_WORKON_LAYER_TITLE']) return redirect(url_for(".verify_wait", id=user.id)) return render_template("user/new.html", form=form, customer_id=User.Type.CUSTOMER)