Commit Graph

313 Commits

Author SHA1 Message Date
Rasmus Kaj
551c5c6897 Redirect from /random.
Use a redirect rather than just rendering a random photo page.
Also, add a link to /random to the menu.
2017-11-07 23:36:09 +01:00
Rasmus Kaj
18ddb04d65 Remove readkpa subcommand.
My old kphotoalbum database is no longer relevant, rphotos is
the main soruce now and should not be overridden.

The readkpa subcomand was never intended for general consumption
anyway, it was hardcoded to match configurations in my kphotoalbum
setup.
2017-11-07 23:34:19 +01:00
Rasmus Kaj
21f2fce9e1 Nicer implementation of find_image_data. 2017-11-05 23:51:03 +01:00
Rasmus Kaj
8fb8d991dd Add UI to add tags to images. 2017-11-05 23:03:55 +01:00
Rasmus Kaj
376927e39c Silly feature; an url for a random image. 2017-11-05 17:56:18 +01:00
Rasmus Kaj
38711abc37 Some lint-style changes suggested by clippy. 2017-09-27 00:19:03 +02:00
Rasmus Kaj
cde078317a Add a message for login failure. 2017-09-25 19:12:54 +02:00
Rasmus Kaj
3a6a9cb21d Add admin function to rotate image. 2017-09-25 07:25:58 +02:00
Rasmus Kaj
f4d083360e Fix memcache problem.
Thirty days is max expire time in memcache, setting a larger value
gets it treated as a unix time (so when I said 90 days, everything
expired april 1, 1970).

