blender-id.git
5 months agoUpdate responsive class for badge display master production
Francesco Siddi [Fri, 7 Feb 2020 12:14:51 +0000 (13:14 +0100)]
Update responsive class for badge display

The class name changed from Bootstrap 3 to Bootstrap 4 and it's now img-fluid.

5 months agoMerge branch 'fix/missing_checkbox'
Sem Mulder [Fri, 7 Feb 2020 11:47:42 +0000 (12:47 +0100)]
Merge branch 'fix/missing_checkbox'

5 months agoFix missing agree checkbox when signing up
Sem Mulder [Fri, 7 Feb 2020 11:46:53 +0000 (12:46 +0100)]
Fix missing agree checkbox when signing up

The field `agree` on the `UserRegistrationForm` was renamed to
`agree_privacy_policy`.

5 months agoRemove references to My Data
Sem Mulder [Thu, 9 Jan 2020 15:21:46 +0000 (16:21 +0100)]
Remove references to My Data

6 months agoSupport Bootstrap CSS classes for checkbox inputs
Francesco Siddi [Sat, 30 Nov 2019 19:52:37 +0000 (20:52 +0100)]
Support Bootstrap CSS classes for checkbox inputs

8 months agoNPM: Cleanup. Remove Bootstrap 3 dependency.
Pablo Vazquez [Thu, 7 Nov 2019 12:12:14 +0000 (13:12 +0100)]
NPM: Cleanup. Remove Bootstrap 3 dependency.

Bootstrap 4 comes bundled with BWA.

8 months agoTemplates: Cleanup.
Pablo Vazquez [Thu, 7 Nov 2019 12:09:22 +0000 (13:09 +0100)]
Templates: Cleanup.

8 months agoTemplates: Use BS4 style forms for Edit Profile
Pablo Vazquez [Thu, 7 Nov 2019 12:07:55 +0000 (13:07 +0100)]
Templates: Use BS4 style forms for Edit Profile

8 months agoTemplates: Use BS4 style forms for Change Password.
Pablo Vazquez [Thu, 7 Nov 2019 12:06:40 +0000 (13:06 +0100)]
Templates: Use BS4 style forms for Change Password.

8 months agoTemplates: Use BS4 style forms for User Register.
Pablo Vazquez [Thu, 7 Nov 2019 12:06:28 +0000 (13:06 +0100)]
Templates: Use BS4 style forms for User Register.

8 months agoCleanup: Bits of CSS no longer needed in the latest BWA.
Pablo Vazquez [Thu, 7 Nov 2019 11:23:07 +0000 (12:23 +0100)]
Cleanup: Bits of CSS no longer needed in the latest BWA.

8 months agoTemplates: Update header to work with the latest BWA.
Pablo Vazquez [Thu, 7 Nov 2019 11:21:47 +0000 (12:21 +0100)]
Templates: Update header to work with the latest BWA.

8 months agoTemplates: Center boxes using BS4 classes.
Pablo Vazquez [Thu, 7 Nov 2019 11:20:36 +0000 (12:20 +0100)]
Templates: Center boxes using BS4 classes.

8 months agoUpgrade Blender Web Assets submodule (over 1 year old!)
Pablo Vazquez [Thu, 7 Nov 2019 11:00:00 +0000 (12:00 +0100)]
Upgrade Blender Web Assets submodule (over 1 year old!)

This introduces Bootstrap 4.3.1 support among a brazillion tweaks and fixes.

https://getbootstrap.com/docs/4.3/getting-started/introduction/

8 months agoAdd My Data to the links in the admin user list
Sybren A. Stüvel [Tue, 5 Nov 2019 13:40:36 +0000 (14:40 +0100)]
Add My Data to the links in the admin user list

8 months agoRemoved old commented-out code
Sybren A. Stüvel [Tue, 5 Nov 2019 11:30:15 +0000 (12:30 +0100)]
Removed old commented-out code

