Revision 7dd3047d

b/snf-astakos-app/astakos/im/functions.py
431 431
    except AstakosUser.DoesNotExist:
432 432
        raise IOError(_(astakos_messages.UNKNOWN_USER_ID) % user_id)
433 433

  
434
def create_membership(project_application_id, user_id):
434
def create_membership(project, user):
435
    if isinstance(project, int):
436
        project = get_project_by_application_id(project)
437
    if isinstance(user, int):
438
        user = get_user_by_id(user)
439
    m = ProjectMembership(
440
        project=project,
441
        person=user,
442
        request_date=datetime.now())
435 443
    try:
436
        project = get_project_by_application_id(project_application_id)
437
        m = ProjectMembership(
438
            project=project,
439
            person=user_id,
440
            request_date=datetime.now())
444
        m.save()
441 445
    except IntegrityError, e:
442 446
        raise IOError(_(astakos_messages.MEMBERSHIP_REQUEST_EXISTS))
443 447
    else:
444
        m.save()
445 448
        return m
446 449

  
447 450
def get_membership(project, user):
......
546 549
        logger.error(e.message)
547 550
    return membership
548 551

  
552
def enroll_member(project, user, request_user=None):
553
    membership = create_membership(project, user)
554
    accept_membership(project, user, request_user)
555
    
549 556
def leave_project(project_application_id, user_id):
550 557
    """
551 558
        Raises:
b/snf-astakos-app/astakos/im/templates/im/projects/project_detail.html
187 187
                        {% else %}
188 188
                        <td>Pending
189 189
                            {% if user == object.owner %}
190
                                <a href="{% url project_approve_member object.id m.person.id %}?{% if page %}page={{ page }}{% endif %}{% if sorting %}&sorting={{sorting}}{% endif %}">Accept</a>
190
                                <a href="{% url project_accept_member object.id m.person.id %}?{% if page %}page={{ page }}{% endif %}{% if sorting %}&sorting={{sorting}}{% endif %}">Accept</a>
191 191
                                <a href="{% url project_reject_member object.id m.person.id  %}?{% if page %}page={{ page }}{% endif %}{% if sorting %}&sorting={{sorting}}{% endif %}">Reject</a>
192 192
                            {% endif %}
193 193
                        </td>    
b/snf-astakos-app/astakos/im/urls.py
76 76
    url(r'^project/(?P<application_id>\w+)/?$', 'project_detail', {}, name='project_detail'),
77 77
    url(r'^project/(?P<application_id>\w+)/join/?$', 'project_join', {}, name='project_join'),
78 78
    url(r'^project/(?P<application_id>\w+)/leave/?$', 'project_leave', {}, name='project_leave'),
79
    url(r'^project/(?P<application_id>\w+)/(?P<user_id>\d+)/approve/?$', 'project_approve_member', {}, name='project_approve_member'),
79
    url(r'^project/(?P<application_id>\w+)/(?P<user_id>\d+)/accept/?$', 'project_accept_member', {}, name='project_accept_member'),
80 80
    url(r'^project/(?P<application_id>\w+)/(?P<user_id>\d+)/reject/?$', 'project_reject_member', {}, name='project_reject_member'),
81 81
    url(r'^project/(?P<application_id>\w+)/(?P<user_id>\d+)/remove/?$', 'project_remove_member', {}, name='project_remove_member'),
82 82
    
b/snf-astakos-app/astakos/im/views.py
98 98
#     send_group_creation_notification,
99 99
    SendNotificationError,
100 100
    accept_membership, reject_membership, remove_membership,
101
    leave_project, join_project)
101
    leave_project, join_project, enroll_member)
102 102
# from astakos.im.endpoints.qh import timeline_charge
103 103
from astakos.im.settings import (
104 104
    COOKIE_DOMAIN, LOGOUT_NEXT,
......
1188 1188
@login_required
1189 1189
@transaction.commit_manually
1190 1190
def project_detail(request, application_id):
1191
    resource_catalog = None
1191 1192
    result = callpoint.list_resources()
1192 1193
    if not result.is_success:
1193 1194
        messages.error(
......
1196 1197
    )
1197 1198
    else:
1198 1199
        resource_catalog = result.data
1199
#     resource_catalog = ResourcePresentation(RESOURCES_PRESENTATION_DATA)
1200
#     resource_catalog.update_from_result(result)
1201 1200

  
1202 1201
    addmembers_form = AddProjectMembersForm()
1203 1202
    if request.method == 'POST':
......
1205 1204
        if addmembers_form.is_valid():
1206 1205
            try:
1207 1206
                rollback = False
1208
                map(lambda u: accept_membership(
1207
                application_id = int(application_id)
1208
                map(lambda u: enroll_member(
1209 1209
                        application_id,
1210 1210
                        u,
1211 1211
                        request_user=request.user),
......
1370 1370
@signed_terms_required
1371 1371
@login_required
1372 1372
@transaction.commit_manually
1373
def project_approve_member(request, application_id, user_id):
1373
def project_accept_member(request, application_id, user_id):
1374 1374
    rollback = False
1375 1375
    try:
1376 1376
        application_id = int(application_id)
......
1391 1391
            transaction.rollback()
1392 1392
        else:
1393 1393
            transaction.commit()
1394
    return project_detail(request, application_id)
1394
    return redirect(reverse('project_detail', args=(application_id,)))
1395 1395

  
1396 1396
@require_http_methods(["GET"])
1397 1397
@signed_terms_required
......
1418 1418
            transaction.rollback()
1419 1419
        else:
1420 1420
            transaction.commit()
1421
    return project_detail(request, application_id)
1421
    return redirect(reverse('project_detail', args=(application_id,)))
1422 1422

  
1423 1423
@require_http_methods(["GET"])
1424 1424
@signed_terms_required
......
1445 1445
            transaction.rollback()
1446 1446
        else:
1447 1447
            transaction.commit()
1448
    return project_detail(request, application_id)
1448
    return redirect(reverse('project_detail', args=(application_id,)))
1449 1449

  
1450 1450

  

Also available in: Unified diff