def setUp(self): super(self.__class__, self).setUp() conn = DBConnection() conn.alias = 'test_connection' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() layer = DataBaseLayer() layer.db_connection = conn layer.slug = 'tests_location' layer.name = 'tests_location' layer.table = 'tests_location' layer.pk_field = 'code' layer.geom_field = 'geometry' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() self.layer = layer
def setUp(self): super(self.__class__, self).setUp() conn = DBConnection() conn.alias = 'test_connection' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() layer = DataBaseLayer() layer.db_connection = conn layer.name = 'tests-location' layer.table = 'tests_location' layer.pk_field = 'code' layer.geom_field = 'geometry' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() self.layer = layer self.locations = [] Location = create_dblayer_model(layer) self.Location = Location for i in range(0, 12): location = Location() location.code = 'C%s' % str(i).zfill(3) location.address = 'C/ Jaume %s, Girona' % i location.geometry = 'POINT(0 %s)' % i location.save() self.locations.append(location)
def setUp(self): super(self.__class__, self).setUp() conn = DBConnection() conn.alias = 'test' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() layer = DataBaseLayer() layer.db_connection = conn layer.name = 'tests_specie' layer.table = 'tests_specie' layer.pk_field = 'code' layer.geom_field = None layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() layer.refresh_from_db() field = layer.fields.filter(name='image').first() field.widget = DataBaseLayerField.WIDGET_CHOICES.image options = {'upload_root': '<auto>', 'thumbnail_root': '<auto>'} self.widget_options = options field.widget_options = json.dumps(options) field.save() self.layer = layer
def setUp(self): super(self.__class__, self).setUp() conn = DBConnection() conn.alias = 'test_connection' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() layer = DataBaseLayer() layer.db_connection = conn layer.name = 'tests_specie' layer.table = 'tests_specie' layer.pk_field = 'code' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() self.layer = layer self.species = [] with ModelFactory(layer) as Specie: for i in range(0, 12): s = Specie() s.code = 'QI%s' % str(i).zfill(3) s.address = 'Quercus ilex %s' % i s.save() self.species.append(s)
def test_autofield_add_primary_key(self): """ If there isn't a primary key it looks but a pk_field is defined sets primary_key=True to pk_field """ sql = """ CREATE TABLE address_no_primary_key ( id serial NOT NULL, address character varying(255), geometry geometry(Point,4326) ); """ cursor = self.conn.get_connection().cursor() cursor.execute(sql) layer = DataBaseLayer() layer.db_connection = self.conn layer.name = 'address_no_primary_key' layer.table = 'address_no_primary_key' layer.pk_field = 'id' layer.geom_field = 'geometry' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() with ModelFactory(layer) as Model: primary_key = None for f in Model._meta.fields: if getattr(f, 'primary_key', None): primary_key = f.name break self.assertEqual(primary_key, 'id')
def setUp(self): super(self.__class__, self).setUp() conn = DBConnection() conn.alias = 'test' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() upload_root = os.path.join(tempfile.gettempdir(), 'images') if os.path.exists(upload_root): shutil.rmtree(upload_root) os.makedirs(upload_root) self.upload_root = upload_root thumbnail_root = os.path.join(tempfile.gettempdir(), 'thumbnails') if os.path.exists(thumbnail_root): shutil.rmtree(thumbnail_root) os.makedirs(thumbnail_root) self.thumbnail_root = thumbnail_root self.base_url = 'http://localhost/giscube_media/images/' self.thumbnail_base_url = 'http://localhost/giscube_media/thumbnails/' layer = DataBaseLayer() layer.db_connection = conn layer.name = 'tests_specie' layer.table = 'tests_specie' layer.pk_field = 'code' layer.geom_field = None layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() layer.refresh_from_db() field = layer.fields.filter(name='image').first() field.widget = DataBaseLayerField.WIDGET_CHOICES.image options = { 'base_url': self.base_url, 'upload_root': self.upload_root, 'thumbnail_root': self.thumbnail_root, 'thumbnail_base_url': self.thumbnail_base_url } self.widget_options = options field.widget_options = json.dumps(options) field.save() self.layer = layer
def setUp(self): super(self.__class__, self).setUp() conn = DBConnection() conn.alias = 'test_connection' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() layer = DataBaseLayer() layer.db_connection = conn layer.name = 'tests_location_25831' layer.table = 'tests_location_25831' layer.srid = 25831 layer.pk_field = 'code' layer.geom_field = 'geometry' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() self.layer = layer self.locations = [] Location = create_dblayer_model(layer) self.Location = Location location = Location() location.code = 'C001' location.address = 'C/ Major 1, Salt' location.geometry = 'POINT(482984.669856201 4647181.21886241)' location.save() self.locations.append(location)
def setUp(self): super(self.__class__, self).setUp() settings.LAYERSERVER_PAGE_SIZE = 5 settings.LAYERSERVER_MAX_PAGE_SIZE = 10 conn = DBConnection() conn.alias = 'test' conn.engine = settings.DATABASES['default']['ENGINE'] conn.name = settings.DATABASES['default']['NAME'] conn.user = settings.DATABASES['default']['USER'] conn.password = settings.DATABASES['default']['PASSWORD'] conn.host = settings.DATABASES['default']['HOST'] conn.port = settings.DATABASES['default']['PORT'] conn.save() layer = DataBaseLayer() layer.db_connection = conn layer.name = 'tests_location_25831' layer.table = 'tests_location_25831' layer.srid = 25831 layer.pk_field = 'code' layer.geom_field = 'geometry' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() self.layer = layer # X,Y,lng,lat, address data = [ (485984.399179716, 4646678.69635524, 2.8308397, 41.9719769, 'Carrer de Montori, 6, Girona'), (486004.280534943, 4646672.62826433, 2.8310798, 41.9719226, 'Carrer de Montori, 12, Girona'), (486015.159965428, 4646685.57498505, 2.8312108, 41.9720394, 'Carrer de Montori, 17, Girona'), (485981.063816979, 4646697.33357378, 2.830799, 41.9721447, 'Carrer del Castellet, 1, Girona'), (486025.905078693, 4646718.69591949, 2.8313397, 41.9723379, 'Carrer del Turó Rodó, 24, Girona'), (485976.301483811, 4646685.65164834, 2.8307418, 41.9720394, 'Carrer de Montori, 7, Girona'), (486036.873361096, 4646679.99190294, 2.831473, 41.9719895, 'Carrer de Montori, 23, Girona'), (485991.335509501, 4646704.60788712, 2.8309228, 41.9722104, 'Carrer de Sant Grau, 3, Girona'), (485995.924639975, 4646687.31164811, 2.8309786, 41.9720547, 'Carrer de Montori, 9, Girona'), (485971.231262542, 4646664.92148798, 2.8306811, 41.9718526, 'Carrer de Montori, 2, Girona'), (485997.86065962, 4646673.30709788, 2.8310023, 41.9719286, 'Carrer de Montori, 10, Girona'), (485991.234154363, 4646674.24171126, 2.8309223, 41.9719369, 'Carrer de Montori, 8, Girona'), (486038.970629009, 4646714.22905804, 2.8314975, 41.9722979, 'Carrer del Turó Rodó, 27, Girona'), (486029.087115901, 4646714.71482487, 2.8313782, 41.9723021, 'Carrer del Turó Rodó, 29, Girona'), (486009.346425706, 4646699.62048077, 2.8311403, 41.9721658, 'Carrer de Montori, 13, Girona'), (486032.850809002, 4646682.10936383, 2.8314244, 41.9720085, 'Carrer de Montori, 21, Girona'), (486009.503670912, 4646720.54909947, 2.8311417, 41.9723543, 'Carrer de Sant Grau, 7, Girona'), (485997.896958484, 4646700.10937757, 2.8310021, 41.97217, 'Carrer de Sant Grau, 4, Girona'), (486011.821936575, 4646698.69406302, 2.8311702, 41.9721575, 'Carrer de Montori, 11, Girona'), (486023.688015233, 4646682.56041124, 2.8313138, 41.9720124, 'Carrer de Montori, 19, Girona'), (486003.516233289, 4646684.19897165, 2.8310703, 41.9720268, 'Carrer de Montori, 15, Girona'), (485969.753316113, 4646680.10204534, 2.8306629, 41.9719893, 'Carrer de Montori, 5, Girona'), (485976.833113544, 4646673.75941402, 2.8307485, 41.9719323, 'Carrer de Montori, 4, Girona'), (485981.073650482, 4646714.89831056, 2.8307987, 41.9723029, 'Carrer del Castellet, 4, Girona'), (485984.756663944, 4646704.48763906, 2.8308434, 41.9722092, 'Carrer del Castellet, 2, Girona'), (485995.585985817, 4646708.84080015, 2.830974, 41.9722486, 'Carrer de Sant Grau, 5, Girona'), (486000.922999553, 4646713.66002545, 2.8310383, 41.9722921, 'Carrer de Sant Grau, 5A, Girona'), (486013.232808288, 4646666.24866927, 2.831188, 41.9718653, 'Carrer de Montori, 14, Girona'), (485975.306531153, 4646710.45744782, 2.8307292, 41.9722628, 'Carrer del Castellet, 3, Girona'), ] self.locations = [] Location = create_dblayer_model(layer) self.Location = Location for i, item in enumerate(data): location = Location() location.code = 'B%s' % i location.address = item[4] location.geometry = 'POINT(%s %s)' % (item[0], item[1]) location.save() self.locations.append(location)
def test_sequence_int(self): sql = """ CREATE SEQUENCE tree_int_code_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; CREATE TABLE tree_int ( id SERIAL NOT NULL, code integer NOT NULL default (nextval('tree_int_code_seq'::regclass)), name character varying(12) default 'Hell")o', description character varying(250) ); """ with self.conn.get_connection().cursor() as cursor: cursor.execute(sql) self.sql_to_delete = [ 'DROP TABLE tree_int;', 'DROP SEQUENCE tree_int_code_seq;', ] layer = DataBaseLayer() layer.db_connection = self.conn layer.slug = 'tree_int' layer.name = 'tree_int' layer.table = 'tree_int' layer.pk_field = 'id' layer.anonymous_view = True layer.anonymous_add = True layer.anonymous_update = True layer.anonymous_delete = True layer.save() self.layer = layer field = self.layer.fields.filter(name='code').first() field.blank = True field.save() Tree = create_dblayer_model(self.layer) obj = Tree() obj.description = 'test 1' obj.save() self.assertEqual(Tree.objects.last().code, 1) data = { 'ADD': [ { 'description': 'test 2' }, ], 'UPDATE': [], 'DELETE': [] } url = reverse('content-bulk', kwargs={'name': self.layer.name}) response = self.client.post(url, data, format='json') # print(response.json()) self.assertEqual(response.status_code, 200) self.assertEqual(Tree.objects.last().code, 2)