Archive for September, 2011

Inscriptio: Personal Library Address Management System

Thursday, September 29th, 2011

Inscriptio is a tool for libraries and patrons to manage addresses such as carrels, hold shelves, lockers, and studies.

To play with a demo of Inscrptio, login here:

https://inscriptio.harvard.edu/demo
Login: admin@example.com
Passcode: kcnjs7mjwgy

Get ready, get set, go!

Thursday, September 29th, 2011

Inscriptio Requirements
System Requirements

* Ruby 1.8.7
* Rails 3.0.5
* A postgresql 8.x database server. Other databases MAY work (e.g. mysql), but they are untested.
* A webserver capable of interfacing with Rails applications. Ideally, apache or nginx with mod_passenger installed.
* Linux or OSX. Linux would be easier.

Application Set-up Steps

* Get code from: https://github.com/berkmancenter/Inscriptio
* Run bundle install. You will probably have to install OS-vendor supplied libraries to satisfy some gem install requirements.
* Create the database and run migrations, modifying “config/database.yml” to suit your environment.
* Modify environment.rb for action_mailer config
* Run bootstrap rake tasks:
rake bootstrap:inscriptio:run_all
* Create cron job to automatically run rake tasks for sending out notifications expiring and expired reservations as well as deleting bulletin board posts after post lifetime:
rake inscriptio:cron_task:delete_posts
rake inscriptio:cron_task:send_expiration_notification
rake inscriptio:cron_task:send_expired_notification
rake inscriptio:cron_task:run_all

Order of Operations for Fresh Install¶

* Sign in as admin
* Create User Types (may change once PIN is in)
* Create School Affiliations (may change once PIN is in)
* Create library
* Create floors
* Create asset types
* Upload/create assets (for upload you will need floor and asset types ID’s)
* Add assets to floor map (remember to hit ‘Apply’ button to save asset on map)
* Go to ‘Reservation Notices’ section and click ‘Generate Notices’

Testing Scenarios

Thursday, September 29th, 2011

Testing Scenarios¶

Admin Functions¶

Libraries:

* Create new libraries
* Edit and delete existing libraries
* View all subject areas for a library (on library main page)

Floors:

* Create new library floors
* Edit, delete and reorder existing library floors

Subject Areas:

* Create new subject areas
* Edit and delete existing subject areas

Call Numbers:

* Create new call numbers
* Edit and delete existing call numbers
* A call number can be associated with a subject area not is not required

Reservable Asset Types:

* Create new reservable asset types
* Edit and delete existing reservable asset types
* Can have specific user types associated with it but not required

Assets:

* Create new reservable assets
o If the min/max reservation time, max concurrent users and reservation time increment are not entered for an asset, the fields from the asset type are inherited
* Edit and delete existing reservable assets
* Admins can view existing reservations by asset
* Admins can batch upload assets by importing a CSV file

Reservations:

* Can create a reservation for a user
* Can edit and delete existing reservations
* Asset drop-down will be pre-populated if reservation form was reached going through the asset page (alternative to using the top navigation)
* Can mark reservations as approved
* A seat is considered unavailable if there is a reservation whose end date is greater than today
* A reservation only claims a seat if it has been approved

User Types:

* Create new user types
* Edit and delete existing user types

Users:

* View all users and update user type and admin flag

Search:

* Users
* Libraries
* Floors
* Subject Areas
* Call Numbers
* Reservable Assets

User Functions¶

* Can create their own accounts
* Can view library information, floors within library and subject areas within library
* Can view assets, subject areas, and call numbers within a floor
* Can reserve an asset if there are seats available and the user has not already reserved that asset
* Reservation dates chosen must be greater than the min reservation time and less than the max reservation time (in days)
* Reservation end date will automatically be set to the last day of the month of the chosen end date
* Can edit and delete their reservations
* A user is considered a “current user” on the asset if their reservation end date is greater than today
* Can only view the bulletin board if their reservation has been approved
* Can post to their approved asset’s bulletin board

New file

Optional description
Add another file (Maximum size: 10 MB)
Cancel

Also available in: HTML TXT
Loading…
Powered by Redmine © 2006-2010 Jean-Philippe Lang

How Inscriptio is structured

Thursday, September 29th, 2011

