def create_style(style_name, style_title, is_default, sld, layer, gs, is_preview=False): if is_preview: style_name = style_name + '__tmp' is_default = utils.set_default_style(layer, gs, is_preview=is_preview, is_default=is_default) style = Style(name=style_name, title=style_title, is_default=is_default, minscale=-1, maxscale=-1, type='CS', sld=sld) style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() sld_body = sld if is_preview: if gs.createOverwrittenStyle(style.name, sld_body, True): return style else: if gs.createStyle(style.name, sld_body): if not is_preview: gs.setLayerStyle(layer, style.name, style.is_default) return style
def create_style(style_name, style_title, is_default, sld, layer_id, is_preview=False): layer = Layer.objects.get(id=int(layer_id)) datastore = layer.datastore workspace = datastore.workspace gs = geographic_servers.get_instance().get_server_by_id( workspace.server.id) layer_styles = StyleLayer.objects.filter(layer=layer) if is_default: for ls in layer_styles: s = Style.objects.get(id=ls.style.id) s.is_default = False s.save() else: has_default_style = False for ls in layer_styles: s = Style.objects.get(id=ls.style.id) if s.is_default: has_default_style = True if not has_default_style: is_default = True if is_preview: style_name = style_name + '__tmp' is_default = False style = Style(name=style_name, title=style_title, is_default=is_default, minscale=-1, maxscale=-1, type='CS', sld=sld) style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() sld_body = sld if is_preview: if gs.createOverwrittenStyle(style.name, sld_body, True): return True else: return False else: if gs.createStyle(style.name, sld_body): if not is_preview: gs.setLayerStyle(layer, style.name, style.is_default) return True else: return False
def _create_example_site(user): site = Site( name='Example Site', owner=user, users=[user], admins=[user], example=True, ) site.put() for v in [4, 5]: name = 'Html%d Example' % v style = Style(site=site, name=name) style.put() rev = StyleRevision(parent=style, rev=0) rev.put() rev.update(render_template('examples/blog-html%d.css' % v)) style.published_rev = rev rev = StyleRevision(parent=style, rev=1) rev.put() rev.update(render_template('examples/blog-html%d-preview.css' % v)) style.preview_rev = rev style.put() page = Page(site=site, name=name, url=url_for('example%d' % v, page_key=0, _external=True), _styles=[style.key()]) page.put() page.url = url_for('example%d' % v, page_key=page.key(), _external=True) page.put() page.queue_refresh()
def new_style(page_id): page = Page.get_admin_or_404(page_id) form = StyleForm(request.form, site=page.site) if request.method == 'POST' and form.validate(): style = Style( name=form.name.data, site=page.site, ) style.put() return redirect(url_for('editor', page_id=page_id)) return render_template('new_style.html', form=form)
def new_style(page_id): page = Page.get_admin_or_404(page_id) form = StyleForm(request.form, site=page.site) if request.method == 'POST' and form.validate(): style = Style( name = form.name.data, site = page.site, ) style.put() return redirect(url_for('editor', page_id=page_id)) return render_template('new_style.html', form=form)
def test_update_3(self) : app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' db.drop_all() db.create_all() s = Style(name="Old Western Ale", description="Taste's like the old west") db.session.add(s) db.session.commit() s.name = "Old Eastern Ale" db.session.commit() result = db.session.query(Style).filter_by(name="Old Eastern Ale").first() self.assertEqual(result.description, "Taste's like the old west")
def testBreweryStyle(self): brw = Brewery( name="Brewery1", city="Austin", state="Texas", country="USA", established=1982, description="Brew1 description", images= "http://www.drinkbritain.com/sites/default/files/Brewery_wood_vessels_small.jpg" ) db.session.add(brw) db.session.commit() self.assertEqual(brw.established, 1982) self.assertEqual(brw.name, "Brewery1") self.assertEqual(brw.id, 1) st = Style(name="Style1", description="Style1 description", ibu_min=10, ibu_max=11, abv_min=20, abv_max=21, srm=21) db.session.add(st) brw.styles.append(st) db.session.commit() self.assertEqual(st.name, "Style1") self.assertEqual(st.sru, "21") self.assertEqual(st in brw.styles)
def testTriple(self): brw = Brewery(name="Coor", city="Austin", state="Texas", country="USA", established=1996, description="Coor is an easy to drink beer.", images="https://www.coor.com/image.jpg") db.session.add(brw) db.session.commit() st = Style(name="Amber Ale", description="Amber Ale is red!", ibu_min=5.4, ibu_max=10.2, abv_min=7.6, abv_max=15, srm=21) db.session.add(st) db.session.commit() b = Beer(name="Lite Beer", organic="N", abv=9.6, ibu=14.2, brewery_id=brw.id, style_id=st.id, images="https://www.litebeer.com/litebeer.jpg") self.assertEqual(b.brewery_id, brw.id) self.assertEqual(b.style_id, st.id) self.assertEqual(b.id, 1)
def page_rpc(page_id): page = Page.get_edit_or_404(page_id) try: message = json.loads(request.form.get('message', '')) except Exception: abort(400) data = message.get('data', None) token = message.get('from', None) if not token or not data: logging.warn('RPC received no token or data.') abort(400) cmd = data.get('cmd', None) if not cmd: logging.warn('RPC received no cmd.') abort(400) channel = PageChannel.gql('WHERE token=:1', token).get() if not channel: # We've timed out the channel. User should refresh the page. logging.debug('Could not find token: %s', token) return dict(cmd='refresh') channel.dt_last_update = datetime.utcnow() channel.put() # Commands if cmd == 'open': page.add_channel(channel) page.update_locks() return 'OK' elif cmd == 'claimLock': page.clean_channels() page.add_channel_first(channel) page.update_locks() return 'OK' elif cmd == 'save': style_id = data.get('style_id', '') style = Style.get_edit_or_404(style_id) if not style.preview_rev: preview_rev = StyleRevision(parent=style, rev=style.published_rev.rev + 1) preview_rev.put() style.preview_rev = preview_rev style.put() log = style.preview_rev.update(data.get('scss', '')) publish = data.get('fPublish', False) preview = not publish if publish: style.published_rev = style.preview_rev style.preview_rev = None style.put() page_key = str(page.key()) memcache.delete(page_key + '-css') memcache.delete(page_key + '-css-etag') page.queue_refresh() return jsonify({'css': page.compressed_css(preview), 'log': log}) else: logging.warn('Got a bad command: %s', cmd) abort(400) # Bad cmd
def _create_example_site(user): site = Site( name='Example Site', owner = user, users = [user], admins = [user], example = True, ) site.put() for v in [4, 5]: name = 'Html%d Example' % v style = Style(site=site, name=name) style.put() rev = StyleRevision(parent=style, rev=0) rev.put() rev.update(render_template('examples/blog-html%d.css' % v)) style.published_rev = rev rev = StyleRevision(parent=style, rev=1) rev.put() rev.update(render_template('examples/blog-html%d-preview.css' % v)) style.preview_rev = rev style.put() page = Page(site=site, name=name, url=url_for('example%d' % v, page_key=0, _external=True), _styles=[style.key()]) page.put() page.url = url_for('example%d' % v, page_key=page.key(), _external=True) page.put() page.queue_refresh()
def add_pages(): for style in Style.all(): page = Page( name = style.name, url = style.url, site = style.site, _styles = [style.key()], ) page.put()
def page_rpc(page_id): page = Page.get_edit_or_404(page_id) try: message = json.loads(request.form.get("message", "")) except Exception: abort(400) data = message.get("data", None) token = message.get("from", None) if not token or not data: logging.warn("RPC received no token or data.") abort(400) cmd = data.get("cmd", None) if not cmd: logging.warn("RPC received no cmd.") abort(400) channel = PageChannel.gql("WHERE token=:1", token).get() if not channel: # We've timed out the channel. User should refresh the page. logging.debug("Could not find token: %s", token) return dict(cmd="refresh") channel.dt_last_update = datetime.utcnow() channel.put() # Commands if cmd == "open": page.add_channel(channel) page.update_locks() return "OK" elif cmd == "claimLock": page.clean_channels() page.add_channel_first(channel) page.update_locks() return "OK" elif cmd == "save": style_id = data.get("style_id", "") style = Style.get_edit_or_404(style_id) if not style.preview_rev: preview_rev = StyleRevision(parent=style, rev=style.published_rev.rev + 1) preview_rev.put() style.preview_rev = preview_rev style.put() log = style.preview_rev.update(data.get("scss", "")) publish = data.get("fPublish", False) preview = not publish if publish: style.published_rev = style.preview_rev style.preview_rev = None style.put() page_key = str(page.key()) memcache.delete(page_key + "-css") memcache.delete(page_key + "-css-etag") page.queue_refresh() return jsonify({"css": page.compressed_css(preview), "log": log}) else: logging.warn("Got a bad command: %s", cmd) abort(400) # Bad cmd
def insert_style(style_list) : for style in style_list : # query for beers and make the relationship beer_inventory = db.session.query(Beer).filter(Beer.scrape_style_id == style.get("id")).all() if style.get("name") is not None: string_name = unicodedata.normalize('NFKD', style.get("name")).encode('ascii', 'ignore') else : for item in beer_inventory : db.session.query(Beer).filter(Beer.beer_id == item.beer_id).delete() db.session.commit() continue if style.get("description") is not None : string_desc = unicodedata.normalize('NFKD', style.get("description")).encode('ascii','ignore') else : for item in beer_inventory : db.session.query(Beer).filter(Beer.beer_id == item.beer_id).delete() db.session.commit() continue if style.get("ibuMin") is None or style.get("ibuMax") is None or style.get("abvMin") is None or style.get("abvMax") is None : for item in beer_inventory : db.session.query(Beer).filter(Beer.beer_id == item.beer_id).delete() db.session.commit() continue # add the data and commit s = Style(name=string_name, description=string_desc, ibu_min=style.get("ibuMin"), ibu_max=style.get("ibuMax"), abv_min=style.get("abvMin"), abv_max=style.get("abvMax")) s.beers = beer_inventory db.session.add(s) db.session.commit() if style.get("name") is not None: logger.info("style: " + style.get("name") + " populated") db.session.commit()
def test_relationship_2(self) : app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///:memory:' db.drop_all() db.create_all() coors_light = Beer(name='Coors Light', description="Taste's like urine.", is_organic="N", abv=11.1, ibu=30) blue_moon = Beer(name='Blue Moon', description="Pretty good.", is_organic="N", abv=6.3, ibu=50) light_lager = Style(name="Light Hail Lager") self.assertEqual(light_lager.beers, []) light_lager.beers = [coors_light, blue_moon] db.session.add(blue_moon) db.session.add(coors_light) db.session.add(light_lager) self.assertEqual(light_lager.beers[0], coors_light) self.assertEqual(light_lager.beers[1], blue_moon) self.assertEqual(light_lager.style_id, blue_moon.style_id) db.session.commit()
def setUp(self): """Create test client, add sample data.""" db.drop_all() db.create_all() self.client = app.test_client() self.user1 = User.signup("*****@*****.**", "password") self.user1.id = 11111 self.user2 = User.signup("*****@*****.**", "horseman") self.user2.id = 22222 db.session.commit() cat3 = Category(id=3, name="North American Origin Ales") cat1 = Category(id=1, name="British Origin Ales") db.session.add_all([cat3, cat1]) db.session.commit() style1 = Style(id=35, category_id=3, name="American-Style Wheat Wine Ale") style2 = Style(id=5, category_id=1, name="Extra Special Bitter") style3 = Style(id=25, category_id=3, name="American-Style Pale Ale") db.session.add_all([style1, style2, style3]) db.session.commit() tb3 = TriedBeer(user_id=11111, beer_id="UJGpVS") lb1 = LikedBeer(user_id=11111, beer_id="xwYSL2") wb1 = WishedBeer(user_id=11111, beer_id="zfP2fK") db.session.add_all([tb3, lb1, wb1]) db.session.commit()
def updateStyleName(self): st = Style(name="IPA", description="IPA is bitter.", ibu_min=13, ibu_max=21.4, abv_min=8.2, abv_max=16.7, srm=19) db.session.add(st) db.session.commit() self.assertEqual(st.name, "IPA") db.session.query().filter(Style.name == "IPA").update( {"name": "Stout"}) db.session.commit() self.assertNotEqual(st.name, "IPA")
def addAlbum(): if 'username' not in login_session: return redirect('/login') if request.method == "GET": styles = session.query(Style).all() return render_template('addAlbum.html', styles=styles) elif request.method == "POST": name = request.form['name'] band = request.form['band'] year = request.form['year'] imglink = request.form['imglink'] tracklist = request.form['tracklist'] if request.form.getlist('style') != []: styles = request.form.getlist('style') print(styles) else: styles = {request.form['styleAdd']} print(styles) if styles == [u'']: print("estavazio") styles.append("Outros") new_album = Vinyl(name=name, band=band, year=year, imglink=imglink, tracklist=tracklist) # adds styles to the album for style in styles: try: querystyle = session.query(Style).filter_by(name=style).one() new_album.styles.append(querystyle) # if the style does not exist, creates it except: newstyle = Style(name=style) session.add(newstyle) session.commit new_album.styles.append(newstyle) # adds album to db session.add(new_album) session.commit() flash("You've just sucessfully added '{}' to the database.".format( new_album.name)) return redirect('/')
def create_style(request, json_data, layer, gs, is_preview=False): name = json_data.get('name') if is_preview: name = name + '__tmp' is_default = json_data.get('is_default', False) is_default = utils.set_default_style(layer, gs, is_preview=is_preview, is_default=is_default) style = Style(name=name, title=json_data.get('title'), is_default=is_default, minscale=json_data.get('minscale'), maxscale=json_data.get('maxscale'), type='US') style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() for r in json_data.get('rules'): json_rule = r.get('rule') filter_text = "" if json_rule.get('filter').__len__() != 0: filter_text = str(json.dumps(json_rule.get('filter'))) rule = Rule(style=style, name=json_rule.get('name'), title=json_rule.get('title'), abstract='', filter=filter_text, minscale=json_rule.get('minscale'), maxscale=json_rule.get('maxscale'), order=json_rule.get('order')) rule.save() for sym in r.get('symbolizers'): if sym.get('type') == 'PolygonSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = PolygonSymbolizer( rule=rule, order=int(sym.get('order')), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'LineSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = LineSymbolizer( rule=rule, order=int(sym.get('order')), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'MarkSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = MarkSymbolizer( rule=rule, order=int(sym.get('order')), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), well_known_name=json_sym.get('well_known_name'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'ExternalGraphicSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = ExternalGraphicSymbolizer( rule=rule, order=int(sym.get('order')), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), online_resource=json_sym.get('online_resource'), format=json_sym.get('format')) symbolizer.save() elif sym.get('type') == 'TextSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = TextSymbolizer( rule=rule, order=int(sym.get('order')), label=json_sym.get('label'), font_family=json_sym.get('font_family'), font_size=json_sym.get('font_size'), font_weight=json_sym.get('font_weight'), font_style=json_sym.get('font_style'), halo_fill=json_sym.get('halo_fill'), halo_fill_opacity=json_sym.get('halo_fill_opacity'), halo_radius=json_sym.get('halo_radius'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), ) symbolizer.save() sld_body = sld_builder.build_sld(layer, style) if is_preview: if gs.createOverwrittenStyle(style.name, sld_body, True): return style else: if gs.createStyle(style.name, sld_body): if not is_preview: gs.setLayerStyle(layer, style.name, style.is_default) return style
def create_style(request, json_data, layer_id, is_preview=False): layer = Layer.objects.get(id=int(layer_id)) datastore = layer.datastore workspace = datastore.workspace gs = geographic_servers.get_instance().get_server_by_id( workspace.server.id) layer_styles = StyleLayer.objects.filter(layer=layer) is_default = False if not is_preview: is_default = json_data.get('is_default') if is_default: for ls in layer_styles: s = Style.objects.get(id=ls.style.id) s.is_default = False s.save() else: has_default_style = False for ls in layer_styles: s = Style.objects.get(id=ls.style.id) if s.is_default: has_default_style = True if not has_default_style: is_default = True name = json_data.get('name') if is_preview: name = name + '__tmp' is_default = False style = Style(name=name, title=json_data.get('title'), is_default=is_default, type='IN') if json_data.get('minscale') != '': style.minscale = json_data.get('minscale') else: style.minscale = -1 if json_data.get('maxscale') != '': style.maxscale = json_data.get('maxscale') else: style.maxscale = -1 style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() for r in json_data.get('rules'): json_rule = r.get('rule') filter_text = "" if json_rule.get('filter').__len__() != 0: filter_text = str(json.dumps(json_rule.get('filter'))) rule = Rule(style=style, name=json_rule.get('name'), title=json_rule.get('title'), abstract='', filter=filter_text, minscale=json_rule.get('minscale'), maxscale=json_rule.get('maxscale'), order=json_rule.get('order')) rule.save() for sym in r.get('symbolizers'): if sym.get('type') == 'PolygonSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = PolygonSymbolizer( rule=rule, order=int(sym.get('order')), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'LineSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = LineSymbolizer( rule=rule, order=int(sym.get('order')), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'MarkSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = MarkSymbolizer( rule=rule, order=int(sym.get('order')), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), well_known_name=json_sym.get('well_known_name'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'ExternalGraphicSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = ExternalGraphicSymbolizer( rule=rule, order=int(sym.get('order')), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), online_resource=json_sym.get('online_resource'), format=json_sym.get('format')) symbolizer.save() elif sym.get('type') == 'TextSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = TextSymbolizer( rule=rule, order=int(sym.get('order')), label=json_sym.get('label'), font_family=json_sym.get('font_family'), font_size=json_sym.get('font_size'), font_weight=json_sym.get('font_weight'), font_style=json_sym.get('font_style'), halo_fill=json_sym.get('halo_fill'), halo_fill_opacity=json_sym.get('halo_fill_opacity'), halo_radius=json_sym.get('halo_radius'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), ) symbolizer.save() sld_body = sld_builder.build_sld(layer, style) if is_preview: if gs.createOverwrittenStyle(style.name, sld_body, True): return True else: return False else: if gs.createStyle(style.name, sld_body): if not is_preview: gs.setLayerStyle(layer, style.name, style.is_default) return True else: return False
def add_music_style_tag(self, name): style = Style(name=name) database.session.add(style) database.session.commit()
def create_default_style(layer_id, style_name, style_type, geom_type, count): layer = Layer.objects.get(id=int(layer_id)) minscaledenominator = -1 maxscaledenominator = -1 if count and count > 200000: minscaledenominator = 0 maxscaledenominator = 50000 style = Style(name=style_name, title=_('Default style for: ') + layer.title, is_default=True, type=style_type, minscale=minscaledenominator, maxscale=maxscaledenominator) style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() if style.is_default: layer_styles = StyleLayer.objects.filter(layer=layer) for ls in layer_styles: s = Style.objects.get(id=ls.style.id) s.is_default = False symbol_type = None if geom.isPoint(geom_type): symbol_type = 'MarkSymbolizer' elif geom.isLine(geom_type): symbol_type = 'LineSymbolizer' elif geom.isPolygon(geom_type): symbol_type = 'PolygonSymbolizer' elif geom.isRaster(geom_type): symbol_type = 'RasterSymbolizer' rule = Rule(style=style, name='Default symbol', title=_('Default symbol'), abstract='', filter=str(""), minscale=minscaledenominator, maxscale=maxscaledenominator, order=0) rule.save() if symbol_type == 'PolygonSymbolizer': symbolizer = PolygonSymbolizer(rule=rule, order=0, fill='#383838', fill_opacity=0.6, stroke='#000000', stroke_width=1, stroke_opacity=1.0, stroke_dash_array='none') symbolizer.save() elif symbol_type == 'LineSymbolizer': symbolizer = LineSymbolizer(rule=rule, order=0, stroke='#000000', stroke_width=1, stroke_opacity=1.0, stroke_dash_array='none') symbolizer.save() elif symbol_type == 'MarkSymbolizer': symbolizer = MarkSymbolizer(rule=rule, order=0, opacity=1.0, size=8, rotation=0, well_known_name='circle', fill='#383838', fill_opacity=0.6, stroke='#000000', stroke_width=1, stroke_opacity=1.0, stroke_dash_array='none') symbolizer.save() elif symbol_type == 'RasterSymbolizer': color_map = ColorMap(type='ramp', extended=False) color_map.save() symbolizer = RasterSymbolizer(rule=rule, color_map=color_map, order=0, opacity=1.0) symbolizer.save() sld_body = sld_builder.build_sld(layer, style) return sld_body
def clone_style(mapservice, layer, original_style_name, cloned_style_name): exists_cloned_style = False try: original_style = Style.objects.filter( name__exact=original_style_name)[0] except Exception as e: print str(e) return False try: style = Style.objects.filter(name__exact=cloned_style_name)[0] exists_cloned_style = True except Exception as e: print "DEBUG: Problem getting style .." + cloned_style_name print str(e) if exists_cloned_style: print "DEBUG: Exists cloned style .." + cloned_style_name rule = Rule.objects.filter(style=style)[0] symbolizers_to_delete = Symbolizer.objects.filter(rule=rule) for i in symbolizers_to_delete: i.delete() else: print "DEBUG: Not existe cloned style .." + cloned_style_name style = Style(name=cloned_style_name, title=original_style_name, is_default=True, type='US') style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() rule = Rule(style=style, name='Default symbol', title=original_style_name, abstract='', filter=str(""), minscale=-1, maxscale=-1, order=0) rule.save() original_rules = Rule.objects.filter( style=original_style).order_by('order') for original_rule in original_rules: original_symbolizers = Symbolizer.objects.filter(rule=original_rule) for original_symbolizer in original_symbolizers: if hasattr(original_symbolizer, 'externalgraphicsymbolizer'): symbolizer = ExternalGraphicSymbolizer( rule=rule, order=original_symbolizer.externalgraphicsymbolizer.order, opacity=original_symbolizer.externalgraphicsymbolizer. opacity, size=original_symbolizer.externalgraphicsymbolizer.size, rotation=original_symbolizer.externalgraphicsymbolizer. rotation, online_resource=original_symbolizer. externalgraphicsymbolizer.online_resource, format=original_symbolizer.externalgraphicsymbolizer. format, ) symbolizer.save() elif hasattr(original_symbolizer, 'polygonsymbolizer'): symbolizer = PolygonSymbolizer( rule=rule, order=original_symbolizer.polygonsymbolizer.order, fill=original_symbolizer.polygonsymbolizer.fill, fill_opacity=original_symbolizer.polygonsymbolizer. fill_opacity, stroke=original_symbolizer.polygonsymbolizer.stroke, stroke_width=original_symbolizer.polygonsymbolizer. stroke_width, stroke_opacity=original_symbolizer.polygonsymbolizer. stroke_opacity, stroke_dash_array=original_symbolizer.polygonsymbolizer. stroke_dash_array) symbolizer.save() elif hasattr(original_symbolizer, 'linesymbolizer'): symbolizer = LineSymbolizer( rule=rule, order=original_symbolizer.linesymbolizer.order, stroke=original_symbolizer.linesymbolizer.stroke, stroke_width=original_symbolizer.linesymbolizer. stroke_width, stroke_opacity=original_symbolizer.linesymbolizer. stroke_opacity, stroke_dash_array=original_symbolizer.linesymbolizer. stroke_dash_array) symbolizer.save() elif hasattr(original_symbolizer, 'marksymbolizer'): symbolizer = MarkSymbolizer( rule=rule, order=original_symbolizer.marksymbolizer.order, opacity=original_symbolizer.marksymbolizer.opacity, size=original_symbolizer.marksymbolizer.size, rotation=original_symbolizer.marksymbolizer.rotation, well_known_name=original_symbolizer.marksymbolizer. well_known_name, fill=original_symbolizer.marksymbolizer.fill, fill_opacity=original_symbolizer.marksymbolizer. fill_opacity, stroke=original_symbolizer.marksymbolizer.stroke, stroke_width=original_symbolizer.marksymbolizer. stroke_width, stroke_opacity=original_symbolizer.marksymbolizer. stroke_opacity, stroke_dash_array=original_symbolizer.marksymbolizer. stroke_dash_array) symbolizer.save() sld_body = sld_builder.build_library_symbol(rule) s = mapservice.getStyle(style.name) if s is None: print "DEBUG: style not exists in Geoserver .. " + style.name if mapservice.createStyle(style.name, sld_body): mapservice.setLayerStyle(layer, cloned_style_name, style.is_default) else: "DEBUG: problem creating style !!!!!" + style.name else: print "DEBUG: Style exists in Geoserver .. " + style.name if not mapservice.createStyle(cloned_style_name, sld_body): mapservice.updateStyle(layer, cloned_style_name, sld_body) mapservice.setLayerStyle(layer, cloned_style_name, style.is_default) return True
db.session.commit() review1 = Review(user_id = 1, beer_id = "xwYSL2", beer_name = "15th Anniversary Ale", rating = 4, text = "I really liked this beer") db.session.add(review1) db.session.commit() cat1 = Category(id = 1, name = "British Origin Ales") cat2 = Category(id = 2, name = "Irish Origin Ales") cat3 = Category(id = 3, name = "North American Origin Ales") cat4 = Category(id = 4, name = "German Origin Ales") cat5 = Category(id = 5, name = "Belgian & French Origin Ales") cat6 = Category(id = 6, name = "International Ale Styles") cat7 = Category(id = 7, name = "European-Germanic Lager") cat8 = Category(id = 8, name = "North American lager") cat9 = Category(id = 9, name = "Other Lager") cat10 = Category(id = 10, name = "International Styles") cat11 = Category(id = 11, name = "Hybrid / Mixed Beer") cat12 = Category(id = 12, name = "Mead, Cider, & Perry") cat13 = Category(id = 13, name = "Other Origin") cat14 = Category(id = 14, name = "Malternative Beverages") db.session.add_all([cat1,cat2,cat3,cat4,cat5,cat6,cat7,cat8,cat9,cat10,cat11,cat12,cat12,cat13,cat14]) db.session.commit() i = 0 while i < len(styledata): new_style = Style(id = styledata[i][0],category_id = styledata[i][1], name = styledata[i][2]) db.session.add(new_style) db.session.commit() i +=1
def parse_this(payload): # Parsing through data. Each item we pull must have every attribute present for us to grab it. for key,values in payload.items(): if "data" in key: data = json.dumps(values) data = json.loads(data) # Going through the json of the data that we will scrape (each is a beer/brewery/style combo) for x in data: b_description = "" established = "" country = "" state = "" city = "" website = "" images = "" abv = "" ibu = "" nameDisplay = "" organic = "" pic = "" shortName = "" description = "" ibuMin = "" ibuMax = "" abvMin = "" abvMax = "" srm = "" # Checking if brewery exists for a beer and other attributes for a brewery that we have for the model. if "breweries" in x: brewery = x['breweries'][0]["name"] try: if 'description' in x['breweries'][0]: b_description = x['breweries'][0]['description'] if len(b_description) > 200: b_description = "" except KeyError: # b_description = "Description Unavailable" continue try: if 'established' in x['breweries'][0]: established = x['breweries'][0]['established'] # print(established) except KeyError: # established = "Unavailable" continue if established == "": continue try: if x['breweries'][0]['locations'][0]['country']['displayName'] != None: country = x['breweries'][0]['locations'][0]['country']['displayName'] except KeyError: # country = "Country Name Unavailable" continue try: if x['breweries'][0]['locations'][0]['region'] != None: state = x['breweries'][0]['locations'][0]['region'] except KeyError: state = "State Name Unavailable" # continue try: if x['breweries'][0]['locations'][0]['region']: city = x['breweries'][0]['locations'][0]['locality'] except KeyError: # city = "City Name Unavailable" continue try: if x['breweries'][0]['locations'][0]['website']: website = x['breweries'][0]['locations'][0]['website'] except KeyError: # website = "www.empty.com" continue try: if 'images' in x['breweries'][0]: images = x['breweries'][0]['images']['squareLarge'] except KeyError: # images = "https://i2.wp.com/www.worldbeersguide.com/wp-content/uploads/2017/01/slide6.jpg" continue # print(brewery, b_description, established, country, state, city, website, images) try: if x['abv']: abv = x['abv'] except KeyError: # abv = "ABV Unavailable" continue try: if x['ibu']: ibu = x['ibu'] except KeyError: # ibu = "IBU Unavailable" continue try: if x['nameDisplay']: nameDisplay = x['nameDisplay'] if nameDisplay in beer_names: continue # beer_names.append(u''.join(nameDisplay).encode('utf-8')) # print(nameDisplay) except KeyError: # nameDisplay = "Name Unavailable" continue try: if x['isOrganic']: organic = x['isOrganic'] except KeyError: # organic = "Organic-ness Unavailable!" continue try: if x['labels']['large']: pic = x['labels']['large'] except: # pic = "www.empty.com" continue # Checking if style exists for a beer. We also grab other attributes that we need for our style model. if 'style' in x: try: if x['style']['shortName']: shortName = x['style']['shortName'] except KeyError: # shortName = "Style Name Unavailable" continue try: if x['style']['description']: description = x['style']['description'] except KeyError: # description = "Description Unavailable" continue try: if x['style']['srmMin'] and x['style']['srmMax']: srm = (float(x['style']['srmMin']) + float(x['style']['srmMax'])) / 2 except KeyError: # ibuMin = "IBU Minimum Unavailable" # assert(False) continue try: if x['style']['ibuMin']: ibuMin = x['style']['ibuMin'] except KeyError: # ibuMin = "IBU Minimum Unavailable" continue try: if x['style']['ibuMax']: ibuMax = x['style']['ibuMax'] except KeyError: # ibuMax = "IBU Maximum Unavailable" continue try: if x['style']['abvMin']: abvMin = x['style']['abvMin'] except KeyError: # abvMin = "ABV Minimum Unavailable" continue try: if x['style']['abvMax']: abvMax = x['style']['abvMax'] except KeyError: # abvMax = "ABV Maximum Unavailable" continue """ This is checking if we have not already encountered this style, and if so, make the style and make the style's pk the beer's fk style to the value recorded. If not, we set the fk of beer to the value recorded of the style we have already seen. """ st_id = -1 if not styles_dic.get(shortName): st = Style(name=shortName, description=description, ibu_min=float(ibuMin), ibu_max=float(ibuMax), abv_min=float(abvMin), abv_max=float(abvMax), srm=srm) db.session.add(st) db.session.commit() styles_dic[shortName] = st.id style_obj[shortName] = st st_id = st.id else: st_id = styles_dic[shortName] st = style_obj[shortName] """ Same as the block of code above, only that this deals with breweries. """ brw_id = -1 if not brew_dic.get(brewery): brw = Brewery(name=brewery, city=city, state=state, country=country, established=int(established), description=b_description, images=images, website=website) db.session.add(brw) db.session.commit() brew_dic[brewery] = brw.id brew_obj[brewery] = brw brw_id = brw.id else: brw_id = brew_dic[brewery] brw = brew_obj[brewery] """ Creating a beer to be put into our database. """ b = Beer(name=nameDisplay, organic=organic, abv=float(abv), ibu=float(ibu), brewery_id=brw_id, style_id=st_id, images=pic) db.session.add(b) db.session.commit() brw.styles.append(st) # This is to append brewery name to the beer name to search in ratebeer. brew_ind = brewery.lower().find("brew") if brew_ind == -1: brew_ind == "" beer_names.append(u''.join(nameDisplay).encode('utf-8')) else: brew_ind = u''.join(brewery[0:(brew_ind)-1]).encode('utf-8') temp = brew_ind + " " + u''.join(nameDisplay).encode('utf-8') beer_names.append(temp) return beer_names
def upload_library(name, description, file): gs = geographic_servers.get_instance().get_default_server() library = Library(name=name, description=description) library.save() library_path = utils.check_library_path(library) file_path = utils.__get_uncompressed_file_upload_path(file) utils.copyrecursively(file_path + "/resources/", library_path) file_list = os.listdir(file_path) for file in file_list: if not os.path.isdir(file_path + "/" + file): f = open(file_path + "/" + file, 'r') sld = sld_reader.parse(f) style_name = remove_accents(sld.NamedLayer[0].Name) sld.NamedLayer[0].Name = style_name style_title = sld.NamedLayer[0].UserStyle[0].FeatureTypeStyle[ 0].Rule[0].Title r = sld.NamedLayer[0].UserStyle[0].FeatureTypeStyle[0].Rule[0] style = Style(name=style_name, title=style_title, is_default=True, type="US") style.save() rule = Rule(style=style, name=style_name, title=style_title, abstract='', filter=str(""), minscale=-1 if r.MinScaleDenominator is None else r.MinScaleDenominator, maxscale=-1 if r.MaxScaleDenominator is None else r.MaxScaleDenominator, order=0) rule.save() library_rule = LibraryRule(library=library, rule=rule) library_rule.save() scount = r.Symbolizer.__len__() - 1 for s in r.Symbolizer: if s.original_tagname_ == 'PointSymbolizer': opacity = s.Graphic.Opacity.valueOf_ rotation = s.Graphic.Rotation.valueOf_ size = s.Graphic.Size.valueOf_ if len(s.Graphic.Mark) >= 1: mark = s.Graphic.Mark[0] stroke = '#000000' if mark.Stroke.CssParameter.__len__() > 0: stroke = mark.Stroke.CssParameter[0].valueOf_ stroke_width = 1 if mark.Stroke.CssParameter.__len__() > 1: stroke_width = mark.Stroke.CssParameter[1].valueOf_ stroke_opacity = 1 if mark.Stroke.CssParameter.__len__() > 2: stroke_opacity = mark.Stroke.CssParameter[ 2].valueOf_ stroke_dash_array = 'none' if mark.Stroke.CssParameter.__len__() > 3: stroke_dash_array = mark.Stroke.CssParameter[ 3].valueOf_ symbolizer = MarkSymbolizer( rule=rule, order=scount, opacity=opacity, size=size, rotation=rotation, well_known_name=mark.WellKnownName, fill=mark.Fill.CssParameter[0].valueOf_, fill_opacity=mark.Fill.CssParameter[1].valueOf_, stroke=stroke, stroke_width=stroke_width, stroke_opacity=stroke_opacity, stroke_dash_array=stroke_dash_array) symbolizer.save() if len(s.Graphic.ExternalGraphic) >= 1: external_graphic = s.Graphic.ExternalGraphic[0] online_resource = external_graphic.OnlineResource.href.split( '/') online_resource[-2] = library.name new_online_resource = settings.MEDIA_URL + online_resource[ -3] + '/' + library.name + '/' + remove_accents( online_resource[-1]) symbolizer = ExternalGraphicSymbolizer( rule=rule, order=scount, opacity=opacity, size=size, rotation=rotation, online_resource=new_online_resource, format=external_graphic.Format) symbolizer.save() elif s.original_tagname_ == 'LineSymbolizer': stroke = '#000000' if s.Stroke: if s.Stroke.CssParameter.__len__() > 0: stroke = s.Stroke.CssParameter[0].valueOf_ stroke_width = 1 if s.Stroke.CssParameter.__len__() > 1: stroke_width = s.Stroke.CssParameter[1].valueOf_ stroke_opacity = 1 if s.Stroke.CssParameter.__len__() > 2: stroke_opacity = s.Stroke.CssParameter[2].valueOf_ stroke_dash_array = 'none' if s.Stroke.CssParameter.__len__() > 3: stroke_dash_array = s.Stroke.CssParameter[ 3].valueOf_ symbolizer = LineSymbolizer( rule=rule, order=scount, stroke=stroke, stroke_width=stroke_width, stroke_opacity=stroke_opacity, stroke_dash_array=stroke_dash_array) symbolizer.save() elif s.original_tagname_ == 'PolygonSymbolizer': stroke = '#000000' if s.Stroke.CssParameter.__len__() > 0: stroke = s.Stroke.CssParameter[0].valueOf_ stroke_width = 1 if s.Stroke.CssParameter.__len__() > 1: stroke_width = s.Stroke.CssParameter[1].valueOf_ stroke_opacity = 1 if s.Stroke.CssParameter.__len__() > 2: stroke_opacity = s.Stroke.CssParameter[2].valueOf_ stroke_dash_array = 'none' if s.Stroke.CssParameter.__len__() > 3: stroke_dash_array = s.Stroke.CssParameter[3].valueOf_ symbolizer = PolygonSymbolizer( rule=rule, order=scount, fill=s.Fill.CssParameter[0].valueOf_, fill_opacity=s.Fill.CssParameter[1].valueOf_, stroke=stroke, stroke_width=stroke_width, stroke_opacity=stroke_opacity, stroke_dash_array=stroke_dash_array) symbolizer.save() scount -= 1 output = StringIO.StringIO() sld.export(output, 0) sld_body = output.getvalue() output.close() gs.createStyle(style.name, sld_body) gs.reload_nodes() utils.__delete_temporaries(file_path)
def delete_style(): style_id = int(request.form.get('style_id', -1)) style = Style.get_admin_or_404(style_id) style.delete() return 'OK'
def add_symbol(request, json_rule, library_id, symbol_type): gs = geographic_servers.get_instance().get_default_server() name = json_rule.get('name') title = json_rule.get('title') if _valid_name_regex.search(name) == None: raise InvalidValue( -1, _("Invalid name: '{value}'. Name should not contain any special characters" ).format(value=name)) #if _valid_title_regex.search(title) == None: # raise InvalidValue(-1, _("Invalid title: '{value}'. Title should not contain any special characters").format(value=title)) style = Style(name=name, title=title, is_default=False, type="US") style.save() rule = Rule(style=style, name=name, title=title, abstract="", filter=str(""), minscale=json_rule.get('minscale'), maxscale=json_rule.get('maxscale'), order=json_rule.get('order')) rule.save() library = Library.objects.get(id=int(library_id)) library_rule = LibraryRule(library=library, rule=rule) library_rule.save() symbs = json_rule.get('symbolizers') for sym in symbs: json_sym = json.loads(sym.get('json')) if symbol_type == 'ExternalGraphicSymbolizer': library_path = utils.check_library_path(library) file_name = name + '.png' if utils.save_external_graphic(library_path, request.FILES['eg-file'], file_name): online_resource = utils.get_online_resource(library, file_name) json_sym['online_resource'] = json_sym[ 'online_resource'].replace("online_resource_replace", online_resource) symbolizer = ExternalGraphicSymbolizer( rule=rule, order=json_rule.get('order'), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), online_resource=json_sym.get('online_resource'), format=json_sym.get('format')) symbolizer.save() if symbol_type == 'PolygonSymbolizer': symbolizer = PolygonSymbolizer( rule=rule, order=json_sym.get('order'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif symbol_type == 'LineSymbolizer': symbolizer = LineSymbolizer( rule=rule, order=json_sym.get('order'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif symbol_type == 'MarkSymbolizer' or symbol_type == 'PointSymbolizer': symbolizer = MarkSymbolizer( rule=rule, order=json_sym.get('order'), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), well_known_name=json_sym.get('well_known_name'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() sld_body = sld_builder.build_library_symbol(rule) if gs.createStyle(style.name, sld_body): return True else: gs.updateStyle(None, style.name, sld_body) return True
def get_sld(request, type, json_data, layer_id, single_symbol=False): layer = Layer.objects.get(id=layer_id) layer.name = layer.datastore.workspace.name + ':' + layer.name is_default = False if json_data.get('is_default'): is_default = json_data.get('is_default') style = Style(name=json_data.get('name'), title=json_data.get('title'), is_default=is_default, type=type) style.save() for r in json_data.get('rules'): json_rule = r.get('rule') filter_text = "" if json_rule.get('filter').__len__() != 0: filter_text = str(json.dumps(json_rule.get('filter'))) rule = Rule(style=style, name=json_rule.get('name'), title=json_rule.get('title'), abstract='', filter=filter_text, minscale=json_rule.get('minscale'), maxscale=json_rule.get('maxscale'), order=json_rule.get('order')) rule.save() for sym in r.get('symbolizers'): if sym.get('type') == 'PolygonSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = PolygonSymbolizer( rule=rule, order=int(sym.get('order')), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'LineSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = LineSymbolizer( rule=rule, order=int(sym.get('order')), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'MarkSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = MarkSymbolizer( rule=rule, order=int(sym.get('order')), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), well_known_name=json_sym.get('well_known_name'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), stroke=json_sym.get('stroke'), stroke_width=json_sym.get('stroke_width'), stroke_opacity=json_sym.get('stroke_opacity'), stroke_dash_array=json_sym.get('stroke_dash_array')) symbolizer.save() elif sym.get('type') == 'ExternalGraphicSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = ExternalGraphicSymbolizer( rule=rule, order=int(sym.get('order')), opacity=json_sym.get('opacity'), size=json_sym.get('size'), rotation=json_sym.get('rotation'), online_resource=json_sym.get('online_resource'), format=json_sym.get('format')) symbolizer.save() elif sym.get('type') == 'TextSymbolizer': json_sym = json.loads(sym.get('json')) symbolizer = TextSymbolizer( rule=rule, order=int(sym.get('order')), label=json_sym.get('label'), font_family=json_sym.get('font_family'), font_size=json_sym.get('font_size'), font_weight=json_sym.get('font_weight'), font_style=json_sym.get('font_style'), halo_fill=json_sym.get('halo_fill'), halo_fill_opacity=json_sym.get('halo_fill_opacity'), halo_radius=json_sym.get('halo_radius'), fill=json_sym.get('fill'), fill_opacity=json_sym.get('fill_opacity'), anchor_point_x=json_sym.get('anchor_point_x'), anchor_point_y=json_sym.get('anchor_point_y'), ) symbolizer.save() sld_body = sld_builder.build_sld(layer, style, single_symbol) style.delete() return sld_body
def sld_import(name, is_default, layer_id, file, mapservice): layer = Layer.objects.get(id=int(layer_id)) ### write the data to a temp file tup = tempfile.mkstemp() # make a tmp file f = os.fdopen(tup[0], 'w') # open the tmp file for writing f.write(file.read()) # write the tmp file f.close() filepath = tup[1] tmp_sld = open(filepath, 'r') sld = sld_builder.parse_sld(tmp_sld) style = Style(name=name, title=sld.NamedLayer[0].UserStyle[0].Title, is_default=is_default, type="EX") style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() rules = sld.NamedLayer[0].UserStyle[0].FeatureTypeStyle[0].Rule for r in rules: filter = utils.filter_to_json(r.Filter) rule = Rule(style=style, name=r.Name, title=r.Title, abstract='', filter=json.dumps(filter), minscale=-1 if r.MinScaleDenominator is None else r.MinScaleDenominator, maxscale=-1 if r.MaxScaleDenominator is None else r.MaxScaleDenominator, order=0) rule.save() scount = 0 for s in r.Symbolizer: if s.original_tagname_ == 'PointSymbolizer': opacity = s.Graphic.Opacity.valueOf_ rotation = s.Graphic.Rotation.valueOf_ size = s.Graphic.Size.valueOf_ if len(s.Graphic.Mark) >= 1: mark = s.Graphic.Mark[0] fill = '#383838' fill_opacity = 0.5 if len(mark.Fill.CssParameter) > 0: for css_parameter in mark.Fill.CssParameter: if css_parameter.name == 'fill': fill = css_parameter.valueOf_ if css_parameter.name == 'fill-opacity': fill_opacity = css_parameter.valueOf_ stroke = '#ffffff' stroke_width = 1 stroke_opacity = 0.0 stroke_dash_array = 'none' if len(mark.Stroke.CssParameter) > 0: for css_parameter in mark.Stroke.CssParameter: if css_parameter.name == 'stroke': stroke = css_parameter.valueOf_ if css_parameter.name == 'stroke-width': stroke_width = css_parameter.valueOf_ if css_parameter.name == 'stroke-opacity': stroke_opacity = css_parameter.valueOf_ if css_parameter.name == 'stroke-dasharray': stroke_dash_array = css_parameter.valueOf_ symbolizer = MarkSymbolizer( rule=rule, order=scount, opacity=opacity, size=size, rotation=rotation, well_known_name=mark.WellKnownName, fill=fill, fill_opacity=fill_opacity, stroke=stroke, stroke_width=stroke_width, stroke_opacity=stroke_opacity, stroke_dash_array=stroke_dash_array) symbolizer.save() if len(s.Graphic.ExternalGraphic) >= 1: print 'ExternalGraphic' elif s.original_tagname_ == 'LineSymbolizer': stroke = '#ffffff' stroke_width = 1 stroke_opacity = 0.0 stroke_dash_array = 'none' if len(s.Stroke.CssParameter) > 0: for css_parameter in s.Stroke.CssParameter: if css_parameter.name == 'stroke': stroke = css_parameter.valueOf_ if css_parameter.name == 'stroke-width': stroke_width = css_parameter.valueOf_ if css_parameter.name == 'stroke-opacity': stroke_opacity = css_parameter.valueOf_ if css_parameter.name == 'stroke-dasharray': stroke_dash_array = css_parameter.valueOf_ symbolizer = LineSymbolizer( rule=rule, order=scount, stroke=stroke, stroke_width=stroke_width, stroke_opacity=stroke_opacity, stroke_dash_array=stroke_dash_array) symbolizer.save() elif s.original_tagname_ == 'PolygonSymbolizer': fill = '#383838' fill_opacity = 0.5 if len(s.Fill.CssParameter) > 0: for css_parameter in s.Fill.CssParameter: if css_parameter.name == 'fill': fill = css_parameter.valueOf_ if css_parameter.name == 'fill-opacity': fill_opacity = css_parameter.valueOf_ stroke = '#ffffff' stroke_width = 1 stroke_opacity = 0.0 stroke_dash_array = 'none' if len(s.Stroke.CssParameter) > 0: for css_parameter in s.Stroke.CssParameter: if css_parameter.name == 'stroke': stroke = css_parameter.valueOf_ if css_parameter.name == 'stroke-width': stroke_width = css_parameter.valueOf_ if css_parameter.name == 'stroke-opacity': stroke_opacity = css_parameter.valueOf_ if css_parameter.name == 'stroke-dasharray': stroke_dash_array = css_parameter.valueOf_ symbolizer = PolygonSymbolizer( rule=rule, order=scount, fill=fill, fill_opacity=fill_opacity, stroke=stroke, stroke_width=stroke_width, stroke_opacity=stroke_opacity, stroke_dash_array=stroke_dash_array) symbolizer.save() scount += 1 sld_body = sld_builder.build_sld(layer, style) if mapservice.createStyle(style.name, sld_body): mapservice.setLayerStyle(layer, style.name, style.is_default) utils.__delete_temporaries(filepath) return True else: utils.__delete_temporaries(filepath) return False
def create_style(request, json_data, layer_id, is_preview=False, has_custom_legend=None): layer = Layer.objects.get(id=int(layer_id)) datastore = layer.datastore workspace = datastore.workspace gs = geographic_servers.get_instance().get_server_by_id( workspace.server.id) layer_styles = StyleLayer.objects.filter(layer=layer) is_default = False if not is_preview: is_default = json_data.get('is_default') if is_default: for ls in layer_styles: s = Style.objects.get(id=ls.style.id) s.is_default = False s.save() else: has_default_style = False for ls in layer_styles: s = Style.objects.get(id=ls.style.id) if s.is_default: has_default_style = True if not has_default_style: is_default = True name = json_data.get('name') if is_preview: name = name + '__tmp' is_default = False style = Style(name=name, title=json_data.get('title'), is_default=is_default, type='CT') if has_custom_legend == 'true': style.has_custom_legend = True legend_name = 'legend_' + ''.join( random.choice(string.ascii_uppercase) for i in range(6)) + '.png' legend_path = utils.check_custom_legend_path() style.custom_legend_url = utils.save_custom_legend( legend_path, request.FILES['file'], legend_name) else: style.has_custom_legend = False style.save() style_layer = StyleLayer(style=style, layer=layer) style_layer.save() json_rule = json_data.get('rule') filter_text = "" if json_rule.get('filter').__len__() != 0: filter_text = str(json.dumps(json_rule.get('filter'))) rule = Rule(style=style, name=json_rule.get('name'), title=json_rule.get('title'), abstract="", filter=filter_text, minscale=json_rule.get('minscale'), maxscale=json_rule.get('maxscale'), order=json_rule.get('order')) rule.save() color_map = ColorMap(type='ramp', extended=False) color_map.save() symbolizer = RasterSymbolizer(rule=rule, color_map=color_map, order=0, opacity=1.0) symbolizer.save() color_map_entry_list = [] for entry in json_data.get('entries'): json_entry = json.loads(entry.get('json')) color_map_entry = ColorMapEntry(color_map=color_map, order=int(json_entry.get('order')), color=json_entry.get('color'), quantity=json_entry.get('quantity'), label=json_entry.get('label'), opacity=json_entry.get('opacity')) color_map_entry_list.append(color_map_entry) order = 0 color_map_entry_list = sorted( color_map_entry_list, key=lambda color_map_entry: float(color_map_entry.quantity)) for cme in color_map_entry_list: cme.order = order cme.save() order = order + 1 sld_body = sld_builder.build_sld(layer, style) if is_preview: if gs.createOverwrittenStyle(style.name, sld_body, True): return True else: return False else: if gs.createOverwrittenStyle(style.name, sld_body, True): if not is_preview: gs.setLayerStyle(layer, style.name, style.is_default) return True else: return False