Giter VIP home page Giter VIP logo

fpi-project-old's People

Contributors

rafasgj avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

fpi-project-old's Issues

Search for a way to handle project dependencies efficiently.

Currently, there are several dependencies like "behave", "sqlalchemy" and "sqlalchemy-utils". Also, "flake8" (and "flake8-docstrings") are being used, but not enforced. In the near future, "migrate" will be used.

There must be an efficient way to handle this dependencies, preferably a cross-platform one.

Command Line Interface for ingestion

Create a user interface based on the command line to use the software for ingestion. The following commands should be available:

  • fpi ingest catalog_path [options] (file_list | directory)
  • fpi ingest catalog_path [options] --add (file_list | directory)
  • fpi ingest catalog_path [options] --copy target_dir (file_list|directory)
  • fpi ingest catalog_path [options] --move target_dir (file_list|directory)

Also, these options should be available:

  • --rename-rule rule
  • --directory-rule rule
  • --session sessioname
  • --recurse

Testing upgrading a catalog with assets.

Add a test scenario where a catalog, in a previous version, has some assets and is upgraded to the current version. This will require a non-empty α-2 catalog.

Better asset description.

Currently, only filename, path, width, height and capture time are shown when listing assets. All available information should be displayed.

Exceptions that halt the progam should no be shown to the user.

Exceptions that hit the main program are actually program bugs, and should be hidden from the user, but should be logged and used as "report" for bug fixes.
As of now, only an error log should be created, in the future a proper report system might exist.

Manage IPTC metadata profiles.

An IPTC metadata profile is a colection of IPTC key:value pairs that is applied to an image.
A JSON file with the data is stored with the software and is applied through a profile name, not a profile file.
The software must allow for the creation, modification, storage and application of the profiles.
A separate scprit (iptc_profile) should be provided with this functionality.

Create Asset data class.

Create an Asset data class with the fields:

  • id (String, primary key)
  • Import date (datetime, non null)
  • Import session (String, non null)
  • Asset device id (int, non null)
  • Asset device label (String, non null)
  • Asset directory (String, non null)
  • Asset file name (String, non null)
  • Original device id (int, non null)
  • Original directory (String, non null)
  • Original file name (String, non null)
  • Original file size (Int, non null)

(This is a result of Issue #3.)

Export image with metadata applied.

As a User,
I want to export an image with the metadata stored in the system applied to it,
So that I can share the image with this information.

The formats supported must be: the original file format, JPEG, PNG and TIFF (8 and 16 bits when available).

Create Image data class.

The Image data class must contain the fields:

  • Capture Date (DateTime)
  • Image Width (Int)
  • Image Height (Int)

It also has a relationship with Asset, where an Image is an Asset.

(This is a result of the work on Issue #3.)

Make CLI driver unit-testable.

Change CLI implementation so that it can be tested as behaviors, so that it can be used as an API entry-point for other UI instances. This will force separation of UI and "controller".

Add test scenario for images that do not have an embedded thumbnail.

Given the command to ingest assets
    And the ingestion method add
    And an empty catalog named "test_catalog"
    And an image without an embedded thumbnail "data/samples/DCIM/100FPIAM/FPI_0006.JPG"
When ingesting assets into the catalog
Then no exception is raised
    And the assets id is a MD5 hash
    | filename     | hash                             |
    | FPI_0006.JPG | d41d8cd98f00b204e9800998ecf8427e |

The thumbnail generated to be used for id generation, should have 216 pixels on the largest side, for this to work.

Create a new f/π catalog.

As a User,
I want to create a new f/π catalog,
So that it will be used by the system to store its data.

Modify validation of newly created catalog.

Upon creating a new catalog, there must be tables for Asset and Image.

Asset must have the fields:

  • AssetID (String)
  • Import Date (datetime)
  • Import Session (String)
  • Asset Disk (String)
  • Asset Directory (String)
  • Asset Filet Name (String)
  • OriginalFileName (String)
  • OriginalFileSize (Int).

Image must have the fields:

  • CaptureDate (datetime)
  • ImageWidth (Int)
  • ImageHeight (Int)

And there's a relationship where an Image 'is' an Asset.

Manage IPTC fields.

Add support for setting IPTC fields, both from the command line, or from a JSON file.

Manage system and assets keywords.

Allow addition of keywords to assets.
This feature also includes the management of hierarchical keywords and their application, in batch, to an asset.

Use Exiftool instead of GExiv2.

Although the use GTK+ is planned for f/π, and this makes using GExiv2 pretty direct, it seems that GExiv2 has no support for RAW files such as Canon's CR2 and Olympus ORF.

Sven Marnach's python binding to Phil Harvey's Exiftool seems to be a decent and working replacement.
(https://smarnach.github.io/pyexiftool)

Replace all GExiv2 usage to exiftool.

List sessions in the catalog.

As a User,
I want to list all sessions in a catalog,
So that I can remember the sessions already stored to obtain more information on them.

Add support for labeling assets.

As a User,
I want to manage labels in the catalog, and assign them to assets,
So that it is easier to classify and search for assets.

List items based on asset attributes.

As a User,
I want to list assets in the catalog, based on stored attributes:
- Rating (Numerical)
- Label (String)
- Flag (String)
- Filename (String)
- Session name (String)
- Ingestion date (Date)
- Creation date (Date)
And I want to use some relational operators, based on the attribute type:
- Numerical: =, <, <=, >, >=
- String: =, <>
- Date: =, <, before, <=, >, after, >=
So that I can search more easily for assets in the catalog.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.