8 months agoAdded links to Store/Cloud/Fund to the user list in the admin
Sybren A. Stüvel [Tue, 5 Nov 2019 11:16:26 +0000 (12:16 +0100)]
Added links to Store/Cloud/Fund to the user list in the admin

This makes it easier to check people's Store/Cloud/Fund accounts directly
from the user list.

8 months agoAdded 'Deletion Requested' field to user model
Sybren A. Stüvel [Tue, 5 Nov 2019 10:46:09 +0000 (11:46 +0100)]
Added 'Deletion Requested' field to user model

For now this is purely cosmetic, and I personally use it to mark users
before I delete them. We can later extend the functionality by allowing
users to set the `deletion_requested` field themselves, send confirmation
emails, and expose the deletion request to other systems.

8 months agoAdded missing migration about User.avatar being an AvatarField
Sybren A. Stüvel [Tue, 5 Nov 2019 10:36:16 +0000 (11:36 +0100)]
Added missing migration about User.avatar being an AvatarField

Before it was an ImageField, which is stored the same in the database, so
this migration is a no-op when it comes to the DB model.

8 months agoUpdated dependencies to latest versions
Sybren A. Stüvel [Tue, 5 Nov 2019 10:21:49 +0000 (11:21 +0100)]
Updated dependencies to latest versions

9 months agoAdd GPL 3 license file
Sybren A. Stüvel [Tue, 17 Sep 2019 09:44:41 +0000 (11:44 +0200)]
Add GPL 3 license file

Related to T69359

We still should mention the license at the top of each source file, but
this way at least it's declared somewhere.

12 months agoAvoid using possibly-out-of-date user.public_roles_as_string in webhook
Sybren A. Stüvel [Fri, 21 Jun 2019 13:23:09 +0000 (15:23 +0200)]
Avoid using possibly-out-of-date user.public_roles_as_string in webhook

The `user.public_roles_as_string` property is set by an `m2m_changed`
hook, which may or may not have some race condition. We now just do an
extra database query to get to the actual truth and obtain the correct
roles.

12 months agoConfigured uwsgi log rotation
Sybren A. Stüvel [Fri, 21 Jun 2019 10:34:52 +0000 (12:34 +0200)]
Configured uwsgi log rotation

We shouldn't configure Python to log to a file; its time-based log rotation
seems to cause data loss. Not sure why, but I'm configuring Blender ID to
log to console, so that uwsgi can pick it up and rotate it.

13 months agoFix T65573: Editing profile without avatar returns 500
Sybren A. Stüvel [Fri, 7 Jun 2019 07:45:40 +0000 (09:45 +0200)]
Fix T65573: Editing profile without avatar returns 500

13 months agoAvatar upload: use case-insensitive file extension comparison
Sybren A. Stüvel [Tue, 4 Jun 2019 10:08:16 +0000 (12:08 +0200)]
Avatar upload: use case-insensitive file extension comparison

13 months agoConfigure nginx client_max_body_size to allow larger avatar uploads
Sybren A. Stüvel [Tue, 4 Jun 2019 10:07:11 +0000 (12:07 +0200)]
Configure nginx client_max_body_size to allow larger avatar uploads

13 months agoInclude default user avatar in `bid_main/static`
Sybren A. Stüvel [Tue, 4 Jun 2019 09:56:51 +0000 (11:56 +0200)]
Include default user avatar in `bid_main/static`

This makes `manage.py collectstatic` find the file and place it into the
correct directory for serving by nginx.

13 months agoMerge branch 'production'
Sybren A. Stüvel [Tue, 4 Jun 2019 09:17:33 +0000 (11:17 +0200)]
Merge branch 'production'

13 months agoRemoved 'gulp livereload'
Sybren A. Stüvel [Fri, 31 May 2019 13:59:39 +0000 (15:59 +0200)]
Removed 'gulp livereload'

We're removing it from our webprojects because generally IDE plugins for
the same functionality work better.

13 months agoRe-locked Python dependencies
Sybren A. Stüvel [Fri, 31 May 2019 13:39:44 +0000 (15:39 +0200)]
Re-locked Python dependencies

