Commit graph

1059 commits

Author SHA1 Message Date
Shane Kilkelly
48b7800c7f Revert, because mistake. 2016-05-04 10:43:40 +01:00
Shane Kilkelly
aa301dacb9 Return callback with error if an error is emitted on filestore stream. 2016-05-04 09:32:13 +01:00
Henry Oswald
b237a022c3 added rate limiting on wiki endpoint 2016-04-28 17:24:00 +01:00
Shane Kilkelly
74205ce11b Remove features.mendeley and features.zotero from User model 2016-04-28 16:01:47 +01:00
Henry Oswald
b00bd5cd94 if clsi cookies are not enabled don't call redis, return empty 2016-04-27 17:05:12 +01:00
Henry Oswald
78b08060ab redis get not multi used for _getServerId 2016-04-27 16:56:21 +01:00
Henry Oswald
1ee94f9bf5 return server id for set server id and _populateServerIdViaRequest 2016-04-27 16:20:10 +01:00
Henry Oswald
616630200a improve send calls and return correct stuff from _makeRequest 2016-04-20 17:08:11 +01:00
Henry Oswald
18560d8621 set server cookie on every compile response and don't expire on get 2016-04-20 16:17:06 +01:00
Henry Oswald
4d54de8b9a renamed ClsiRequestManager to ClsiCookieManager and improved logging 2016-04-20 15:06:39 +01:00
Henry Oswald
b37595acf9 persist cookie in redis for compiles. 2016-04-19 16:48:51 +01:00
Henry Oswald
ffa04c7b55 add project url onto query string for compile hashing 2016-04-13 15:38:04 +01:00
Shane Kilkelly
939d7cd042 Merge branch 'master' into sk-tpr 2016-04-11 16:41:34 +01:00
Henry Oswald
424e09ec05 getGroupSubscriptionMemberOf gets plan code 2016-04-05 16:03:46 +01:00
Shane Kilkelly
a686d187ad Pull refProviders into user model 2016-04-01 11:36:19 +01:00
Henry Oswald
3d719af71e if subscription is downgraded don't use plan code on subscription, use default instead 2016-03-31 18:04:20 +01:00
Henry Oswald
81cd2adfd3 member_ids != members_id 2016-03-31 17:36:06 +01:00
Henry Oswald
d80191c03b added more logging and missing err handler in subscription updater 2016-03-31 17:28:03 +01:00
Shane Kilkelly
0ce514a5a6 Add features to the user object in ide. 2016-03-31 17:10:49 +01:00
Henry Oswald
5a201153c7 refactored subscription updater again adding _setUsersMinimumFeatures
single place you can call and the users minimum features are set
2016-03-31 16:58:16 +01:00
Henry Oswald
cb3eb88af2 Merge branch 'subscriptionimprovements' 2016-03-31 11:58:56 +01:00
Henry Oswald
db8fb63bb5 fixed change payment details page
also increased size of year field for firefox users
and removed unnded options in new plan page
2016-03-31 11:54:52 +01:00
Henry Oswald
1a651b38f4 added sendgrid as email option 2016-03-29 14:15:33 +01:00
James Allen
3fe0674462 Revert "Add error handling in mkdir_p"
This reverts commit c2458cd19018fe05199ce3b33fd4e9230d1cf319.

