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')
Пример #6
0
    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
Пример #7
0
    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)