13 months agoSelf-hosted avatars for users
Sybren A. Stüvel [Fri, 17 May 2019 15:47:08 +0000 (17:47 +0200)]
Self-hosted avatars for users

Users can upload images (up to 2 MB), which will be converted to JPEG,
cropped square, and resized to 160x160 pixels upon first use. Since the
first use is for showing their profile after they edited it, this is
pretty much immediately.

A request to /api/users/{user ID}/avatar either redirects to an image/jpeg of
the 160x160 pixel avatar, or it redirects to the default
image/png avatar. The URL is publicly reachable.

It is up to the caller to decide what to do with the redirect to the
default avatar (download & use the default image as the user's avatar,
or mark the user as "without avatar").

13 months agoCron job: turn down verbosity of thumbnail cleanups
Sybren A. Stüvel [Fri, 24 May 2019 11:59:42 +0000 (13:59 +0200)]
Cron job: turn down verbosity of thumbnail cleanups

13 months agoAllow redirecting to development installs of Blender Cloud
Sybren A. Stüvel [Thu, 23 May 2019 08:15:58 +0000 (10:15 +0200)]
Allow redirecting to development installs of Blender Cloud

The standard hostnames we use for local development have changed, and this
is now also reflected in the `NEXT_REDIR_AFTER_LOGIN_ALLOWED_HOSTS`
setting.

13 months agoBID API: more generic way to check the user ID in API views
Sybren A. Stüvel [Tue, 21 May 2019 11:33:26 +0000 (13:33 +0200)]
BID API: more generic way to check the user ID in API views

The same thing was done in a few different ways, so now there is one way
to check that the User ID on the URL matches the authentication token
used.

13 months agoRenamed bid_api.http to bid_api.http_responses
Sybren A. Stüvel [Thu, 23 May 2019 08:15:18 +0000 (10:15 +0200)]
Renamed bid_api.http to bid_api.http_responses

Some code somewhere was importing `http` and that turned out to all of a
sudden use `bid_api.http`. Bad Python, bad.

13 months agoFix for missing gulp.series statements
Francesco Siddi [Fri, 24 May 2019 11:15:04 +0000 (13:15 +0200)]
Fix for missing gulp.series statements

This is required for the migration from Gulp 3 to 4 and was missed in
commit 51d44005702c1fe51d358b43c0a35156c328bbc4.

13 months agoAdded cron job to deployment documentation
Sybren A. Stüvel [Fri, 24 May 2019 08:39:03 +0000 (10:39 +0200)]
Added cron job to deployment documentation

13 months agoDocker image: /manage.sh should run #!/bin/sh
Sybren A. Stüvel [Thu, 23 May 2019 15:44:53 +0000 (17:44 +0200)]
Docker image: /manage.sh should run #!/bin/sh

Bash is not installed in the Docker image.

13 months agoUpgrade from Gulp 3 to Gulp 4
Francesco Siddi [Thu, 23 May 2019 14:53:25 +0000 (16:53 +0200)]
Upgrade from Gulp 3 to Gulp 4

This fixes an error that prevented running ./gulp when using Node 12.
See https://github.com/gulpjs/gulp/issues/2324

13 months agoRemoved old ___deploy___.sh script in favour of docker/deploy.sh
Sybren A. Stüvel [Thu, 23 May 2019 12:43:31 +0000 (14:43 +0200)]
Removed old ___deploy___.sh script in favour of docker/deploy.sh

13 months agoAdded link to README in docs
Sybren A. Stüvel [Thu, 23 May 2019 12:40:03 +0000 (14:40 +0200)]
Added link to README in docs

13 months agoUpdated documentation for new deployment via Docker
Sybren A. Stüvel [Thu, 23 May 2019 12:37:37 +0000 (14:37 +0200)]
Updated documentation for new deployment via Docker

13 months agoRe-locked dependencies
Sybren A. Stüvel [Thu, 23 May 2019 08:20:29 +0000 (10:20 +0200)]
Re-locked dependencies

