Skip to main content
====================
Flis Metadata Client
====================

Client for FLIS applications that require common metadata

Quick start
-----------

#. Add ``flis_metadata.common`` and ``flis_metadata.client``
to your ``INSTALLED_APPS`` setting like this::

INSTALLED_APPS = (
...
'flis_metadata.common',
'flis_metadata.client',
)

#. Add ``METADATA_REMOTE_HOST`` and ``METADATA_REMOTE_PATH`` into your settings file::

METADATA_REMOTE_HOST = 'http://localhost:8000'
METADATA_REMOTE_PATH = ''

#. Run ``python manage.py migrate`` to migrate the common app.

#. Run ``python manage.py sync_remote_models`` to sync the metadata models with
the remote ones.

How to add a new model
----------------------
We want to move model ``Foo`` from ``flis.someapp`` to be
replicated in all FLIS apps

In this app:
1. Add the model in ``common/models.py``. Make sure it extends
``ReplicatedModel``.

2. Add ``urls``, ``views`` and ``templates`` to edit it.

3. Add a fixture having all instances of ``Foo`` for every FLIS app.
Note:
This data will be replicated and migrated in every app that uses
this package, so make sure that the migration includes everything

4. Update the pip package using ``setup.py``.

In ``flis.someapp`` and other apps using this model
#. Update ``eaa.flis.metadata`` package in ``requirements.txt`` and
install it.

#. For every relation to the ``Foo`` model::

# add a new fake foreign key field
x = models.ForeingKey(Foo)
fake_x = models.ForeingKey('common.Foo')

# or add a new fake many to many field
y = models.ManyToManyField(Foo)
fake_y = models.ManyToManyField('common.Foo')

#. Add a migration to add the new fields

#. Create a datamigration that

a) Calls ``load_metadata_fixtures`` management command
b) For every ``x`` copies the same information in ``fake_x``
using the instance found in ``common.Foo``::

obj.fake_x = orm['common.Foo'].objects.get(title=obj.x.title)

# or

for y in obj.y.all():
obj.fake_y.add(orm['common.Foo'].objects.get(title=y.title)

#. Remove the ``Foo`` model and ``x`` fields from
``flis.someapp``.

#. Create an automatic schemamigration to reflect the removals.

#. Rename ``fake_x`` fields to ``x`` in ``models.py``.

#. In the migration generated at step 5 rename the fields and M2M tables from
``fake_x`` to ``x``.

#. Run the migration in different corner cases.
Note:
You can browse through ``flis.flip``, ``flis.horizon-scanning-tool`` or
``flis.live_catalogue`` to see an example of such migrations.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

eea.flis.metadata-0.6.2.tar.gz (8.0 kB view details)

Uploaded Source

File details

Details for the file eea.flis.metadata-0.6.2.tar.gz.

File metadata

File hashes

Hashes for eea.flis.metadata-0.6.2.tar.gz
Algorithm Hash digest
SHA256 aa7e5eff3fa5b367bd485a1f228045912ccf6eebcfddc482881e37779cfffa11
MD5 15118e715e7fb430a67e2926920dcb3c
BLAKE2b-256 00f6926a11c042b1670e05e69da4822475308b71ea3fde2f81cbce2ed9260189

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.6.2 This release

1 file

0.6.1

1 file

0.6.0

1 file

0.5.5

1 file

0.5.4

1 file

0.5.3

1 file

0.5.2

1 file

0.5.1

1 file

0.5.0

1 file

0.4

1 file

0.3

1 file

0.2

1 file

0.1

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page