mirror of
https://github.com/GSA/notifications-api.git
synced 2026-02-01 07:35:34 -05:00
Make it easy to develop with broadcast services
Previously I had to handcraft some SQL to give myself access to a broadcast service I created locally. I've done this enough times that I think it's worth automating.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
import csv
|
import csv
|
||||||
import functools
|
import functools
|
||||||
import itertools
|
import itertools
|
||||||
|
import os
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
@@ -43,6 +44,7 @@ from app.dao.organisation_dao import (
|
|||||||
dao_add_service_to_organisation,
|
dao_add_service_to_organisation,
|
||||||
dao_get_organisation_by_email_address,
|
dao_get_organisation_by_email_address,
|
||||||
)
|
)
|
||||||
|
from app.dao.permissions_dao import permission_dao
|
||||||
from app.dao.provider_rates_dao import (
|
from app.dao.provider_rates_dao import (
|
||||||
create_provider_rates as dao_create_provider_rates,
|
create_provider_rates as dao_create_provider_rates,
|
||||||
)
|
)
|
||||||
@@ -75,6 +77,7 @@ from app.models import (
|
|||||||
LetterBranding,
|
LetterBranding,
|
||||||
Notification,
|
Notification,
|
||||||
Organisation,
|
Organisation,
|
||||||
|
Permission,
|
||||||
Service,
|
Service,
|
||||||
User,
|
User,
|
||||||
)
|
)
|
||||||
@@ -914,3 +917,32 @@ def populate_annual_billing_with_defaults(year, missing_services_only):
|
|||||||
|
|
||||||
for service in active_services:
|
for service in active_services:
|
||||||
set_default_free_allowance_for_service(service, year)
|
set_default_free_allowance_for_service(service, year)
|
||||||
|
|
||||||
|
|
||||||
|
@click.option('-u', '--user-id', required=True)
|
||||||
|
@notify_command(name='local-dev-broadcast-permissions')
|
||||||
|
def local_dev_broadcast_permissions(user_id):
|
||||||
|
if os.getenv('NOTIFY_ENVIRONMENT', '') not in ['development', 'test']:
|
||||||
|
current_app.logger.error('Can only be run in development')
|
||||||
|
return
|
||||||
|
|
||||||
|
user = User.query.filter_by(id=user_id).one()
|
||||||
|
|
||||||
|
user_broadcast_services = Service.query.filter(
|
||||||
|
Service.permissions.any(permission='broadcast'),
|
||||||
|
Service.users.any(id=user_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
for service in user_broadcast_services:
|
||||||
|
permission_list = [
|
||||||
|
Permission(service_id=service.id, user_id=user_id, permission=permission)
|
||||||
|
for permission in [
|
||||||
|
'reject_broadcasts', 'cancel_broadcasts', # required to create / approve
|
||||||
|
'create_broadcasts', 'approve_broadcasts', # minimum for testing
|
||||||
|
'manage_templates', # unlikely but might be useful
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
permission_dao.set_user_service_permission(
|
||||||
|
user, service, permission_list, _commit=True, replace=True
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user