Revision ea1e5d9f snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
1656 | 1656 |
|
1657 | 1657 |
def _get_project_for_update(self): |
1658 | 1658 |
try: |
1659 |
objects = Project.objects.select_for_update()
|
|
1660 |
project = objects.get(id=self.chain) |
|
1659 |
objects = Project.objects |
|
1660 |
project = objects.get_for_update(id=self.chain)
|
|
1661 | 1661 |
return project |
1662 | 1662 |
except Project.DoesNotExist: |
1663 | 1663 |
return None |
... | ... | |
2459 | 2459 |
pass |
2460 | 2460 |
|
2461 | 2461 |
def reset_serials(serials): |
2462 |
sfu = ProjectMembership.objects.select_for_update() |
|
2463 |
memberships = list(sfu.filter(pending_serial__in=serials)) |
|
2462 |
objs = ProjectMembership.objects |
|
2463 |
q = objs.filter(pending_serial__in=serials).select_for_update() |
|
2464 |
memberships = list(q) |
|
2464 | 2465 |
|
2465 | 2466 |
if memberships: |
2466 | 2467 |
for membership in memberships: |
... | ... | |
2473 | 2474 |
serials_to_ack = qh_query_serials([]) |
2474 | 2475 |
|
2475 | 2476 |
serials_to_ack = set(serials_to_ack) |
2476 |
sfu = ProjectMembership.objects.select_for_update() |
|
2477 |
memberships = list(sfu.filter(pending_serial__isnull=False)) |
|
2477 |
objs = ProjectMembership.objects |
|
2478 |
q = objs.filter(pending_serial__isnull=False).select_for_update() |
|
2479 |
memberships = list(q) |
|
2478 | 2480 |
|
2479 | 2481 |
if memberships: |
2480 | 2482 |
for membership in memberships: |
... | ... | |
2493 | 2495 |
ACCEPTED = ProjectMembership.ACCEPTED |
2494 | 2496 |
LEAVE_REQUESTED = ProjectMembership.LEAVE_REQUESTED |
2495 | 2497 |
PROJECT_DEACTIVATED = ProjectMembership.PROJECT_DEACTIVATED |
2496 |
psfu = Project.objects.select_for_update()
|
|
2498 |
objs = Project.objects
|
|
2497 | 2499 |
|
2498 |
modified = list(psfu.modified_projects())
|
|
2500 |
modified = list(objs.modified_projects().select_for_update())
|
|
2499 | 2501 |
if sync: |
2500 | 2502 |
for project in modified: |
2501 |
objects = project.projectmembership_set.select_for_update()
|
|
2503 |
objects = project.projectmembership_set |
|
2502 | 2504 |
|
2503 |
memberships = objects.actually_accepted() |
|
2505 |
memberships = objects.actually_accepted().select_for_update()
|
|
2504 | 2506 |
for membership in memberships: |
2505 | 2507 |
membership.is_pending = True |
2506 | 2508 |
membership.save() |
2507 | 2509 |
|
2508 |
reactivating = list(psfu.reactivating_projects())
|
|
2510 |
reactivating = list(objs.reactivating_projects().select_for_update())
|
|
2509 | 2511 |
if sync: |
2510 | 2512 |
for project in reactivating: |
2511 |
objects = project.projectmembership_set.select_for_update()
|
|
2513 |
objects = project.projectmembership_set |
|
2512 | 2514 |
|
2513 |
memberships = objects.filter(state=PROJECT_DEACTIVATED) |
|
2515 |
q = objects.filter(state=PROJECT_DEACTIVATED) |
|
2516 |
memberships = q.select_for_update() |
|
2514 | 2517 |
for membership in memberships: |
2515 | 2518 |
membership.is_pending = True |
2516 | 2519 |
if membership.leave_request_date is None: |
... | ... | |
2519 | 2522 |
membership.state = LEAVE_REQUESTED |
2520 | 2523 |
membership.save() |
2521 | 2524 |
|
2522 |
deactivating = list(psfu.deactivating_projects())
|
|
2525 |
deactivating = list(objs.deactivating_projects().select_for_update())
|
|
2523 | 2526 |
if sync: |
2524 | 2527 |
for project in deactivating: |
2525 |
objects = project.projectmembership_set.select_for_update()
|
|
2528 |
objects = project.projectmembership_set |
|
2526 | 2529 |
|
2527 | 2530 |
# Note: we keep a user-level deactivation |
2528 | 2531 |
# (e.g. USER_SUSPENDED) intact |
2529 |
memberships = objects.actually_accepted() |
|
2532 |
memberships = objects.actually_accepted().select_for_update()
|
|
2530 | 2533 |
for membership in memberships: |
2531 | 2534 |
membership.is_pending = True |
2532 | 2535 |
membership.state = PROJECT_DEACTIVATED |
2533 | 2536 |
membership.save() |
2534 | 2537 |
|
2538 |
# transaction.commit() |
|
2535 | 2539 |
return (modified, reactivating, deactivating) |
2536 | 2540 |
|
2537 | 2541 |
def set_sync_projects(exclude=None): |
2538 | 2542 |
|
2539 | 2543 |
ACTUALLY_ACCEPTED = ProjectMembership.ACTUALLY_ACCEPTED |
2540 |
objects = ProjectMembership.objects.select_for_update()
|
|
2544 |
objects = ProjectMembership.objects |
|
2541 | 2545 |
|
2542 | 2546 |
sub_quota, add_quota = [], [] |
2543 | 2547 |
|
2544 | 2548 |
serial = new_serial() |
2545 | 2549 |
|
2546 |
pending = objects.filter(is_pending=True) |
|
2550 |
pending = objects.filter(is_pending=True).select_for_update()
|
|
2547 | 2551 |
for membership in pending: |
2548 | 2552 |
|
2549 | 2553 |
if membership.pending_application: |
... | ... | |
2596 | 2600 |
def post_sync_projects(): |
2597 | 2601 |
PROJECT_DEACTIVATED = ProjectMembership.PROJECT_DEACTIVATED |
2598 | 2602 |
Q_ACTUALLY_ACCEPTED = ProjectMembership.Q_ACTUALLY_ACCEPTED |
2599 |
psfu = Project.objects.select_for_update()
|
|
2603 |
objs = Project.objects
|
|
2600 | 2604 |
|
2601 |
modified = psfu.modified_projects()
|
|
2605 |
modified = objs.modified_projects().select_for_update()
|
|
2602 | 2606 |
for project in modified: |
2603 |
objects = project.projectmembership_set.select_for_update() |
|
2604 |
|
|
2605 |
memberships = list(objects.filter(Q_ACTUALLY_ACCEPTED & |
|
2606 |
Q(is_pending=True))) |
|
2607 |
objects = project.projectmembership_set |
|
2608 |
q = objects.filter(Q_ACTUALLY_ACCEPTED & Q(is_pending=True)) |
|
2609 |
memberships = list(q.select_for_update()) |
|
2607 | 2610 |
if not memberships: |
2608 | 2611 |
project.is_modified = False |
2609 | 2612 |
project.save() |
2610 | 2613 |
|
2611 |
reactivating = psfu.reactivating_projects()
|
|
2614 |
reactivating = objs.reactivating_projects().select_for_update()
|
|
2612 | 2615 |
for project in reactivating: |
2613 |
objects = project.projectmembership_set.select_for_update()
|
|
2614 |
memberships = list(objects.filter(Q(state=PROJECT_DEACTIVATED) |
|
|
2615 |
Q(is_pending=True)))
|
|
2616 |
objects = project.projectmembership_set |
|
2617 |
q = objects.filter(Q(state=PROJECT_DEACTIVATED) | Q(is_pending=True))
|
|
2618 |
memberships = list(q.select_for_update())
|
|
2616 | 2619 |
if not memberships: |
2617 | 2620 |
project.reactivate() |
2618 | 2621 |
project.save() |
2619 | 2622 |
|
2620 |
deactivating = psfu.deactivating_projects()
|
|
2623 |
deactivating = objs.deactivating_projects().select_for_update()
|
|
2621 | 2624 |
for project in deactivating: |
2622 |
objects = project.projectmembership_set.select_for_update() |
|
2623 |
|
|
2624 |
memberships = list(objects.filter(Q_ACTUALLY_ACCEPTED | |
|
2625 |
Q(is_pending=True))) |
|
2625 |
objects = project.projectmembership_set |
|
2626 |
q = objects.filter(Q_ACTUALLY_ACCEPTED | Q(is_pending=True)) |
|
2627 |
memberships = list(q.select_for_update()) |
|
2626 | 2628 |
if not memberships: |
2627 | 2629 |
project.deactivate() |
2628 | 2630 |
project.save() |
Also available in: Unified diff