Apparently mkdirp needs errors to be ignored to work...
2016-03-23 15:33:01 +00:00
James Allen
4d0fe3bf5d Add error handling in mkdir_p 2016-03-23 15:18:10 +00:00
James Allen
ae5467894b Standardise on one Errors file 2016-03-23 15:14:49 +00:00
James Allen
bad9a0282d Add missing error handler 2016-03-23 14:38:11 +00:00
James Allen
3d8ac9f292 Add in a few null checks
These were discovered by using a project that was messed up with the moving
folder bug where the folder ended up without an id, docs or fileRefs array
2016-03-23 10:54:36 +00:00
Henry Oswald
c554b0630d if user has subscription before joining group is given option to cancel personal one 2016-03-22 16:59:47 +00:00
Henry Oswald
a6859e22b3 if user is member of group on downgrade use the group subscription 2016-03-22 16:05:46 +00:00
Henry Oswald
7fb0249b2b null check subscription for custom accounts page 2016-03-22 14:19:46 +00:00
Henry Oswald
c777f498ad Merge branch 'groove2' 2016-03-22 11:58:04 +00:00
James Allen
f182fbf396 Convert 'anonymous-user' from real-time api in 'null' internally 2016-03-22 09:53:47 +00:00
James Allen
2af2dd694e Use null to represent anonymous user, as AuthorizationManager expects 2016-03-22 09:39:25 +00:00
James Allen
7791805949 Allow admin access to projects 2016-03-21 17:03:41 +00:00
Henry Oswald
840d3b75bb listen for close not exit when working with unzip command
sometimes the command will fail because stout has not finished yet
2016-03-21 16:37:29 +00:00
Henry Oswald
4d7ed1cb17 improved logging from unzip command 2016-03-21 16:00:12 +00:00
James Allen
9a0ec9c292 Don't throw fatal error when recently compiled 2016-03-21 13:54:45 +00:00
James Allen
8bfc613bb3 Log client side errors as warns so they don't show in Sentry 2016-03-21 13:29:34 +00:00
James Allen
6beb29f449 Don't treat no root resource as a fatal error 2016-03-21 13:28:53 +00:00
James Allen
8fb3e629e8 Require logins for all uploads to projects 2016-03-21 13:23:14 +00:00
James Allen
0ba70e7ccc Remove missing parameter in log lines 2016-03-21 13:15:57 +00:00
James Allen
2a9e451876 Refine error page to in all situations, and don't send sentry errors on not found errors 2016-03-21 11:55:59 +00:00
Henry Oswald
4e78e34cdf finished contact us with groove
for settings file:

<a ng-controller="ContactModal", ng-click="contactUsModal()", href>Contact</a>
2016-03-21 11:41:05 +00:00
James Allen
e7d67668e9 Improve error reporting and show 404 when project ids are malformed 2016-03-18 15:59:12 +00:00
Shane Kilkelly
f3db114654 Use the mongojs based apis to get Project and User information. 2016-03-18 11:20:33 +00:00
James Allen
de02928454 Merge branch 'master' into ja_email_tokens 2016-03-17 17:01:26 +00:00
Henry Oswald
c980382196 make calls to learn wiki run in parallel,
only saves about 150ms but ever little helps
2016-03-17 12:55:28 +00:00
James Allen
60a39f82c1 Fix off by one bug in moving folders from using an out of date project structure 2016-03-15 15:14:54 +00:00
James Allen
75d9912449 Use _.defaults to simplify assigning default features 2016-03-15 14:44:06 +00:00
James Allen
b7d226f434 Make privilege level check in EditorHttpController more explicit 2016-03-15 14:39:27 +00:00
James Allen
261466b042 Convert privilege levels to an enum 2016-03-15 14:35:01 +00:00
James Allen
398d43e2d1 Add missing ? check 2016-03-15 14:15:25 +00:00
James Allen
fe1f71413e Use ProjectGetter, not Project, in ProjectController.loadEditor 2016-03-15 14:12:43 +00:00
James Allen
d09705142e Add in missing error checks 2016-03-15 14:07:34 +00:00
James Allen
5781894453 Do array null check in callback args 2016-03-15 14:05:59 +00:00
Henry Oswald
76b3a78988 added lock around move element 2016-03-15 12:29:41 +00:00
Henry Oswald
ba9bc3a2e8 check that element being inserted has an _id 2016-03-15 11:29:59 +00:00
James Allen
b556d57f40 Remove missed console.log debugging lines in AuthenticationController.coffee 2016-03-14 17:11:23 +00:00
James Allen
71ef045728 Implement authorization guards in Authorization{Manager,Controller} 2016-03-14 17:06:57 +00:00
Henry Oswald
f24bc2c501 log out error when can't send to tpds worker 2016-03-14 14:44:45 +00:00
Henry Oswald
1b39b01114 check err on _putElement for file in project 2016-03-14 14:42:13 +00:00
Henry Oswald
8be55f760f swallow error if tpdsworker can not be comunicated with on addFile 2016-03-14 10:49:28 +00:00
Henry Oswald
3fc357a343 Merge branch 'master' into projectsizelimit 2016-03-14 10:31:07 +00:00
Henry Oswald
086875d50c added logging 2016-03-14 10:08:47 +00:00
Henry Oswald
15c6e49d1a if user changes email then check if they have a site licence 2016-03-13 22:31:14 +00:00
Henry Oswald
8812ff445e change zip size check to spawn 2016-03-12 15:43:16 +00:00
Henry Oswald
f11ba97389 check stat.isFile and isDirectory rather then symlink 2016-03-12 15:05:29 +00:00
Henry Oswald
6664b67fba check size of zip files 2016-03-12 12:38:21 +00:00
Henry Oswald
da242d90e6 added extra isSymLink checks into reading files 2016-03-12 12:01:36 +00:00
James Allen
1bd8b8d1a3 Delete SecurityManager and replace with (unwritten) AuthorizationManager 2016-03-10 17:17:26 +00:00
James Allen
3e03164ed4 Remove dead auth_token code 2016-03-10 17:15:14 +00:00
Henry Oswald
36966f0c9b wip 2016-03-10 17:11:28 +00:00
Henry Oswald
347bfe4a79 use cb for internal callbacks 2016-03-10 12:43:36 +00:00
Henry Oswald
3c4e74af4b project duplicator works and tests pass.
not so bad now.
2016-03-10 12:42:21 +00:00
Henry Oswald
d801ab623a project duplicator works, tests don't 2016-03-10 11:58:05 +00:00
James Allen
e36be96ec9 Move public access setting to its own end point 2016-03-10 11:13:57 +00:00
Henry Oswald
bf8f9f6d41 change key to maxEntitiesPerProject 2016-03-09 15:53:03 +00:00
Henry Oswald
940586f654 sped up unit tests to improve speed
also removed some unneeded requires.
2016-03-09 12:51:19 +00:00
James Allen
4f9f255153 Extend acceptance tests to include shared projects 2016-03-09 12:31:46 +00:00
Henry Oswald
a33b480c67 added more logging to subscription group handler 2016-03-09 11:20:17 +00:00
Henry Oswald
5be05a35d8 added WithProject versions of functions
rather than project_or_id
2016-03-09 11:16:27 +00:00
Henry Oswald
57f00d76bd get project name on entity move 2016-03-08 14:46:53 +00:00
Shane Kilkelly
8f2d2cfeff Merge branch 'ja_email_tokens' of github.com:sharelatex/web-sharelatex into ja_email_tokens 2016-03-08 14:38:31 +00:00
Shane Kilkelly
3e423b8a06 Another find->findOne 2016-03-08 14:38:25 +00:00
Henry Oswald
ede159d833 changed logging for archiving projects from delete to archived 2016-03-08 14:38:23 +00:00
James Allen
e53fc5f0b6 Remove dead code (Project.findPopulatedById) 2016-03-08 14:20:53 +00:00
James Allen
76af5e5563 Don't call deprecated findPopulatedById in loadEditor 2016-03-08 14:20:00 +00:00
James Allen
359689ffea find -> findOne 2016-03-08 14:19:38 +00:00
James Allen
0882eb2a99 Don't use deprecated Project.findPopulatedById in ReferencesManager 2016-03-08 14:05:56 +00:00
James Allen
b64c8e3d78 Delete dead code in User model 2016-03-08 12:07:50 +00:00
James Allen
5f5445f625 Use TpdsUpdateSender to use CollaboratorsHandler 2016-03-08 11:54:45 +00:00
James Allen
e814dfa7a8 Proxy .gif files to the blog too 2016-03-07 16:39:16 +00:00
James Allen
a50bdaf5cc Refactor LimitationsManager to use CollaboratorsHandler 2016-03-07 15:32:04 +00:00
James Allen
bedc8a0492 Remove ProjectGetter.populateProjectWithUsers 2016-03-07 15:25:10 +00:00
James Allen
2ba2b72fd1 Refactor ProjectDeleter to use CollaboratorHandler 2016-03-07 12:27:40 +00:00
James Allen
6d93076d51 Refactor getCollaborators http method to use CollaboratorsHandler 2016-03-07 12:02:48 +00:00
James Allen
1a689aa1fd Move findAllUsersProjects from Project to ProjectGetter 2016-03-03 17:19:03 +00:00
James Allen
120a142733 Add in required abstracted functions to CollaboratorsHandler 2016-03-03 16:13:19 +00:00
Henry Oswald
4af0341e84 don't stop if add entity doens't make it to tpdsworker 2016-03-02 17:34:21 +00:00
Henry Oswald
39c7010d72 fixed broken tests 2016-02-29 22:51:46 +00:00
Henry Oswald
76591ebb23 made ProjectGetter.getProject more robust
it can deal with multiple types of query better, including mongoose ids which are not being matched like mongojs ids.
2016-02-29 19:01:46 +00:00
Henry Oswald
6a7395a287 brought back the project_or_id style
Added functionality into project getter, its a big performance improvement for things like cloning projects. Clone a 500 element project, 1 mongo get or 500.
2016-02-29 17:34:38 +00:00
Henry Oswald
b5dd96aa71 fixed some mongo calls in project entity handler
need to specify fields you want to not get array back.
2016-02-29 16:03:22 +00:00
Henry Oswald
1e8523c227 don't emmit to room new entities if they errored. 2016-02-29 13:05:37 +00:00
Henry Oswald
8f0d1dc73e add in the calls to block large projects 2016-02-29 13:05:17 +00:00
Henry Oswald
8aec86af4e moved count element to project entity handler and added tests 2016-02-26 13:25:09 +00:00
Henry Oswald
d95526bd8b ProjectGetter.findRootDoc moved to mongojs 2016-02-26 08:35:10 +00:00
Henry Oswald
eedaa43b58 move project duplicator to mongojs 2016-02-26 08:32:00 +00:00
Henry Oswald
6ca69f88ac Move project locator to mongojs 2016-02-26 08:31:47 +00:00
Henry Oswald
586d4cbae1 replaced all mongoose Project.find with mongojs calls 2016-02-26 08:23:43 +00:00
Henry Oswald
b6d62a677b ProjectDeleter.archiveProject doesn't need to get entire project 2016-02-26 08:13:41 +00:00
Henry Oswald
447568aa91 ProjectDetailsHandler.getDetails does not need full project 2016-02-26 07:56:26 +00:00
Henry Oswald
43102e0ffc lowercase and trim add user to group email address 2016-02-25 14:15:56 +00:00
James Allen
155831c3e7 Skip top-level directory if it exists in zip upload 2016-02-24 17:21:20 +00:00
James Allen
c6dcb64b18 Overwrite text files from uploads 2016-02-24 16:37:03 +00:00
Henry Oswald
09ac8f8c7a move .putElement into ProjectEntityHandler with tests 2016-02-24 15:36:39 +00:00
Henry Oswald
a8060109fd spike of limit 2016-02-24 08:06:40 +00:00
Henry Oswald
1e6f5997dc use cb for internal async callbacks and inline call 2016-02-23 15:50:30 +00:00
Henry Oswald
7a28eeeaa0 ProjectEntityHandler.addFolder take only project id and
only gets project folder structure
2016-02-23 15:45:40 +00:00
Henry Oswald
1278081b51 mkdirp only needs folder strucutre 2016-02-23 15:36:59 +00:00
Henry Oswald
1d76850ebd copyFileFromExistingProject does not need the whole project 2016-02-23 15:34:31 +00:00
Henry Oswald
6f474d9a00 put element just needs project folder structure not docs inside 2016-02-23 15:27:55 +00:00
Henry Oswald
b504732733 fixed calls to addUserToGroup and added more logging 2016-02-22 16:50:41 +00:00
Henry Oswald
103bb1c88f add more error logging to group handler 2016-02-22 16:01:26 +00:00
Henry Oswald
85a8bc97ed add leave group button for group subscriptions 2016-02-19 12:27:32 +00:00
Shane Kilkelly
b505f0d455 Merge branch 'sk-references-search'
Conflicts:
	app/coffee/Features/References/ReferencesController.coffee