13 months agoAdd Dockerisation for moving to Sintel / id.blender.org
Sybren A. Stüvel [Wed, 15 May 2019 13:57:55 +0000 (15:57 +0200)]
Add Dockerisation for moving to Sintel / id.blender.org

This is based on the docker image of Blender Fund, but with some rather
major changes:

- Based on Alpine instead of Ubuntu. This literally cut the image size
  in half (~360 MB instead of ~720 MB).
- Run with nginx instead of Apache. This server is easier to set up,
  smaller, and faster.
- Removed Postfix from Docker image, in favour of using the mail server
  installed on the host.

nginx also use 503 error page for 502 errors. Where Apache used 503 on
connection errors to uwsgi, nginx uses 502. The HTML page is fine for
both errors.

13 months agoDon't use Google CDN for jQuery, use our self-hosted copy
Sybren A. Stüvel [Tue, 21 May 2019 08:59:24 +0000 (10:59 +0200)]
Don't use Google CDN for jQuery, use our self-hosted copy

13 months agoUpdate deploy script to run Poetry instead of Pipenv
Sybren A. Stüvel [Wed, 15 May 2019 14:13:35 +0000 (16:13 +0200)]
Update deploy script to run Poetry instead of Pipenv

13 months agoDjango: `{% load staticfiles %}` is deprecated in favour of `{% load static %}`
Sybren A. Stüvel [Tue, 14 May 2019 14:52:34 +0000 (16:52 +0200)]
Django: `{% load staticfiles %}` is deprecated in favour of `{% load static %}`

13 months agoPoetry: tightened the requirements a bit
Sybren A. Stüvel [Tue, 14 May 2019 14:52:14 +0000 (16:52 +0200)]
Poetry: tightened the requirements a bit

We don't want arbitrary upgrades to any new version, but a bit more
control. No actual updates were locked, because we are already on the
latest versions.

13 months agoUpgrade Pip to fix installation issue of bcrypt on FreeBSD.
Sybren A. Stüvel [Wed, 15 May 2019 08:09:46 +0000 (10:09 +0200)]
Upgrade Pip to fix installation issue of bcrypt on FreeBSD.

See https://github.com/sdispater/poetry/issues/1099

13 months agoUpdated recreate_venv.sh to use Poetry
Sybren A. Stüvel [Tue, 14 May 2019 14:36:12 +0000 (16:36 +0200)]
Updated recreate_venv.sh to use Poetry

- Use Poetry
- FreeBSD-compatible shebang

13 months agoMoved from pipenv to Poetry
Sybren A. Stüvel [Tue, 14 May 2019 14:29:18 +0000 (16:29 +0200)]
Moved from pipenv to Poetry

Pipenv was nice, but Poetry works much better, and we've already moved
Blender Cloud to it succesfully.

13 months agoAdd Django 2.2 to documentation (was still 1.11) last-before-poetry
Sybren A. Stüvel [Tue, 14 May 2019 14:28:36 +0000 (16:28 +0200)]
Add Django 2.2 to documentation (was still 1.11)

14 months agoUpgraded Django 2.1.8 → 2.2.1
Sybren A. Stüvel [Tue, 7 May 2019 14:23:33 +0000 (16:23 +0200)]
Upgraded Django 2.1.8 → 2.2.1

Apart from Python still being at 3.6, we're at all the latest versions
of our dependencies.

14 months agoUpgraded django-oauth-toolkit 1.1.3 → 1.2.0
Sybren A. Stüvel [Tue, 7 May 2019 14:10:30 +0000 (16:10 +0200)]
Upgraded django-oauth-toolkit 1.1.3 → 1.2.0

14 months agoUpgraded Django 2.0.13 → 2.1.8
Sybren A. Stüvel [Tue, 7 May 2019 13:56:11 +0000 (15:56 +0200)]
Upgraded Django 2.0.13 → 2.1.8

The password hasher needed to change a bit (bytes vs. string issue),
otherwise the upgrade was smooth.

14 months agoUpgraded Django 1.11.20 → 2.0.13
Sybren A. Stüvel [Tue, 7 May 2019 13:25:29 +0000 (15:25 +0200)]
Upgraded Django 1.11.20 → 2.0.13