Also, less logging while precaching.
2017-09-23 22:54:41 +02:00
Rasmus Kaj
e5188e1c09 Document intent. 2017-09-21 07:17:32 +02:00
Rasmus Kaj
8a926c3a55 Add a command for precaching thumbnails. 2017-09-20 23:47:27 +02:00
Rasmus Kaj
16a1b75643 Cleanup some more.
Get rid of lib.rs, and move main entry point to main.rs.
2017-09-02 00:05:44 +02:00
Rasmus Kaj
ce1e9c6190 Update some dependencies. 2017-09-01 23:36:08 +02:00
Rasmus Kaj
8131f5e5ec Merge server and adm to single binary. 2017-09-01 23:14:17 +02:00
Rasmus Kaj
97076336a6 Refuse non-replace pidfile.
If the given pid file already exists, but --replace is not given,
refuse to start the server.
2017-08-31 20:09:20 +02:00
Rasmus Kaj
ec52f0b57e Typo. 2017-08-31 19:32:24 +02:00
Rasmus Kaj
d52e874645 Add options for pidfile usage. 2017-08-15 19:54:22 +02:00
Rasmus Kaj
a0df34644b Allways give "next" argument for login link. 2017-08-03 19:59:21 +02:00
Rasmus Kaj
f78966682a Support "next" parameter in login form. 2017-08-03 12:50:01 +02:00
Rasmus Kaj
ce44b1f18f Expose version in command line and footer. 2017-08-01 01:41:27 +02:00
Rasmus Kaj
c9f024b205 Split days with to many photos in parts. 2017-08-01 01:15:46 +02:00
Rasmus Kaj
7193047a7d Copy the code for nickel_diesel.
To much problem with versions, the nickel_diesel crate isnt
maintained, so just copy the code here since it is short.
2017-07-27 18:30:17 +02:00
Rasmus Kaj
32bf0c0aa8 Very minor cleanup.
res.set can set multiple headers in one call by using a tuple.
2017-07-27 17:37:22 +02:00
Rasmus Kaj
8422133a3c Minor clarification.
Rename a method, since caching is not handled by that but by
the caller.  Also remove a TODO about caching, since it was
actually done, just not in that place.
2017-07-27 17:05:17 +02:00
Rasmus Kaj
e5b749795e Use a custom 404 page.
Mainly, provide a login link on it.
2017-06-27 00:13:48 +02:00
Rasmus Kaj
161e9c4df9 Up-to-date rexif takes path arguments. 2017-06-26 23:26:36 +02:00
Rasmus Kaj
d4ade480d6 Use ructe 0.3.2, with mime support. 2017-06-23 17:13:44 +02:00
Rasmus Kaj
09c6a5131e Update diesel to 0.12. 2017-05-12 16:39:23 +02:00
Rasmus Kaj
86616719e1 Remove rustc-serialize.
It was only needed for mustache, which I no longer use.  (Both
mustache and rustc-serialize is still dependencies of nickel, but
that's ok as long as I dont have to touch them in my code.)
2017-05-12 14:02:41 +02:00
Rasmus Kaj
33b9f8a27b Use foo? rather than try!(foo). 2017-05-08 22:01:59 +02:00
Rasmus Kaj
e73c363986 Unify far_expires handling.
Make the expire header on images actually far.
2017-05-08 20:44:31 +02:00
Rasmus Kaj
5ea5a9bd90 Update ructe.
It now supports adding static sass files, so remove direct dependency
on rsass.
2017-05-08 07:09:22 +02:00
Rasmus Kaj
483fe37487 Avoid empty "Tid:" 2017-02-12 17:56:26 +01:00
Rasmus Kaj
abf5dcf384 Large is full.
The "large" version of an image is the full original file.  Only
logged-in users may access the large version.
2017-02-12 15:24:39 +01:00
Rasmus Kaj
3a1a2d15d3 Add basic attribution. 2017-02-11 22:24:35 +01:00
Rasmus Kaj
708ff73997 Simplify error handling.
Internal server error is internal server error anyway, so why not put
a panic in the log for it.
2017-02-08 18:41:20 +01:00
Rasmus Kaj
eada496c5b Use slices in templates. 2017-02-05 12:08:38 +01:00
Rasmus Kaj
2ce41194e6 Some code-style improvements. 2017-02-04 18:17:32 +01:00
Rasmus Kaj
cb000948f2 A little more modular. 2017-02-04 17:48:42 +01:00
Rasmus Kaj
767a0c6bb0 Refuse to tag non-existing images.
But find images even if the file names are lowercased since tagging.
2017-02-04 11:35:17 +01:00
Rasmus Kaj
01b21bd36d Refuse to tag non-existing images. 2017-02-03 21:47:45 +01:00
Rasmus Kaj
b69ceb8166 Nicer urls for images and details. 2017-02-01 16:12:03 +01:00
Rasmus Kaj
1ae8cf91b5 More flexible route mapping. 2017-02-01 07:39:47 +01:00
Rasmus Kaj
8cd215cdc2 Improve handling of static files.
Use static files handling from updated ructe rather than local
handling, and use rsass rather than sass-rs and sass-sys.

Static files are now kept in the binary (no more need to access the
build directory at runtime).  Also, there is an admin command to save
the static files to a directory, for the benefit of fronting web
servers and backwards compatibility.
2017-01-29 19:03:35 +01:00
Rasmus Kaj
698fb2c23b Update dependencies.
No direct build dependency on syntex and dotenv makes things easier.
2017-01-20 07:10:40 +01:00
Rasmus Kaj
fa60b6e1f8 No need to defind CSSLINK in main. 2016-12-19 07:19:26 +01:00
Rasmus Kaj
18f15d53d6 Some fooling around with stats. 2016-11-27 18:00:34 +01:00
Rasmus Kaj
eccbf9a1cf Avoid unnessecary string copying.
Unleash the power of rust checked borrows!  :-)
2016-11-27 01:05:03 +01:00
Rasmus Kaj
d10343e0cb Include readkpa in rphotosadm. 2016-11-27 00:54:08 +01:00
Rasmus Kaj
7b2cb158ac Use match, not nested if. 2016-11-26 12:32:16 +01:00
Rasmus Kaj
7354707486 Include findphotos in rphotosadm. 2016-11-26 11:31:21 +01:00
Rasmus Kaj
5afd58086d Include makepublic in rphotosadm.
Another separate binary merged into the general adm binary.
2016-11-24 22:42:59 +01:00
Rasmus Kaj
e5b5c28d5e Move user administration into rphotosadm. 2016-11-21 08:45:54 +01:00
Rasmus Kaj
b38ac8c661 Start moving towards a single adm command. 2016-11-20 21:33:16 +01:00
Rasmus Kaj
e0ce981b8d Merge branch 'master' into feature/memcached-rs 2016-11-20 16:58:46 +01:00
Rasmus Kaj
a18daeac7c Change photo order. 2016-11-20 15:52:38 +01:00
Rasmus Kaj
ae5cb673ab Fix some code style issues.
Mainly the proper ordering of use statements.
2016-11-20 00:33:31 +01:00
Rasmus Kaj
754fa51efe Use a middleware to access cache.
The proper way to get easy access to a configured memcached client in
a request handler is to have a middleware method to get it.
2016-11-19 23:55:13 +01:00
Rasmus Kaj
171b29cd6c Better logging re caching. 2016-11-19 20:49:44 +01:00
Rasmus Kaj
3fc702d859 Merge branch 'master' into feature/memcached-rs 2016-11-12 20:51:16 +01:00
Rasmus Kaj
5b57b7de88 Put nulls last in some orderings. 2016-11-11 21:49:58 +01:00
Rasmus Kaj
4b6b927640 More natural year order.
Most recent years first, old pictures and pictures without a date last
on the frontpage.
2016-11-09 07:53:04 +01:00
Rasmus Kaj
08ade16c02 Avoid single-digit request times. 2016-11-08 23:51:00 +01:00
Rasmus Kaj
a7960f5569 Refactor caching.
Separate the caching logic from how to the actual image scaling.
2016-11-08 23:48:08 +01:00
Rasmus Kaj
0d1285da37 Try memcached-rs. 2016-11-03 17:18:07 +01:00
Rasmus Kaj
704c930010 Fix ordering. 2016-11-03 16:01:20 +01:00
Rasmus Kaj
e2784cc75c Update dependencies. 2016-10-28 00:44:30 +02:00
Rasmus Kaj
8291b91bcf Show slightly larger pics. 2016-09-28 14:36:03 +02:00
Rasmus Kaj
6d8eff3015 Remove unused code. 2016-09-27 20:42:22 +02:00
Rasmus Kaj
0597b636dc Don't drop camera info. 2016-09-26 22:38:22 +02:00
Rasmus Kaj
0b0877e54d Better handling of dates with no images. 2016-09-23 23:12:22 +02:00
Rasmus Kaj
c6672181d6 Covert all templates to ructe. 2016-09-23 22:03:04 +02:00
Rasmus Kaj
b79cbc7714 More ructe templates. 2016-09-23 16:40:54 +02:00
Rasmus Kaj
9a038765b9 Initial ructe experiment. 2016-09-20 07:35:28 +02:00
Rasmus Kaj
583f492cae Update nickle-jwt-session use. 2016-09-20 07:35:01 +02:00
Rasmus Kaj
8b60679c44 Add public photos if the file exists. 2016-08-28 22:07:42 +02:00
Rasmus Kaj
ab35c4bc49 Add a year-listing playground. 2016-08-28 22:06:45 +02:00
Rasmus Kaj
ef968f4b81 Cast before transfer. 2016-08-21 13:31:25 +02:00
Rasmus Kaj
6a254db792 Add a view for photos without a date. 2016-08-20 13:27:27 +02:00
Rasmus Kaj
6ed42c0be7 Add camera support.
Store and show which camera each picture was taken with (if present in
exif data).
2016-08-09 01:41:46 +02:00
Rasmus Kaj
97f299b54f Public/private tags, people and places. 2016-08-08 00:24:15 +02:00
Rasmus Kaj
fd5fb423ec Add flag to make photos public. 2016-08-07 22:41:00 +02:00
Rasmus Kaj
961e04d257 Better avoiding of raw images.
And get rid of some 'use ...::*'.
2016-08-07 20:38:42 +02:00
Rasmus Kaj
b8f671c7bf rustfmt + type consistency. 2016-08-05 23:21:24 +02:00
Rasmus Kaj
4f4a1e2345 Conditional query is BoxedQuery.
Yep, Diesel supports conditional queries.
2016-08-05 18:58:50 +02:00
Rasmus Kaj
10392df72c One line, not two, to get a connection. 2016-08-05 18:11:25 +02:00
Rasmus Kaj
64ec5f9c18 Fix simple ordering. 2016-08-05 03:19:14 +02:00
Rasmus Kaj
7f8d5350cc Inline an ugly utility method. 2016-08-04 18:16:17 +02:00
Rasmus Kaj
7e3c892e9c Merge sassify.rs into build.rs.
Simpler with only a one-file build program, and it is still less than
100 lines.
2016-08-04 01:06:15 +02:00
Rasmus Kaj
f7da73ad17 Update to Diesel 0.7.
Also, make things simpler by dropping nightly rust support.
2016-08-03 23:54:54 +02:00
Rasmus Kaj
bf91497d43 One more date to find, and nicer way to do it. 2016-07-29 11:19:23 +02:00
Rasmus Kaj
bbdd506b99 Look at DateTime when DateTimeOriginal is missing.
And some cleanup ...
2016-07-24 22:37:09 +02:00
Rasmus Kaj
4b5940fa48 Attempt nicer url segment parsing. 2016-07-22 00:20:38 +02:00
Rasmus Kaj
3767319ff6 Cleanup. 2016-07-17 14:30:58 +02:00
Rasmus Kaj
a89caf2799 Requestlogger cleanup. 2016-07-09 21:06:14 +02:00
Rasmus Kaj
b474373479 Use GPS position of photos. 2016-07-09 16:04:19 +02:00
Rasmus Kaj
7da9bab282 Remove unused imports. 2016-07-08 21:28:53 +02:00
Rasmus Kaj
967552f110 Implment proper user handling. 2016-07-02 12:50:25 +02:00
Rasmus Kaj
d2fd9b4430 Add an "on this day" feature. 2016-06-30 16:39:01 +02:00
Rasmus Kaj
b31a758a0d Implement places on photos. 2016-06-30 13:16:12 +02:00
Rasmus Kaj
c1d0862313 Implement people on photos. 2016-06-30 12:15:07 +02:00
Rasmus Kaj
855ea6c755 Implement tags on photos. 2016-06-30 01:29:02 +02:00
Rasmus Kaj
7778c079ed Consistency in whats public.
Attempt to only link public images from public overviews.

