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 |