Commit b61d82af897250346b382d1e93602d821de7f6c3
1 parent
0daa3607
Exists in
signals_user_noosfero
Signal to create user into noosfero
Signed-off-by: Simiao Carvalho <simiaosimis@gmail.com> Signed-off-by: Luiz Oliveira <ziuloliveira@gmail.com>
Showing
2 changed files
with
31 additions
and
0 deletions
Show diff stats
src/colab-spb-plugin/src/colab_spb/apps.py
| @@ -2,6 +2,7 @@ from django.apps import AppConfig | @@ -2,6 +2,7 @@ from django.apps import AppConfig | ||
| 2 | from colab.signals.signals import connect_signal, register_signal | 2 | from colab.signals.signals import connect_signal, register_signal |
| 3 | from celery.utils.log import get_task_logger | 3 | from celery.utils.log import get_task_logger |
| 4 | from colab_spb.tasks import list_group_and_repository_creation | 4 | from colab_spb.tasks import list_group_and_repository_creation |
| 5 | +from colab_spb.tasks import create_noosfero_user | ||
| 5 | 6 | ||
| 6 | logger = get_task_logger(__name__) | 7 | logger = get_task_logger(__name__) |
| 7 | 8 | ||
| @@ -21,3 +22,5 @@ class SpbAppConfig(AppConfig): | @@ -21,3 +22,5 @@ class SpbAppConfig(AppConfig): | ||
| 21 | def connect_signal(self): | 22 | def connect_signal(self): |
| 22 | connect_signal('community_creation', 'noosfero', | 23 | connect_signal('community_creation', 'noosfero', |
| 23 | list_group_and_repository_creation) | 24 | list_group_and_repository_creation) |
| 25 | + connect_signal('create_noosfero_user', | ||
| 26 | + 'noosfero', create_noosfero_user) |
src/colab-spb-plugin/src/colab_spb/tasks.py
| @@ -143,6 +143,34 @@ def create_project(project_name, group_id): | @@ -143,6 +143,34 @@ def create_project(project_name, group_id): | ||
| 143 | 143 | ||
| 144 | 144 | ||
| 145 | @app.task(bind=True) | 145 | @app.task(bind=True) |
| 146 | +def create_noosfero_user(self, **kwargs): | ||
| 147 | + """ Create a Noosfero User """ | ||
| 148 | + app_config = settings.COLAB_APPS.get('colab_noosfero', {}) | ||
| 149 | + upstream = app_config.get('upstream', '').rstrip('/') | ||
| 150 | + username = kwargs['username'] | ||
| 151 | + email = kwargs['email'] | ||
| 152 | + password = kwargs['password'] | ||
| 153 | + | ||
| 154 | + users_endpoint = '{}/api/v1/register'.format(upstream) | ||
| 155 | + logger.info('Connected with ' + users_endpoint) | ||
| 156 | + params = { | ||
| 157 | + 'login': username, | ||
| 158 | + 'email': email, | ||
| 159 | + 'password': password, | ||
| 160 | + 'password_confirmation': password, | ||
| 161 | + } | ||
| 162 | + try: | ||
| 163 | + requests.post(users_endpoint, params=params) | ||
| 164 | + except Exception as excpt: | ||
| 165 | + error_msg = u'Error to create user "%s" into Noosfero. Reason: %s' | ||
| 166 | + reason = 'Request to API failed ({})'.format(excpt) | ||
| 167 | + logger.error(error_msg, username, reason) | ||
| 168 | + return | ||
| 169 | + logger.info('User created: {0}'.format(''.join(kwargs))) | ||
| 170 | + return 0 | ||
| 171 | + | ||
| 172 | + | ||
| 173 | +@app.task(bind=True) | ||
| 146 | def list_group_and_repository_creation(self, **kwargs): | 174 | def list_group_and_repository_creation(self, **kwargs): |
| 147 | logger.info('Community created: {0}'.format(''.join(kwargs))) | 175 | logger.info('Community created: {0}'.format(''.join(kwargs))) |
| 148 | 176 |