23 Commits

Author SHA1 Message Date
e19dd27099 API endpoint /api/nodes/tagged/<tag>
This endpoint returns nodes in public projects that have the given tag.
The returned JSON is cached for 5 minutes.
2018-09-06 15:42:50 +02:00
61278730c6 De-indent the code a bit 2018-07-13 17:02:47 +02:00
61ed083218 Don't change the global schema! 2018-07-13 12:33:22 +02:00
549cf0a3e8 WIP on libraries upgrade 2018-07-12 15:23:57 +02:00
0841d52dd1 Removed unused imports 2018-04-03 10:48:40 +02:00
dfaac59e20 Cache Markdown'ed HTML in database
This is done via coercion rules. To cache the field 'content' in the
database, include this in your Eve schema:

    {'content': {'type': 'string', 'coerce': 'markdown'},
     '_content_html': {'type': 'string'}}

The `_content_html` field will be filled automatically when saving the
document via Eve.

To display the cached HTML, and fall back to display-time rendering if it
is not there, use `{{ document | markdowned('content') }}` in your template.

Still needs unit testing, a CLI command for regenerating the caches, and
a CLI command for migrating the node type definitions in existing projects.
2018-03-27 16:34:32 +02:00
987d6d03a6 Fix T49280: Make texture files (in texture node) sortable
Rather than making them sortable, I made them automatically sorted upon
saving the node. The colour map comes first, then the other maps in
alphabetical order.
2018-01-26 11:42:42 +01:00
2233d015f3 T53161 start working on elastic.. 2017-11-17 16:06:01 +01:00
bdd603fb17 Using new UserClass instances everywhere:
- No more direct access to g.current_user, unless unavoidable.
  - Using pillar.auth.current_user instead of g.current_user or
    flask_login.current_user.
  - p.a.current_user is never checked against None.
  - p.a.current_user.is_authenticated or is_anonymous is used, and never
    together with a negation (instead of 'not is_anon' use 'is_auth').
  - No more accessing current_user a a dict.
  - No more checks for admin role, use capability check instead.
2017-08-29 11:34:48 +02:00
bd13d89817 Added permission check to DELETE of nodes. 2017-07-13 17:29:46 +02:00
878bf22695 Migrated Algolia push/delete of nodes to Celery background tasks. 2017-06-02 10:44:37 +02:00
1ad3e7910c Upgrade algoliasearch 2017-04-11 12:08:57 +02:00
cce388049d Big refactoring of file storage handling
- Moved pillar.api.utils.{gcs,storage} to pillar.api.file_storage_backends
- Implemented GCS and local storage using abstract Bucket and Blob classes
- Removed file processing from the Blob class, and kept it in the
  file_storage/__init__.py class. That way storage and processing are
  kept separate.
2017-03-22 15:49:56 +01:00
dcdcd99393 Python 3.6 compatibility: random bits & bcrypt
Switched from Sybren's RSA library to the new stdlib module 'secrets' to
generate secret tokens. This also means that the rsa library was demoted
to secondary requirement.
2017-03-22 15:49:51 +01:00
663627358f Ran 2to3 on pillar + some manual fixups
The 'manual fixups' are:

- incorrect use of dict.items() where dict.iteritems() was meant; this
  results in list(dict.items()), which I changed to dict.items().
- removal of 'from __future__ import' lines, which 2to3 changes into
  empty lines; I removed the empty lines.
2017-03-22 15:49:51 +01:00
2cc21583d9 On-create activities are only created for Pillar nodes.
This allows Attract to use custom on-create activities.
2016-11-02 15:39:16 +01:00
8fb64c38d6 Removed API-side attachment parsing. 2016-11-01 16:47:55 +01:00
fa3406b7d0 only_for_node_type_decorator() now supports checking multiple node types 2016-11-01 16:47:32 +01:00
e71e6a7b32 API for editing comments via PATCH 2016-10-20 16:22:11 +02:00
ea2be0f13d Major revision of comment system.
- Comments are stored in HTML as well as Markdown, so that conversion
  only happens when saving (rather than when viewing).
- Added 'markdown' Jinja filter for easy development. This is quite
  a heavy filter, so it shouldn't be used (much) in production.
- Added CLI command to update schemas on existing node types.
2016-10-19 16:57:17 +02:00
ade62033ba Added only_for_node_type_decorator(node_type_name) decorator factory func
This allows you to create a decorator for Eve hooks. The decorator returns
a decorator that checks its first argument's node type.

If the node type is not of the required node type, returns None,
otherwise calls the wrapped function.
2016-10-12 13:41:16 +02:00
ab5a4a6b6c Custom error pages.
These make a distinction between API requests on /api/ (which will return
a JSON response) and other requests (which will return HTML).

Fixes T49212
2016-09-06 14:22:52 +02:00
2c5dc34ea2 Introducing Pillar Framework
Refactor of pillar-server and pillar-web into a single python package. This
simplifies the overall architecture of pillar applications.

Special thanks @sybren and @venomgfx
2016-08-19 09:19:06 +02:00