All unit tests succeed. There was a new migration that popped up, just I
just added it to its own file.

A quick test showed that the link used in email-change-confirmation
mails was broken (bytes used instead of string), so I fixed that too.

`{% load staticfiles %}` was deprecated, and replaced by `{% load static %}`

14 months agoUpdated dependencies, most importantly Django to 1.11.20
Sybren A. Stüvel [Tue, 7 May 2019 12:51:33 +0000 (14:51 +0200)]
Updated dependencies, most importantly Django to 1.11.20

14 months agoSource ~/.profile to get the proper $PATH
Sybren A. Stüvel [Mon, 15 Apr 2019 12:40:50 +0000 (14:40 +0200)]
Source ~/.profile to get the proper $PATH

Without this, ~/.local/bin/pipenv won't be found.

14 months agoAllow blank 'privacy policy agreed' date on User
Sybren A. Stüvel [Mon, 15 Apr 2019 12:09:19 +0000 (14:09 +0200)]
Allow blank 'privacy policy agreed' date on User

This allows us to edit a user's info when they haven't agreed to the
privacy policy yet.

15 months agoProperly pass parameters to view class
Sybren A. Stüvel [Fri, 15 Mar 2019 09:57:54 +0000 (10:57 +0100)]
Properly pass parameters to view class

15 months agoFix initial password form
Sybren A. Stüvel [Fri, 15 Mar 2019 09:54:58 +0000 (10:54 +0100)]
Fix initial password form

The password form that people use to set their initial password (so as part
of the registration flow) was using the wrong template & form class.

15 months agoUI: Remove any usage of Font Awesome in templates
Francesco Siddi [Wed, 13 Mar 2019 15:52:37 +0000 (16:52 +0100)]
UI: Remove any usage of Font Awesome in templates

We removed the Font Awesome icons library a long time ago, but many
pages were still making use of the fa fa-icon markup.
This commit removes any markup related to Font Awesome.

17 months agoRemoved usage of deprecated password_reset_complete view
Sybren A. Stüvel [Tue, 29 Jan 2019 10:19:07 +0000 (11:19 +0100)]
Removed usage of deprecated password_reset_complete view

Just a tiny step towards Django 2.x

17 months agoIntroducing documentation
Francesco Siddi [Fri, 18 Jan 2019 10:28:09 +0000 (11:28 +0100)]
Introducing documentation

Instruction on how do build and deploy docs are included.

18 months agoUpdate Pipfile.lock
Francesco Siddi [Fri, 4 Jan 2019 14:23:47 +0000 (15:23 +0100)]
Update Pipfile.lock

18 months agoAdded missing migration
Sybren A. Stüvel [Fri, 4 Jan 2019 11:56:52 +0000 (12:56 +0100)]
Added missing migration

18 months agoAdmin: add nickname field to user creation form
Sybren A. Stüvel [Fri, 4 Jan 2019 11:54:56 +0000 (12:54 +0100)]
Admin: add nickname field to user creation form

Without being able to set the nickname we can't create users.

18 months agoFixed 'Find in Cloud' admin link
Sybren A. Stüvel [Wed, 2 Jan 2019 09:34:21 +0000 (10:34 +0100)]
Fixed 'Find in Cloud' admin link

18 months agoNPM/Gulp failure fix
Sybren A. Stüvel [Wed, 2 Jan 2019 09:41:57 +0000 (10:41 +0100)]
NPM/Gulp failure fix

Overnight Gulp broke. Running `gulp` gave this error:

internal/util/inspect.js:31
const types = internalBinding('types');
              ^

