Revision 3e3743f2 snf-astakos-app/astakos/im/views.py

b/snf-astakos-app/astakos/im/views.py
1095 1095
@require_http_methods(["GET", "POST"])
1096 1096
@signed_terms_required
1097 1097
@login_required
1098
def project_update(request, application_id):
1098
def project_modify(request, application_id):
1099 1099
    resource_groups = RESOURCES_PRESENTATION_DATA.get('groups', {})
1100 1100
    resource_catalog = ()
1101 1101
    result = callpoint.list_resources()
......
1133 1133
@signed_terms_required
1134 1134
@login_required
1135 1135
@transaction.commit_on_success
1136
def project_app(request, application_id):
1137
    return common_detail(request, application_id, is_chain=False)
1138

  
1139
@require_http_methods(["GET", "POST"])
1140
@signed_terms_required
1141
@login_required
1142
@transaction.commit_on_success
1136 1143
def project_detail(request, chain_id):
1137
    addmembers_form = AddProjectMembersForm()
1138
    if request.method == 'POST':
1139
        addmembers_form = AddProjectMembersForm(
1140
            request.POST,
1141
            chain_id=int(chain_id),
1142
            request_user=request.user)
1143
        if addmembers_form.is_valid():
1144
            try:
1145
                rollback = False
1146
                chain_id = int(chain_id)
1147
                map(lambda u: enroll_member(
1148
                        chain_id,
1149
                        u,
1150
                        request_user=request.user),
1151
                    addmembers_form.valid_users)
1152
            except (IOError, PermissionDenied), e:
1153
                messages.error(request, e)
1154
            except BaseException, e:
1155
                rollback = True
1156
                messages.error(request, e)
1157
            finally:
1158
                if rollback == True:
1159
                    transaction.rollback()
1160
                else:
1161
                    transaction.commit()
1162
            addmembers_form = AddProjectMembersForm()
1144
    return common_detail(request, chain_id)
1145

  
1146
def addmembers(request, chain_id):
1147
    addmembers_form = AddProjectMembersForm(
1148
        request.POST,
1149
        chain_id=int(chain_id),
1150
        request_user=request.user)
1151
    if addmembers_form.is_valid():
1152
        try:
1153
            rollback = False
1154
            chain_id = int(chain_id)
1155
            map(lambda u: enroll_member(
1156
                    chain_id,
1157
                    u,
1158
                    request_user=request.user),
1159
                addmembers_form.valid_users)
1160
        except (IOError, PermissionDenied), e:
1161
            messages.error(request, e)
1162
        except BaseException, e:
1163
            rollback = True
1164
            messages.error(request, e)
1165
        finally:
1166
            if rollback == True:
1167
                transaction.rollback()
1168
            else:
1169
                transaction.commit()
1163 1170

  
1164
    rollback = False
1171
def common_detail(request, common_id, is_chain=True):
1172
    if is_chain:
1173
        if request.method == 'POST':
1174
            addmembers(request, common_id)
1165 1175

  
1166
    project, application = get_by_chain_or_404(chain_id)
1167
    if project:
1168
        members = project.projectmembership_set.select_related()
1169
    else:
1170
        members = ProjectMembership.objects.none()
1176
        addmembers_form = AddProjectMembersForm()
1177

  
1178
        project, application = get_by_chain_or_404(common_id)
1179
        if project:
1180
            members = project.projectmembership_set.select_related()
1181
            members_table = tables.ProjectMembersTable(project,
1182
                                                       members,
1183
                                                       user=request.user,
1184
                                                       prefix="members_")
1185
            RequestConfig(request, paginate={"per_page": PAGINATE_BY}
1186
                          ).configure(members_table)
1187

  
1188
        else:
1189
            members_table = None
1171 1190

  
1172
    members_table = tables.ProjectApplicationMembersTable(project,
1173
                                                          members,
1174
                                                          user=request.user,
1175
                                                          prefix="members_")
1176
    RequestConfig(request, paginate={"per_page": PAGINATE_BY}).configure(members_table)
1191
    else: # is application
1192
        application = get_object_or_404(ProjectApplication, pk=common_id)
1193
        members_table = None
1194
        addmembers_form = None
1177 1195

  
1178 1196
    modifications_table = None
1179 1197

  
1180
    following_applications = list(application.followers())
1198
    following_applications = list(application.pending_modifications())
1181 1199
    following_applications.reverse()
1182
    modifications_table = \
1200
    modifications_table = (
1183 1201
        tables.ProjectModificationApplicationsTable(following_applications,
1184 1202
                                                    user=request.user,
1185
                                                    prefix="modifications_")
1203
                                                    prefix="modifications_"))
1186 1204

  
1187 1205
    return object_detail(
1188 1206
        request,
......
1192 1210
        extra_context={
1193 1211
            'addmembers_form':addmembers_form,
1194 1212
            'members_table': members_table,
1195
            'user_owns_project': request.user.owns_project(project),
1213
            'user_owns_project': request.user.owns_application(application),
1196 1214
            'modifications_table': modifications_table,
1197 1215
            'member_status': application.user_status(request.user)
1198 1216
            })

Also available in: Unified diff