Revision 97896995

b/snf-astakos-app/astakos/im/models.py
69 69
    DEFAULT_USER_LEVEL, INVITATIONS_PER_LEVEL,
70 70
    AUTH_TOKEN_DURATION, BILLING_FIELDS,
71 71
    EMAILCHANGE_ACTIVATION_DAYS, LOGGING_LEVEL,
72
    GROUP_CREATION_SUBJECT
72
    GROUP_CREATION_SUBJECT, SITENAME
73 73
)
74 74
from astakos.im.endpoints.qh import (
75 75
    register_users, send_quota, register_resources
......
1212 1212
        if commit:
1213 1213
            application.save()
1214 1214
            application.definition.resource_policies = resource_policies
1215
            # better implementation ???
1216
            if precursor_application:
1217
                try:
1218
                    precursor = ProjectApplication.objects.get(id=precursor_application_id)
1219
                except:
1220
                    pass
1221
                precursor.state = REPLACED
1222
                precursor.save()
1223
                application.precursor_application_id = precursor
1224
                application.save()
1225 1215
        else:
1226 1216
            notification = build_notification(
1227 1217
                settings.SERVER_EMAIL,
......
1258 1248
            project.application = self
1259 1249
            project.last_approval_date = datetime.now()
1260 1250
            project.save()
1251
            self.precursor_application.state = REPLACED
1261 1252
        self.state = APPROVED
1262 1253
        self.save()
1263 1254

  
......
1380 1371
        m, created = ProjectMembership.objects.get_or_create(
1381 1372
            person=user, project=self
1382 1373
        )
1383
        m.accept(user, delete_on_failure=created, request_user=None)
1374
        m.accept(delete_on_failure=created, request_user=None)
1384 1375

  
1385 1376
    def reject_member(self, user, request_user=None):
1386 1377
        """
......
1502 1493
            project=self.project,
1503 1494
            request_date=self.request_date,
1504 1495
            rejection_date=datetime.now()
1505
        ).save()
1496
        )
1506 1497
        self.delete()
1498
        history_item.save()
1507 1499
        notification = build_notification(
1508 1500
            settings.SERVER_EMAIL,
1509 1501
            [self.person.email],
......
1553 1545
        self.project.membership_dirty = True
1554 1546
        self.project.save()
1555 1547
        
1556
        rejected = self.project.sync(specific_members=[self])
1548
        rejected = self.project.sync(specific_members=[self.person])
1557 1549
        if not rejected:
1558 1550
            # if syncing was successful unset membership_dirty flag
1559 1551
            self.membership_dirty = False
......
1716 1708

  
1717 1709

  
1718 1710
def check_auto_accept_join_membership_policy(sender, instance, created, **kwargs):
1711
    if not created:
1712
        return
1719 1713
    if created:
1720 1714
        join_policy = instance.project.application.definition.member_join_policy
1721 1715
        if join_policy == get_auto_accept_join():
b/snf-astakos-app/astakos/im/views.py
1694 1694
    def wrapper(request, id, user_id=None):
1695 1695
        rollback = False
1696 1696
        if not user_id:
1697
            user_id = user.id
1697
            user_id = request.user.id
1698 1698
        try:
1699 1699
            m = ProjectMembership.objects.select_related().get(
1700 1700
                project__application__id=id,
1701 1701
                person__id=user_id)
1702 1702
        except AstakosUser.DoesNotExist:
1703
            return HttpResponseBadRequest(_(astakos_messages.ACCOUNT_UNKNOWN))
1703
            msg = _(astakos_messages.ACCOUNT_UNKNOWN)
1704
            messages.error(request, msg)
1704 1705
        except ProjectMembership.DoesNotExist:
1705
            return HttpResponseBadRequest(_(astakos_messages.NOT_MEMBER))
1706
            msg = _(astakos_messages.NOT_MEMBER)
1707
            messages.error(request, msg)
1706 1708
        else:
1707 1709
            try:
1708 1710
                func(request, m)
......
1718 1720
    return wrapper
1719 1721

  
1720 1722

  
1721
@require_http_methods(["GET"])
1723
@require_http_methods(["GET", "POST"])
1722 1724
@signed_terms_required
1723 1725
@login_required
1724 1726
@handle_project_membership
......
1732 1734
@handle_project_membership
1733 1735
def project_approve_member(request, m):
1734 1736
    m.accept(request_user=request.user)
1735
    realname = membership.person.realname
1737
    realname = m.person.realname
1736 1738
    msg = _(astakos_messages.USER_JOINED_GROUP) % locals()
1737 1739
    messages.success(request, msg)
1738 1740

  
......
1754 1756
@handle_project_membership
1755 1757
def project_reject_member(request, m):
1756 1758
    m.remove(request_user=request.user)
1757
    realname = membership.person.realname
1759
    realname = m.person.realname
1758 1760
    msg = _(astakos_messages.USER_MEMBERSHIP_REJECTED) % locals()
1759 1761
    messages.success(request, msg)

Also available in: Unified diff