Revision b10ceccd snf-astakos-app/astakos/im/tables.py
b/snf-astakos-app/astakos/im/tables.py | ||
---|---|---|
182 | 182 |
user = table.user |
183 | 183 |
url, action, confirm, prompt = '', '', True, '' |
184 | 184 |
|
185 |
membership = user.get_membership(project)
|
|
185 |
membership = table.memberships.get(project.id)
|
|
186 | 186 |
if membership is not None: |
187 | 187 |
allowed = membership_allowed_actions(membership, user) |
188 | 188 |
if 'leave' in allowed: |
... | ... | |
198 | 198 |
confirm = True |
199 | 199 |
prompt = _('Are you sure you want to cancel the join request?') |
200 | 200 |
|
201 |
if can_join_request(project, user): |
|
201 |
if can_join_request(project, user, membership):
|
|
202 | 202 |
url = reverse('astakos.im.views.project_join', args=(project.id,)) |
203 | 203 |
action = _('Join') |
204 | 204 |
confirm = True |
... | ... | |
225 | 225 |
|
226 | 226 |
|
227 | 227 |
def project_name_append(project, column): |
228 |
if project.has_pending_modifications(): |
|
228 |
pending_apps = column.table.pending_apps |
|
229 |
app = pending_apps.get(project.id) |
|
230 |
if app and app.id != project.application_id: |
|
229 | 231 |
return mark_safe("<br /><i class='tiny'>%s</i>" % |
230 | 232 |
_('modifications pending')) |
231 | 233 |
return u'' |
... | ... | |
233 | 235 |
|
234 | 236 |
# Table classes |
235 | 237 |
class UserProjectsTable(UserTable): |
238 |
|
|
239 |
def __init__(self, *args, **kwargs): |
|
240 |
self.pending_apps = kwargs.pop('pending_apps') |
|
241 |
self.memberships = kwargs.pop('memberships') |
|
242 |
self.accepted = kwargs.pop('accepted') |
|
243 |
self.requested = kwargs.pop('requested') |
|
244 |
super(UserProjectsTable, self).__init__(*args, **kwargs) |
|
245 |
|
|
236 | 246 |
caption = _('My projects') |
237 | 247 |
|
238 | 248 |
name = LinkColumn('astakos.im.views.project_detail', |
... | ... | |
249 | 259 |
end_date = tables.DateColumn(verbose_name=_('Expiration'), |
250 | 260 |
format=DEFAULT_DATE_FORMAT, |
251 | 261 |
accessor='application.end_date') |
252 |
members_count = tables.Column(verbose_name=_("Members"), default=0, |
|
253 |
orderable=False) |
|
262 |
members_count_f = tables.Column(verbose_name=_("Members"), |
|
263 |
empty_values=(), |
|
264 |
orderable=False) |
|
254 | 265 |
membership_status = tables.Column(verbose_name=_("Status"), |
255 | 266 |
empty_values=(), |
256 | 267 |
orderable=False) |
... | ... | |
262 | 273 |
if self.user.owns_project(record) or self.user.is_project_admin(): |
263 | 274 |
return record.state_display() |
264 | 275 |
else: |
265 |
return self.user.membership_display(record) |
|
276 |
m = self.memberships.get(record.id) |
|
277 |
if m: |
|
278 |
return m.user_friendly_state_display() |
|
279 |
return _('Not a member') |
|
266 | 280 |
|
267 |
def render_members_count(self, record, *args, **kwargs): |
|
281 |
def render_members_count_f(self, record, *args, **kwargs):
|
|
268 | 282 |
append = "" |
269 | 283 |
project = record |
270 | 284 |
if project is None: |
271 | 285 |
append = mark_safe("<i class='tiny'>%s</i>" % (_('pending'),)) |
272 | 286 |
|
273 |
c = project.count_pending_memberships()
|
|
287 |
c = len(self.requested.get(project.id, []))
|
|
274 | 288 |
if c > 0: |
275 | 289 |
pending_members_url = reverse( |
276 | 290 |
'project_pending_members', |
... | ... | |
288 | 302 |
append = mark_safe(pending_members) |
289 | 303 |
members_url = reverse('project_approved_members', |
290 | 304 |
kwargs={'chain_id': record.id}) |
291 |
members_count = record.members_count()
|
|
305 |
members_count = len(self.accepted.get(project.id, []))
|
|
292 | 306 |
if self.user.owns_project(record) or self.user.is_project_admin(): |
293 | 307 |
members_count = '<a href="%s">%d</a>' % (members_url, |
294 | 308 |
members_count) |
... | ... | |
296 | 310 |
|
297 | 311 |
class Meta: |
298 | 312 |
sequence = ('name', 'membership_status', 'issue_date', 'end_date', |
299 |
'members_count', 'project_action') |
|
313 |
'members_count_f', 'project_action')
|
|
300 | 314 |
attrs = {'id': 'projects-list', 'class': 'my-projects alt-style'} |
301 | 315 |
template = "im/table_render.html" |
302 | 316 |
empty_text = _('No projects') |
Also available in: Unified diff