ReferenceError: internalBinding is not defined
    at internal/util/inspect.js:31:15
    at req_ (/home/sybren/workspace/blender-id/node_modules/natives/index.js:137:5)
    at require (/home/sybren/workspace/blender-id/node_modules/natives/index.js:110:12)
    at util.js:25:21
    at req_ (/home/sybren/workspace/blender-id/node_modules/natives/index.js:137:5)
    at require (/home/sybren/workspace/blender-id/node_modules/natives/index.js:110:12)
    at fs.js:42:21
    at req_ (/home/sybren/workspace/blender-id/node_modules/natives/index.js:137:5)
    at Object.req [as require] (/home/sybren/workspace/blender-id/node_modules/natives/index.js:54:10)
    at Object.<anonymous> (/home/sybren/workspace/blender-id/node_modules/graceful-fs/fs.js:1:99)

Upgrading 'natives' to 1.1.6 helps work around this. See
https://github.com/gulpjs/gulp/issues/2162#issuecomment-385197164 for more
information.

18 months agoBadger API: allow granting/revoking badges by numerical User ID
Sybren A. Stüvel [Tue, 18 Dec 2018 16:32:59 +0000 (17:32 +0100)]
Badger API: allow granting/revoking badges by numerical User ID

Next to matching on email address, users can now also be matched by
their user ID. This keeps the URL stable even when the user changes
their email address.

The URL is still the same, so
`/api/badger/{grant|revoke}/{badge}/{email-or-uid}`

19 months agoEnable Google Analytics only if tracking code is set
Francesco Siddi [Thu, 15 Nov 2018 18:08:04 +0000 (19:08 +0100)]
Enable Google Analytics only if tracking code is set

19 months agoUpdate Google Analytics code
Francesco Siddi [Thu, 15 Nov 2018 17:55:28 +0000 (18:55 +0100)]
Update Google Analytics code

19 months agoSolved more Django deprecation warnings
Sybren A. Stüvel [Tue, 13 Nov 2018 14:36:44 +0000 (15:36 +0100)]
Solved more Django deprecation warnings

19 months agoClarified unit test
Sybren A. Stüvel [Tue, 13 Nov 2018 14:32:29 +0000 (15:32 +0100)]
Clarified unit test

19 months agoReverted part of 7d07c1a, I removed a bit too much
Sybren A. Stüvel [Tue, 13 Nov 2018 14:30:32 +0000 (15:30 +0100)]
Reverted part of 7d07c1a, I removed a bit too much

19 months agoT57751: Streamline Login Flow
Sybren A. Stüvel [Tue, 13 Nov 2018 14:18:17 +0000 (15:18 +0100)]
T57751: Streamline Login Flow

A few improvements:

- No more side navigation menu when anonymous.
- Show name of OAuth Application you're logging in for on the login screen.

19 months agoFixed Django deprecation warning
Sybren A. Stüvel [Tue, 13 Nov 2018 14:17:13 +0000 (15:17 +0100)]
Fixed Django deprecation warning

19 months agoSolved Django deprecation warnings
Sybren A. Stüvel [Tue, 13 Nov 2018 13:47:10 +0000 (14:47 +0100)]
Solved Django deprecation warnings

The previous way of using URL namespaces is deprecated, and will be removed
in Django 2.0

20 months agoAdded 'Find in Blender Fund' link to user admin
Sybren A. Stüvel [Tue, 23 Oct 2018 14:22:30 +0000 (16:22 +0200)]
Added 'Find in Blender Fund' link to user admin

20 months agoRemoved unused (and incorrect) variable
Sybren A. Stüvel [Tue, 23 Oct 2018 14:22:02 +0000 (16:22 +0200)]
Removed unused (and incorrect) variable

20 months agoAllow users to make their badges private
Sybren A. Stüvel [Tue, 16 Oct 2018 15:45:09 +0000 (17:45 +0200)]
Allow users to make their badges private

20 months agoMore modern get_context_data() dict construction
Sybren A. Stüvel [Tue, 16 Oct 2018 15:43:41 +0000 (17:43 +0200)]
More modern get_context_data() dict construction

20 months agoSpaces → Tabs
Sybren A. Stüvel [Tue, 16 Oct 2018 10:09:30 +0000 (12:09 +0200)]
Spaces → Tabs

