Revision e1a80257 snf-astakos-app/astakos/im/views.py

b/snf-astakos-app/astakos/im/views.py
53 53
from django.template import RequestContext, loader as template_loader
54 54
from django.utils.http import urlencode
55 55
from django.utils.translation import ugettext as _
56
from django.views.generic.create_update import (delete_object,
57
                                                get_model_and_form_class)
56
from django.views.generic.create_update import (
57
    create_object, delete_object, get_model_and_form_class
58
)
58 59
from django.views.generic.list_detail import object_list
59 60
from django.core.xheaders import populate_xheaders
60 61
from django.core.exceptions import ValidationError, PermissionDenied
......
63 64
from django.db.models import Q
64 65

  
65 66
from astakos.im.activation_backends import get_backend, SimpleBackend
66
from astakos.im.models import (AstakosUser, ApprovalTerms, AstakosGroup,
67
                               EmailChange, GroupKind, Membership,
68
                               RESOURCE_SEPARATOR, AstakosUserAuthProvider)
67
from astakos.im.models import (
68
    AstakosUser, ApprovalTerms, AstakosGroup,
69
    EmailChange, GroupKind, Membership,
70
    RESOURCE_SEPARATOR, AstakosUserAuthProvider,
71
    ProjectApplication
72
)
69 73
from astakos.im.util import get_context, prepare_response, get_query, restrict_next
70
from astakos.im.forms import (LoginForm, InvitationForm, ProfileForm,
71
                              FeedbackForm, SignApprovalTermsForm,
72
                              EmailChangeForm,
73
                              AstakosGroupCreationForm, AstakosGroupSearchForm,
74
                              AstakosGroupUpdateForm, AddGroupMembersForm,
75
                              MembersSortForm, AstakosGroupSortForm,
76
                              TimelineForm, PickResourceForm,
77
                              AstakosGroupCreationSummaryForm)
74
from astakos.im.forms import (
75
    LoginForm, InvitationForm, ProfileForm,
76
    FeedbackForm, SignApprovalTermsForm,
77
    EmailChangeForm,
78
    AstakosGroupCreationForm, AstakosGroupSearchForm,
79
    AstakosGroupUpdateForm, AddGroupMembersForm,
80
    MembersSortForm, AstakosGroupSortForm,
81
    TimelineForm, PickResourceForm,
82
    AstakosGroupCreationSummaryForm,
83
    ProjectApplicationForm
84
)
78 85
from astakos.im.functions import (send_feedback, SendMailError,
79 86
                                  logout as auth_logout,
80 87
                                  activate as activate_func,
81 88
                                  send_activation as send_activation_func,
82
                                  send_group_creation_notification,
89
#                                   send_group_creation_notification,
83 90
                                  SendNotificationError)
84 91
from astakos.im.endpoints.qh import timeline_charge
85 92
from astakos.im.settings import (COOKIE_DOMAIN, LOGOUT_NEXT,
86 93
                                 LOGGING_LEVEL, PAGINATE_BY, RESOURCES_PRESENTATION_DATA, PAGINATE_BY_ALL)
87 94
#from astakos.im.tasks import request_billing
88 95
from astakos.im.api.callpoint import AstakosCallpoint
96
# from .generic_views import create_object
89 97

  
90 98
import astakos.im.messages as astakos_messages
91 99
from astakos.im import settings
......
802 810
@signed_terms_required
803 811
@login_required
804 812
def group_add(request, kind_name='default'):
805

  
806 813
    result = callpoint.list_resources()
807 814
    resource_catalog = ResourcePresentation(RESOURCES_PRESENTATION_DATA)
808 815
    resource_catalog.update_from_result(result)
......
863 870
    return HttpResponse(t.render(c))
864 871

  
865 872

  
866
#@require_http_methods(["POST"])
873
#@require_hsttp_methods(["POST"])
867 874
@require_http_methods(["GET", "POST"])
868 875
@signed_terms_required
869 876
@login_required
877
@transaction.commit_manually
870 878
def group_add_complete(request):
871 879
    model = AstakosGroup
872 880
    form = AstakosGroupCreationSummaryForm(request.POST)
......
876 884
        result = callpoint.create_groups((d,)).next()
877 885
        if result.is_success:
878 886
            new_object = result.data[0]
879
            msg = _(astakos_messages.OBJECT_CREATED) %\
880
                {"verbose_name": model._meta.verbose_name}
881
            messages.success(request, msg, fail_silently=True)
882

  
883 887
            # send notification
884 888
            try:
885 889
                send_group_creation_notification(
......
892 896
                )
893 897
            except SendNotificationError, e:
894 898
                messages.error(request, e, fail_silently=True)
895
            post_save_redirect = '/im/group/%(id)s/'
896
            return HttpResponseRedirect(post_save_redirect % new_object)
899
                transaction.rollback()
900
            else:
901
                msg = _(astakos_messages.OBJECT_CREATED) %\
902
                    {"verbose_name": model._meta.verbose_name}
903
                message = _(astakos_messages.NOTIFICATION_SENT) % 'a project'
904
                messages.success(request, msg, fail_silently=True)
905
                transaction.commit()
897 906
        else:
898 907
            d = {"verbose_name": model._meta.verbose_name,
899 908
                 "reason":result.reason}