Some calls to desc() needs to be changed to desc().nulls_last() when
availiable in diesel.
2016-06-10 15:36:24 +02:00
Rasmus Kaj
2f3b222148 Get rid of some junk. 2016-06-06 22:28:07 +02:00
Rasmus Kaj
6d49a2e59d Findfotos: Path from command line. 2016-06-05 21:58:01 +02:00
Rasmus Kaj
03b33463c1 Actually get grades from kpa. 2016-06-05 17:38:30 +02:00
Rasmus Kaj
d040d7fe77 Start doing stuff in readkpa again. 2016-06-05 17:24:11 +02:00
Rasmus Kaj
daf64dae30 Some photos lacks datetime.
In the database, it is nullable.  In reality, it is unknown for
some of my older photos.
2016-06-05 15:55:23 +02:00
Rasmus Kaj
551e24cc69 Use DATABASE_URL consistently. 2016-06-05 00:57:38 +02:00
Rasmus Kaj
ffb5bbaf39 Reimplement all time-based views.
Also, proper database migrations and an attempt to make things
work on travis.
2016-06-04 21:08:14 +02:00
Rasmus Kaj
366b125862 Start conversion to diesel.
Use diesel instead of rustorm.  This compiles, but much of the
interestign stuff is commented out.
2016-05-29 21:51:27 +02:00
Rasmus Kaj
70f44cc153 Nicer error handling writing files. 2016-05-25 07:51:10 +02:00
Rasmus Kaj
f3f3602347 Add compressed css.
When storing the sassified css, also store copies compressed with gzip
and brotli.  That way, a good web server and client can save some
bytes of file transfer (the css in this project is very small, but as
it grows, this will become more relevant).
2016-05-23 20:50:13 +02:00
Rasmus Kaj
93c7d4fbbb Some clean-up of sassify. 2016-05-21 17:56:48 +02:00
Rasmus Kaj
94697fc35e Better linkpath in header.
Also known as breadcrumb links.
2016-05-18 18:44:50 +02:00
Rasmus Kaj
76a43e0efa Avoid trying to serve the raw images. 2016-05-15 22:05:42 +02:00
Rasmus Kaj
5490144f94 Order imports. 2016-05-11 18:15:00 +02:00
Rasmus Kaj
a3f414bd97 Use nickel form-body parsing for login. 2016-05-11 18:14:23 +02:00
Rasmus Kaj
5a57dc5e90 Add shorthand for date queries. 2016-05-04 22:11:31 +02:00
Rasmus Kaj
d1f5044466 Date links in page header. 2016-05-04 18:45:50 +02:00
Rasmus Kaj
8131e3fd01 Use &str rather than String. 2016-05-04 14:34:55 +02:00
Rasmus Kaj
3d956a106b Rustfmt. 2016-05-04 13:16:20 +02:00
Rasmus Kaj
53ca1530b9 Resassify only when needed. 2016-05-03 18:46:44 +02:00
Rasmus Kaj
88b0d8b57b Dont panic.
Handle errors in image scaling properly.
2016-05-03 18:37:35 +02:00
Rasmus Kaj
1a421537fb Get rid of some unused warnings. 2016-05-03 07:26:55 +02:00
Rasmus Kaj
a21d60a7be Show good pics only to guests.
If there is not a logged in user, show only pictures that
are graded above a certain limit.
2016-05-02 23:52:06 +02:00
Rasmus Kaj
e523d43d34 Add jwt authorization.
The username/password handling is just mocked currently.
2016-05-01 15:50:49 +02:00
Rasmus Kaj
10b5b4453c Use the "compressed" sass output.
This currently uses the sass-sys low-level interface, because the
operation is not supported in sass-rs.

