Revision 15ca2bea

b/snf-astakos-app/astakos/im/forms.py
806 806

  
807 807
        return policies
808 808

  
809

  
810 809
    def save(self, commit=True):
811
        application = super(ProjectApplicationForm, self).save(commit=False)
812
        data = dict(self.fields)
810
        data = dict(self.cleaned_data)
813 811
        data['precursor_application'] = self.instance.id
814 812
        data['applicant'] = self.user
815 813
        data['owner'] = self.user
816
        data['comments'] = self.cleaned_data.pop('comments', None)
817 814
        data['resource_policies'] = self.resource_policies
818 815
        submit_application(**data)
819 816

  
820

  
821

  
822 817
class ProjectSortForm(forms.Form):
823 818
    sorting = forms.ChoiceField(
824 819
        label='Sort by',
b/snf-astakos-app/astakos/im/functions.py
67 67
from astakos.im.models import (
68 68
    AstakosUser, ProjectMembership, ProjectApplication, Project,
69 69
    trigger_sync)
70
from astakos.im.models import submit_application as models_submit_application
70 71

  
71 72
import astakos.im.messages as astakos_messages
72 73

  
......
646 647
    return membership
647 648

  
648 649
def submit_application(**kw):
649
    precursor_id = kw.pop('precursor_application', None)
650

  
651
    precursor_id = kw.get('precursor_application', None)
650 652
    if precursor_id is not None:
651
        app = ProjectApplication.objects.get(id=precursor_id)
652
        app.id = None
653
        app.precursor_application_id = precursor_id
654
    else:
655
        app = ProjectApplication()
653
        sfu = ProjectApplication.objects.select_for_update()
654
        precursor = sfu.get(id=precursor_id)
655
        kw['precursor_application'] = precursor
656 656

  
657
    app.state = app.PENDING
658
    app.issue_date = datetime.now()
659

  
660
    resource_policies = kw.pop('resource_policies', None)
661
    for k, v in kw.iteritems():
662
        setattr(app, k, v)
663
    app.save()
664
    app.resource_policies = resource_policies
657
    application = models_submit_application(**kw)
665 658

  
666 659
    try:
667 660
        notification = build_notification(
......
673 666
        notification.send()
674 667
    except NotificationError, e:
675 668
        logger.error(e)
676
    return app.id
669
    return application.id
677 670

  
678 671
def update_application(app_id, **kw):
679 672
    app = ProjectApplication.objects.get(id=app_id)
b/snf-astakos-app/astakos/im/models.py
1361 1361
        self.state = self.APPROVED
1362 1362
        self.save()
1363 1363

  
1364
def submit_application(**kw):
1365

  
1366
    resource_policies = kw.pop('resource_policies', None)
1367
    application = ProjectApplication(**kw)
1368

  
1369
    precursor = kw['precursor_application']
1370

  
1371
    if precursor is not None:
1372
        precursor.state = ProjectApplication.REPLACED
1373
        precursor.save()
1374

  
1375
    application.save()
1376
    application.resource_policies = resource_policies
1377
    return application
1364 1378

  
1365 1379
class ProjectResourceGrant(models.Model):
1366 1380

  

Also available in: Unified diff