2016-02-19 11:30:55 +00:00
Henry Oswald
29e4b324fd improve calls for invite notifications and auto mark as read 2016-02-18 11:43:43 +00:00
Henry Oswald
f824a3e28a kill off dead code in group handler 2016-02-18 11:42:26 +00:00
Henry Oswald
bd54cc722a fixed broken tests in AuthenticationController 2016-02-18 10:16:50 +00:00
Henry Oswald
fc4bd94a6e don't create notification if user is already part of group 2016-02-18 10:06:21 +00:00
Henry Oswald
c8084406d3 user notifications auto created on login for joinging groups 2016-02-17 16:24:09 +00:00
Henry Oswald
735f7bd51e change res.send to res.sendStatus for new express 2016-02-16 12:38:27 +00:00
Henry Oswald
f5910762c1 fixed missign translation for when email is already registered 2016-02-16 12:38:27 +00:00
James Allen
b3a2d44937 next -> callback 2016-02-16 11:12:07 +00:00
Henry Oswald
87ef2cc563 Merge branch 'nodemailer2' 2016-02-15 14:52:58 +00:00
Henry Oswald
ef148da7aa remove un needed require 2016-02-12 17:15:13 +00:00
Henry Oswald
05bf048885 upgrade to nodemailer 2.0 and dynamically use either SES or SMTP depending
on what is in settings file
2016-02-12 17:13:45 +00:00
Henry Oswald
8e5907f79e have null array as default for notifications 2016-02-11 12:10:30 +00:00
Henry Oswald
5c5888b5dc Merge branch 'pr/221' 2016-02-11 11:44:45 +00:00
Shane Kilkelly
326d9e59f8 Refactor ReferencesSearch* to just References*. 2016-02-08 17:04:27 +00:00
James Allen
b978171e0c Fix "cannot set headers after sent" in setting doc end point
If somehow a project ends up with the same doc/file in two locations in the
file tree, then projectLocator.findElement will return the callback for
both entries. This then tries to end the request multiple times. Of course
this should never be a state the project is in, but if it is we should catch it.
2016-02-05 15:39:26 +00:00
Henry Oswald
de0589b051 added notifications calls for sending to api and mark as read
not creating it yet
2016-02-05 14:13:38 +00:00
Henry Oswald
f136486f4b cleanup layout of notifications 2016-02-04 14:28:31 +00:00
James Allen
6143b2218c Send user_id on Dropbox requests through to doc updater 2016-02-04 14:27:00 +00:00
James Allen
8a095a5144 Upgrade to PDF 1.3.91 2016-02-04 14:27:00 +00:00
Henry Oswald
47eebb1840 add null check and default empty object for subscirption dashboard 2016-02-03 17:41:05 +00:00
Henry Oswald
7994528c92 make site licence regex more specific 2016-02-03 16:08:29 +00:00
James Allen
4c626f23e7 Merge pull request #224 from sharelatex/ja_draft_mode
Draft mode for compiles
2016-02-02 15:04:21 +00:00
James Allen
425a9b9db2 Add in option to compile in draft mode 2016-02-02 14:50:48 +00:00
Henry Oswald
6cd66c7304 allow rate limiter to work on api router where session does not exist 2016-02-02 12:31:54 +00:00
James Allen
b32178182d Explicitly create tags and get their id 2016-02-01 10:18:56 +00:00
James Allen
77cc6af35e Update add tag end point to use tag_id 2016-02-01 10:18:56 +00:00
James Allen
f1e65cc776 Use tag_id for deleting tags from project 2016-02-01 10:18:56 +00:00
James Allen
1bd5aef85f Allow renaming of tags 2016-02-01 10:18:56 +00:00
James Allen
1a86e69d1f Allow tags to be deleted 2016-02-01 10:18:56 +00:00
Shane Kilkelly
50a451970b Merge branch 'master' into sk-references-2 2016-01-28 10:06:41 +00:00
Shane Kilkelly
cc818695ef Split References.index into index and indexAll. 2016-01-27 16:00:53 +00:00
Shane Kilkelly
ec8a12d445 Flush changes to mongo before sending request to references service 2016-01-27 13:33:42 +00:00
Shane Kilkelly
fed10280ab Use docstore url rather than going through web api. 2016-01-27 09:58:54 +00:00
Shane Kilkelly
d1e53f0cb8 Test ReferencesSearchHandler.index 2016-01-26 16:14:17 +00:00
Shane Kilkelly
8a991b0d06 Start testing ReferencesSearch feature 2016-01-26 14:29:23 +00:00
Henry Oswald
690b195f1a move login success to .json as it sends json over 2016-01-25 17:35:57 +00:00
Shane Kilkelly
a3cee72663 Remove old routes and debug prints. 2016-01-25 13:56:07 +00:00
Henrique Santos
9429e49cf8 finishing frontend 2016-01-22 18:08:39 -02:00
Shane Kilkelly
c911b7d6a3 Broadcast references-key changes back to connected clients. 2016-01-22 15:59:43 +00:00
Shane Kilkelly
af75bb8a60 wip: change how indexing of references works. 2016-01-22 14:23:59 +00:00
Henrique Santos
2d11705837 fix issues in first commit 2016-01-22 03:41:22 -02:00
Henrique Santos
476eaa8b84 add notification backend and unit test
add notification init frontend
2016-01-21 18:42:50 -02:00
Shane Kilkelly
307f78b831 WIP: send multiple bib files and get back keys 2016-01-21 17:01:24 +00:00
Shane Kilkelly
d5d5ba9066 Merge branch 'master' of github.com:sharelatex/web-sharelatex 2016-01-20 14:02:24 +00:00
Shane Kilkelly
0b28e7e964 send a fullIndex flag along to references service. 2016-01-20 13:53:28 +00:00
James Allen
bcb9e1180b Add jobs page 2016-01-20 11:56:08 +00:00
James Allen
ed5872702a Pass image to wordcount end point in CLSI 2016-01-19 14:17:01 +00:00
James Allen
5125aa0089 Make templates a premium feature 2016-01-19 13:37:22 +00:00
Shane Kilkelly
41aaefc1f6 Enable pre-indexing of references 2016-01-18 11:41:30 +00:00
Shane Kilkelly
2a7894f6e4 Merge branch 'master' of github.com:sharelatex/web-sharelatex 2016-01-15 14:41:12 +00:00
Shane Kilkelly
20757b11b8 Add code to automatically index bib files on project load. 2016-01-15 14:41:05 +00:00
James Allen
03d75944b0 Allow image name to be configured 2016-01-15 10:26:36 +00:00
Shane Kilkelly
b49ed15c14 Fix missing comma 2016-01-14 15:13:19 +00:00
Shane Kilkelly
ca0a625dcc Begin work on indexing the references when project is opened. 2016-01-14 14:53:08 +00:00
Shane Kilkelly
1e904e6ab7 Merge branch 'master' into sk-references-ac 2016-01-13 11:31:58 +00:00
Henry Oswald
a181905ab8 removed console.log 2016-01-04 11:42:54 +00:00
Shane Kilkelly
a63028bad3 Test the ReferencesSearchHandler 2015-12-31 10:28:19 +00:00
Shane Kilkelly
d9ca9fc06d Fix comically long lines. 2015-12-31 09:22:35 +00:00
Shane Kilkelly
86d69f3275 Start testing ReferencesSearch. 2015-12-30 15:08:12 +00:00
Shane Kilkelly
8c9c476dd7 Fetch the list of keys from references index. 2015-12-18 16:00:24 +00:00
Shane Kilkelly
c9db11edbe Change to using project_id rather than user_id in references index. 2015-12-18 14:57:36 +00:00
Shane Kilkelly
e684968a59 Add ability to request the doc as plain text, rather than a json object.
This makes it much easier to stream-parse the document.
2015-12-18 13:36:25 +00:00
Shane Kilkelly
1ea13a74dd Refresh the references when the bib file is closed. 2015-12-17 15:13:02 +00:00
Shane Kilkelly
249dd638ec experimental: update references index from fronted. 2015-12-17 11:51:14 +00:00
Henry Oswald
501763bb4e changed add doc to use ligher mongo call (folders only) 2015-12-15 13:27:41 +00:00
Henry Oswald
763f16f43c Merge branch 'master' of https://github.com/sharelatex/web-sharelatex 2015-12-12 11:39:54 +00:00
James Allen
e8f21986dd Refactor registration so it can be called from modules 2015-12-11 17:11:20 +00:00
James Allen
c0dfdb3bd8 Use translations for activation page 2015-12-11 14:25:17 +00:00
James Allen
1e8ab5357b Improve pre-registered account activation process 2015-12-11 11:30:06 +00:00
Henry Oswald
13af9b7b56 find project by name should only find active projects 2015-12-10 17:06:00 +00:00
Henry Oswald
aafdeb031e wip - downgrade options it all works, need unit tests & translations 2015-12-08 18:23:28 +00:00
Henry Oswald
156f646613 increase number of files that can be uploaded & limit 1 concurent 2015-12-07 16:50:09 +00:00
Henry Oswald
8590af3e49 added rate limit on server side for file uploads 2015-12-01 13:08:49 +00:00