Version 6 (modified by juri, 7 years ago) (diff)


New Frontend


  • Everything. :)
  • Then anonymous users
  • Then profiles
  • Then aspects


The front-end needs to be built on YACMS. It needs to perform authentication of a username/password combo.

The site also needs to support a 'Guest User' so that the internet at large can see content that has been made publicly available.

User Creation

  • When an administrator creates a user, a home directory for that user is created.
    • This directory must have all applicable permissions for the user in question.

User Attributes

A user HAS:

  • A home directory (/home/<username> by default)
  • A series of aspects which other users belong TO.
  • An ID (for database purposes)
  • A Profile Page.

a user belongs TO:

  • Multiple groups.
  • Multiple aspects.

Special Users

The administrator


Group Attributes

A group HAS:

  • A series of users.
  • An ID (for database purposes)

Special Groups


Aspect Attributes

An aspect HAS:

  • An owner (always a single user)
  • A series of users.

An Access Tuple

An access tuple is a set of permissions for item X against item Y. for instance, a user and a directory.

An access tuple has:

  • a flag indicating this user may read / list the contents of the supplied object.
  • A flag indicating this user may write / add contents to the supplied object.

Directory Attributes

A directory HAS:

  • A series of files.
  • A series of directories.
  • A single owner.
  • An access tuple for that owner.
  • A single group owner.
  • An access tuple for that owner.
  • Multiple aspect owners.
  • Access tuples for each aspect owner.
  • an access tuple for non-authenticated users.
  • An ID (for database purposes)

Special Directories

  • The directory "/" which is the default will have .

File Attributes

a file HAS:

  • A name.
  • A thumbnail.
  • An ID (for database purposes)
  • Tags (for grouping purposes, by the user)

Permission checking

To check to see if a user has permission to a directory:

  • See if that directory is owned by the user.
    • If true, grant access.
  • See if that directory's group is a group that the user belongs to.

Opening Page

After logging into the interface, the user should first be presented with their home directory, and a set of manipulation tools. Selecting an image will place them in the browse view for that image.

Profile Page

On a user's profile, the following information needs to be editable:

  • User Name
  • User Photo
  • Home Directory


Browsing an image set is implemented by performing a random query on GIFT against the image collection, and displaying that result. It should also be possible to specify browse by file name order, or other such name/tag text based sorting. The browse interface should include a 'export as CSV' function, so that this URI may be gotten at with automation scripts.


Once a user has selected an image set to browse, the browse interface should include the 'search' interface/functionality of the current frontend.

Results Page

The result of every search is every image in the database, sorted by how closely they match the images submitted. This should appear very similar to the 'browse' view, including CSV interface. From the results page one should be able to edit the submitted query, rsave the query for future use, return to the browse view of this imageset, or create a new image set from these results.

Image Set Creation

The user selects a region of the image to 'filter' the view through, when performing a new image recognition pass. This filter is applied to all images in the result set being imported. The user must also select a cutoff point for what is imported into the new image set and what is not. this may be specified either as a count of images from this query starting at the most matched, OR by specifying the minimum match value that an image must match to be included in this image set. There user should hit an 'invert' checkbox to get images that do not match, or are below the value.

A new image set created from a search should only be visible to the user that created it.


Users should be able to tag images in result sets belonging to them by specifying a tag, and a cutoff point in a search. Users should also be able to search by tag, instead of image match.


Comparing to a supplied image is possible, it just needs to be eeked back out of the code.

Previous Frontend