Carrel Object List

This was originally a google document developed collaboratively by project principals. This is still a work in progress and will evolve over time.
Library

A library:

* has many floors
* has an address, including latitude / longitude, URL and basic contact info
* has many reservable asset types
* has a bulletin board post expiration time

Floor

A floor:

* belongs to a library
* has a map, most likely a high quality PNG
* is ordered relative to other floors – meaning a different floor is above or below it.
* has many call numbers
* has many subject areas.
* has many reservable assets

Subject Area

A subject area:

* has and belongs to many floors
* has many call numbers
* has basic attributes like description and name

Call number

A call number:

* belongs to a subject area
* has and belongs to many floors
* has a code, description and other basic attributes

Reservable Asset

A reservable asset:

* belongs to a floor
* belongs to a reservable asset type
* has a location on the floor map – most likely an x y pixel offset to place it in the proper place.
* has many reservations
* has many users through its reservations
* has a section and number
* has a bulletin board
* has current users
* has a photo (optional)
* has a video (optional)
* has a minimum reservation time
* has a maximum reservation time
* has a reservation time increment – can only reserve in – say, 1 day or 1 week chunks.
* has a maximum number of concurrent users
* has a locker key / code (if defined in the reservable asset type)
* has general information, that’s probably merged into the welcome message.
* can be relinquished by the user reserving it, returning a slot to the reservable pool.

Reservable Asset Type

A reservable asset type:

* belongs to a Library
* has many reservable assets
* Has a name – carrel, locker, hold shelf, etc.
* Sets defaults for reservable assets – minimum reservation time, maximum reservation time, maximum number of concurrent users, reservation time increment, whether or not it has a code / key,
* Has options that effect the bulletin board – can have one? How long should posts live?
* has a photo
* has a welcome message, which may include follow-up instructions (Pick up your carrel reservation card here)
* has an expiration extension time period: the time before the expiration in which a user can renew a reservation for up to the maximum reservation time.
* has user types that can reserve this asset.
* has many Reservation Expiration Notices, which define the content and scheduling of reservation expiration messages. These messages can be related to either when an active reservation expires, or when a “reservation hold” is expiration. A reservation hold is a reservation that hasn’t been approved by a moderator.
* has a moderation flag – meaning, either the reservation goes through automatically without administrator approval OR an asset reservation must be OK’d by an admin.
* has a “moderation held” message. The welcome message can serve as the moderation approved message.

Reservation Expiration Notices

A reservation expiration notice:

* has a type – “hold” or “actual,” where “hold” is a notice for the reservation hold expiration times, and “actual” is a notice for when an actively reserved item is expiring.
* belongs to a reservable asset type.
* has a “days before expiration” attribute, which sets when this message is sent.
* has a message and a subject line
* has a reply-to
* is a multipart text/html message
* will template tags to substitute simple parameter like Library name, user name, date, etc.
* belongs to many reservations, but is only invoked when the “days before expiration” time is hit.

Reservation

A reservation:

* belongs to a reservable asset
* belongs to a user
* has a code to uniquely identify it
* has a start date
* has an end date
* has an approved flag, which means the reservation has been approved by an administrator.

Bulletin Board

A bulletin board:

* has many posts ordered by creation time
* belongs to a discussable asset – currently only a reservable asset, but could include a library.
* has many users through the reservable assets list of current users
* has a maximum “post lifetime”

Post

A post:

* belongs to a bulletin board
* belongs to a user
* has a creation time
* has a message
* has an (optional) image file attachment
* has many (optional) moderator flags
* has a “public” flag, allowing a post to be seen more broadly.

Moderator Flag

A moderator flag:

* belongs to a post
* has a reason – Abusive, Offensive, etc?
* belongs to user

Authentication source

An authentication source:

* has many users
* has many user types
* has an “authenticate” method that accepts user information and does a backend lookup returning a true or false if a user has authenticated properly to that user type.

User Type

A user type:

* has many users
* has a name – “grad students”, “undergrads”, etc.
* has many authentication sources

User

A user:

* has many reservations
* has many reservable assets through reservations
* has many posts
* belongs to a User Type
* has an authentication source through its user type

Administrator

An administrator:

* Has a username and password.
* has an email address