20 months agoMoved RoleManager and Role up in the models.py file
Sybren A. Stüvel [Tue, 16 Oct 2018 09:12:03 +0000 (11:12 +0200)]
Moved RoleManager and Role up in the models.py file

This allows us to reference it from the User model without having to use
string references (better usage reports by IDE, easier to ctrl+click, etc.)

20 months agoUserBadgeView: always return JSON (so also for errors)
Sybren A. Stüvel [Tue, 16 Oct 2018 08:59:39 +0000 (10:59 +0200)]
UserBadgeView: always return JSON (so also for errors)

20 months agoTweak to login title, depending on context
Francesco Siddi [Tue, 16 Oct 2018 14:22:06 +0000 (16:22 +0200)]
Tweak to login title, depending on context

If the user was required to login by another page, display a more specific
message about logging in.

20 months agoUserBadgeView should use user.roles.badges() to get badges
Sybren A. Stüvel [Fri, 12 Oct 2018 13:06:11 +0000 (15:06 +0200)]
UserBadgeView should use user.roles.badges() to get badges

20 months agoFormatting
Sybren A. Stüvel [Wed, 10 Oct 2018 11:58:24 +0000 (13:58 +0200)]
Formatting

20 months agoAdmin speedup: AccesssToken now no longer has all refresh tokens in select box
Sybren A. Stüvel [Wed, 10 Oct 2018 11:58:21 +0000 (13:58 +0200)]
Admin speedup: AccesssToken now no longer has all refresh tokens in select box

20 months agoAdded tests for granting/revoking non-badge roles
Sybren A. Stüvel [Wed, 10 Oct 2018 11:42:53 +0000 (13:42 +0200)]
Added tests for granting/revoking non-badge roles

This should just work, as long as the granted/revoked role is in the list
of allowed-to-manage roles.

20 months agoRun `manage.py collectmedia` on deploy
Sybren A. Stüvel [Wed, 10 Oct 2018 11:37:37 +0000 (13:37 +0200)]
Run `manage.py collectmedia` on deploy

20 months agoUse ASCII arrow instead of Unicode one
Sybren A. Stüvel [Wed, 10 Oct 2018 11:37:29 +0000 (13:37 +0200)]
Use ASCII arrow instead of Unicode one

20 months agoFixed bug in RoleManager.badges()
Sybren A. Stüvel [Wed, 10 Oct 2018 11:04:14 +0000 (13:04 +0200)]
Fixed bug in RoleManager.badges()

20 months agoself.assertEquals → self.assertEqual
Sybren A. Stüvel [Wed, 10 Oct 2018 10:57:19 +0000 (12:57 +0200)]
self.assertEquals → self.assertEqual

20 months agoAdded default badges for devfund + CLI cmd to install fixture-media
Sybren A. Stüvel [Wed, 10 Oct 2018 10:50:57 +0000 (12:50 +0200)]
Added default badges for devfund + CLI cmd to install fixture-media

Run `manage.py collectmedia` to install all files from
`{fixture-dir}/media/xxx/yyy` into `{MEDIA_ROOT}/xxx/yyy`.

20 months agoAdd ipython as dev dependency
Sybren A. Stüvel [Wed, 10 Oct 2018 10:05:27 +0000 (12:05 +0200)]
Add ipython as dev dependency

20 months agoUI: Tweaks to badges presentation
Francesco Siddi [Wed, 10 Oct 2018 10:02:24 +0000 (12:02 +0200)]
UI: Tweaks to badges presentation

20 months agoUse correct permission value for chmod command
Francesco Siddi [Wed, 19 Sep 2018 17:26:50 +0000 (19:26 +0200)]
Use correct permission value for chmod command

20 months agoUse WEBHOOK_RETRY_COUNT instead of hardcoded value
Francesco Siddi [Wed, 19 Sep 2018 17:26:33 +0000 (19:26 +0200)]
Use WEBHOOK_RETRY_COUNT instead of hardcoded value

20 months agoFormatting
Sybren A. Stüvel [Wed, 10 Oct 2018 09:33:39 +0000 (11:33 +0200)]
Formatting