The PR https://github.com/compass-rs/sass-rs/pull/3 adds high-level
support.  If / when that is fixed, the direct requirement for sass-sys
should be removed from rphotos.
2016-04-23 22:15:24 +02:00
Rasmus Kaj
c6a0aa25f5 Get rid of dead-code warnings. 2016-04-23 16:43:43 +02:00
Rasmus Kaj
d4bfe0756f Use scss to prepare css.
The css file is built to a file with (short) checksum in the
file name, to be nicely cacheable.  The actual file name is
compiled into the binary and sent to the templates as a variable.
2016-04-22 23:56:13 +02:00
Rasmus Kaj
e6a8c3189c Better code organisation.
Put handlers in separate functions, not just one extremely large main.
2016-04-19 18:10:26 +02:00
Rasmus Kaj
b340bb5f9d Summarize images per year and month. 2016-01-31 21:15:44 +01:00
Rasmus Kaj
84987eca40 Add a program to find image files. 2016-01-31 14:34:48 +01:00
Rasmus Kaj
f364d70b0f Changes for updated rustorm.
Disable default dependencies to handle a depency collision where
mysql required a different version of openssl than something else.
2016-01-30 19:57:53 +01:00
Rasmus Kaj
2335c5e97f Move PhotosDir to separate file. 2015-12-26 20:18:44 +01:00
Rasmus Kaj
caae44bf88 Update rustorm to version 0.4.0. 2015-12-26 17:29:28 +01:00
Rasmus Kaj
ba094853a2 Views per year/month/day. 2015-12-25 18:32:11 +01:00
Rasmus Kaj
d2adab3ecb Add original time to photos. 2015-12-22 18:22:21 +01:00
Rasmus Kaj
2c09e8d169 Dry and consistend photos_dir. 2015-12-06 23:00:16 +01:00
Rasmus Kaj
69003c561b Use environment for config.
Take base directory for photos and host:port to listen to from
environment instead of just useing hard-coded values.
2015-12-06 22:29:05 +01:00
Rasmus Kaj
9345860657 Minor cleanup. 2015-12-06 17:12:09 +01:00
Rasmus Kaj
1d57275fe8 Dryer code with a macro.
Declare and initialize the data struct for rendering
at the same time in view (controller) code.
2015-12-06 16:33:25 +01:00
Rasmus Kaj
e832e4d00f Better urls for image sizes. 2015-12-06 14:42:03 +01:00
Rasmus Kaj
eba6c2228c Remove semi-duplicate code. 2015-12-01 07:24:19 +01:00
Rasmus Kaj
66546966cc Nicer formatting of elapsed times. 2015-12-01 07:04:51 +01:00
Rasmus Kaj
5adeec2f91 RequestLoggerMiddleware.
Add a middleware that logs each request with result code
and elapsed time.
2015-11-30 20:31:23 +01:00
Rasmus Kaj
19db2ca293 Add support for places.
Only the simple tag-like places I used in kphotoalbum.
Proper geotagging is still left to do.
2015-11-29 22:38:47 +01:00
Rasmus Kaj
c768c071fc Import my kpa grades. 2015-11-29 20:09:49 +01:00
Rasmus Kaj
b2569dfa82 Scale images only down, not up. 2015-11-29 18:53:09 +01:00
Rasmus Kaj
177de0e6b7 Support rotation of images. 2015-11-29 18:38:58 +01:00
Rasmus Kaj
472c3a476c Provide orm_get_related.
It works the same each time, so provide it in my middleware.
2015-11-29 17:18:47 +01:00
Rasmus Kaj
c0ebb5a729 Add people data. 2015-11-28 09:53:12 +01:00
Rasmus Kaj
0ffa72a1db Expires header works again.
Match the direct hyper dependency with the one in nickel.rs
and things work fine agin.
2015-11-27 18:38:46 +01:00
Rasmus Kaj
ce4c362e60 A get_or_create with generic defaults. 2015-11-27 18:21:08 +01:00
Rasmus Kaj
8227b153b0 Put RustormMiddleware in separate file. 2015-11-27 13:05:43 +01:00
Rasmus Kaj
275185a8bc Setting expires broken in nickel 0.7.3.
Maybe there is a way, but the way I used have ceased to
work. https://github.com/nickel-org/nickel.rs/issues/303
2015-11-27 12:46:47 +01:00
Rasmus Kaj
735767065e List all tags. 2015-11-27 00:02:18 +01:00
Rasmus Kaj
939cbac290 Basic styling. 2015-11-26 23:20:36 +01:00
Rasmus Kaj
5c5ac376c8 List photos for a tag.
And of course some rewriting of everything ...
2015-11-26 22:47:39 +01:00
Rasmus Kaj
b1d53c0762 Photos can have tags.
Read old data from kphotoalbum.
2015-11-23 06:48:09 +01:00
Rasmus Kaj
704877abd9 Actually show some photos. 2015-11-22 13:01:39 +01:00
Rasmus Kaj
87ddb0db1f Read "photos" from db. 2015-11-21 16:21:44 +01:00
Rasmus Kaj
4cee26adea Initial commit.
Very simple web service using the nickel framworkd.
2015-11-19 23:43:04 +01:00