......
1389 1398
#    return data
1390 1399

  
1391 1400

  
1392
#@require_http_methods(["GET"])
1393
@require_http_methods(["POST", "GET"])
1394
@signed_terms_required
1395
@login_required
1396
def timeline(request):
1397
#    data = {'entity':request.user.email}
1398
    timeline_body = ()
1399
    timeline_header = ()
1400
#    form = TimelineForm(data)
1401
    form = TimelineForm()
1402
    if request.method == 'POST':
1403
        data = request.POST
1404
        form = TimelineForm(data)
1405
        if form.is_valid():
1406
            data = form.cleaned_data
1407
            timeline_header = ('entity', 'resource',
1408
                               'event name', 'event date',
1409
                               'incremental cost', 'total cost')
1410
            timeline_body = timeline_charge(
1411
                data['entity'], data['resource'],
1412
                data['start_date'], data['end_date'],
1413
                data['details'], data['operation'])
1414

  
1415
    return render_response(template='im/timeline.html',
1416
                           context_instance=get_context(request),
1417
                           form=form,
1418
                           timeline_header=timeline_header,
1419
                           timeline_body=timeline_body)
1420
    return data
1401
# #@require_http_methods(["GET"])
1402
# @require_http_methods(["POST", "GET"])
1403
# @signed_terms_required
1404
# @login_required
1405
# def timeline(request):
1406
# #    data = {'entity':request.user.email}
1407
#     timeline_body = ()
1408
#     timeline_header = ()
1409
# #    form = TimelineForm(data)
1410
#     form = TimelineForm()
1411
#     if request.method == 'POST':
1412
#         data = request.POST
1413
#         form = TimelineForm(data)
1414
#         if form.is_valid():
1415
#             data = form.cleaned_data
1416
#             timeline_header = ('entity', 'resource',
1417
#                                'event name', 'event date',
1418
#                                'incremental cost', 'total cost')
1419
#             timeline_body = timeline_charge(
1420
#                 data['entity'], data['resource'],
1421
#                 data['start_date'], data['end_date'],
1422
#                 data['details'], data['operation'])
1423
# 
1424
#     return render_response(template='im/timeline.html',
1425
#                            context_instance=get_context(request),
1426
#                            form=form,
1427
#                            timeline_header=timeline_header,
1428
#                            timeline_body=timeline_body)
1429
#     return data
1421 1430

  
1422 1431

  
1423 1432
# TODO: action only on POST and user should confirm the removal
......
1441 1450
    return render_response(
1442 1451
        template='im/how_it_works.html',
1443 1452
        context_instance=get_context(request),)
1453

  
1454
@require_http_methods(["GET", "POST"])
1455
@signed_terms_required
1456
@login_required
1457
def project_add(request):
1458
    result = callpoint.list_resources()
1459
    resource_catalog = ResourcePresentation(RESOURCES_PRESENTATION_DATA)
1460
    resource_catalog.update_from_result(result)
1461

  
1462
    if not result.is_success:
1463
        messages.error(
1464
            request,
1465
            'Unable to retrieve system resources: %s' % result.reason
1466
    )
1467
    extra_context = {'resource_catalog':resource_catalog}
1468
    return create_object(request, template_name='im/projects/projectapplication_form.html',
1469
        extra_context=extra_context, post_save_redirect=request.path,
1470
        form_class=ProjectApplicationForm)
1471

  
1472
@require_http_methods(["GET"])
1473
@signed_terms_required
1474
@login_required
1475
def project_application_list(request):
1476
    queryset = ProjectApplication.objects.all()
1477
    return object_list(
1478
        request,
1479
        queryset,
1480
        paginate_by=PAGINATE_BY_ALL,
1481
        page=request.GET.get('page') or 1,
1482
        template_name='im/projects/projectapplication_list.html')
1483

  
1484

  
1485
@require_http_methods(["GET"])
1486
@signed_terms_required
1487
@login_required
1488
def project_list(request):
1489
    pass
1490

  
1491
@require_http_methods(["GET", "POST"])
1492
@signed_terms_required
1493
@login_required
1494
def project_detail(request, serial):
1495
    pass
1496

  
1497
@require_http_methods(["GET", "POST"])
1498
@signed_terms_required
1499
@login_required
1500
def project_search(request):
1501
    pass
1502

  
1503
@require_http_methods(["GET"])
1504
@signed_terms_required
1505
@login_required
1506
def project_all(request):
1507
    pass
1508

  
1509
@require_http_methods(["GET", "POST"])
1510
@signed_terms_required
1511
@login_required
1512
def project_join(request, serial):
1513
    pass
1514

  
1515
@require_http_methods(["GET", "POST"])
1516
@signed_terms_required
1517
@login_required
1518
def project_leave(request, serial):
1519
    pass
1520

  
1521
@require_http_methods(["POST"])
1522
@signed_terms_required
1523
@login_required
1524
def project_approve_member(request, serial, user_id):
1525
    pass
1526

  
1527
@require_http_methods(["POST"])
1528
@signed_terms_required
1529
@login_required
1530
def project_remove_member(request, serial, user_id):
1531
    pass
1444 1532
    

Also available in: Unified diff