Revision 9024ed2e

b/snf-astakos-app/astakos/im/views/projects.py
114 114

  
115 115
    response = None
116 116
    with ExceptionHandler(request):
117
        response = _create_object(
118
            request,
119
            template_name='im/projects/projectapplication_form.html',
120
            extra_context=extra_context,
121
            post_save_redirect=reverse('project_list'),
122
            form_class=ProjectApplicationForm,
123
            msg=_("The %(verbose_name)s has been received and "
124
                  "is under consideration."))
117
        response = create_app_object(request, extra_context=extra_context)
125 118

  
126 119
    if response is not None:
127 120
        return response
......
131 124
    return redirect(next)
132 125

  
133 126

  
127
@commit_on_success_strict()
128
def create_app_object(request, extra_context=None):
129
    try:
130
        return _create_object(
131
            request,
132
            template_name='im/projects/projectapplication_form.html',
133
            extra_context=extra_context,
134
            post_save_redirect=reverse('project_list'),
135
            form_class=ProjectApplicationForm,
136
            msg=_("The %(verbose_name)s has been received and "
137
                  "is under consideration."))
138
    except (IOError, PermissionDenied) as e:
139
        messages.error(request, e)
140

  
141

  
134 142
@require_http_methods(["GET"])
135 143
@cookie_fix
136 144
@valid_astakos_user_required
......
234 242

  
235 243
    response = None
236 244
    with ExceptionHandler(request):
237
        response = _update_object(
238
            request,
239
            object_id=application_id,
240
            template_name='im/projects/projectapplication_form.html',
241
            extra_context=extra_context,
242
            post_save_redirect=reverse('project_list'),
243
            form_class=ProjectApplicationForm,
244
            msg=_("The %(verbose_name)s has been received and is under "
245
                  "consideration."))
245
        response = update_app_object(request, application_id,
246
                                     extra_context=extra_context)
246 247

  
247 248
    if response is not None:
248 249
        return response
......
252 253
    return redirect(next)
253 254

  
254 255

  
256
@commit_on_success_strict()
257
def update_app_object(request, object_id, extra_context=None):
258
    try:
259
        return _update_object(
260
            request,
261
            object_id=object_id,
262
            template_name='im/projects/projectapplication_form.html',
263
            extra_context=extra_context,
264
            post_save_redirect=reverse('project_list'),
265
            form_class=ProjectApplicationForm,
266
            msg=_("The %(verbose_name)s has been received and is under "
267
                  "consideration."))
268
    except (IOError, PermissionDenied) as e:
269
        messages.error(request, e)
270

  
271

  
255 272
@require_http_methods(["GET", "POST"])
256 273
@cookie_fix
257 274
@valid_astakos_user_required
b/snf-astakos-app/astakos/im/views/util.py
33 33

  
34 34
from django.contrib import messages
35 35
from django.contrib.auth.views import redirect_to_login
36
from django.core.exceptions import PermissionDenied
37 36
from django.core.xheaders import populate_xheaders
38 37
from django.http import HttpResponse
39 38
from django.shortcuts import redirect
......
86 85
    return response
87 86

  
88 87

  
89
@commit_on_success_strict()
90 88
def _create_object(request, model=None, template_name=None,
91 89
                   template_loader=template_loader, extra_context=None,
92 90
                   post_save_redirect=None, login_required=False,
......
95 93
    Based of django.views.generic.create_update.create_object which displays a
96 94
    summary page before creating the object.
97 95
    """
98
    response = None
99 96

  
100 97
    if extra_context is None:
101 98
        extra_context = {}
102 99
    if login_required and not request.user.is_authenticated():
103 100
        return redirect_to_login(request.path)
104
    try:
105

  
106
        model, form_class = get_model_and_form_class(model, form_class)
107
        extra_context['edit'] = 0
108
        if request.method == 'POST':
109
            form = form_class(request.POST, request.FILES)
110
            if form.is_valid():
111
                verify = request.GET.get('verify')
112
                edit = request.GET.get('edit')
113
                if verify == '1':
114
                    extra_context['show_form'] = False
115
                    extra_context['form_data'] = form.cleaned_data
116
                elif edit == '1':
117
                    extra_context['show_form'] = True
118
                else:
119
                    new_object = form.save()
120
                    if not msg:
121
                        msg = _(
122
                            "The %(verbose_name)s was created successfully.")
123
                    msg = msg % model._meta.__dict__
124
                    messages.success(request, msg, fail_silently=True)
125
                    response = redirect(post_save_redirect, new_object)
126
        else:
127
            form = form_class()
128
    except (IOError, PermissionDenied), e:
129
        messages.error(request, e)
130
        return None
101

  
102
    model, form_class = get_model_and_form_class(model, form_class)
103
    extra_context['edit'] = 0
104
    if request.method == 'POST':
105
        form = form_class(request.POST, request.FILES)
106
        if form.is_valid():
107
            verify = request.GET.get('verify')
108
            edit = request.GET.get('edit')
109
            if verify == '1':
110
                extra_context['show_form'] = False
111
                extra_context['form_data'] = form.cleaned_data
112
            elif edit == '1':
113
                extra_context['show_form'] = True
114
            else:
115
                new_object = form.save()
116
                if not msg:
117
                    msg = _(
118
                        "The %(verbose_name)s was created successfully.")
119
                msg = msg % model._meta.__dict__
120
                messages.success(request, msg, fail_silently=True)
121
                return redirect(post_save_redirect, new_object)
131 122
    else:
132
        if response is None:
133
            # Create the template, context, response
134
            if not template_name:
135
                template_name = "%s/%s_form.html" % \
136
                    (model._meta.app_label, model._meta.object_name.lower())
137
            t = template_loader.get_template(template_name)
138
            c = RequestContext(request, {
139
                'form': form
140
            }, context_processors)
141
            apply_extra_context(extra_context, c)
142
            response = HttpResponse(t.render(c))
143
        return response
144

  
145

  
146
@commit_on_success_strict()
123
        form = form_class()
124

  
125
    # Create the template, context, response
126
    if not template_name:
127
        template_name = "%s/%s_form.html" % \
128
            (model._meta.app_label, model._meta.object_name.lower())
129
    t = template_loader.get_template(template_name)
130
    c = RequestContext(request, {
131
        'form': form
132
    }, context_processors)
133
    apply_extra_context(extra_context, c)
134
    return HttpResponse(t.render(c))
135

  
136

  
147 137
def _update_object(request, model=None, object_id=None, slug=None,
148 138
                   slug_field='slug', template_name=None,
149 139
                   template_loader=template_loader, extra_context=None,
......
154 144
    Based of django.views.generic.create_update.update_object which displays a
155 145
    summary page before updating the object.
156 146
    """
157
    response = None
158 147

  
159 148
    if extra_context is None:
160 149
        extra_context = {}
161 150
    if login_required and not request.user.is_authenticated():
162 151
        return redirect_to_login(request.path)
163 152

  
164
    try:
165
        model, form_class = get_model_and_form_class(model, form_class)
166
        obj = lookup_object(model, object_id, slug, slug_field)
167

  
168
        if request.method == 'POST':
169
            form = form_class(request.POST, request.FILES, instance=obj)
170
            if form.is_valid():
171
                verify = request.GET.get('verify')
172
                edit = request.GET.get('edit')
173
                if verify == '1':
174
                    extra_context['show_form'] = False
175
                    extra_context['form_data'] = form.cleaned_data
176
                elif edit == '1':
177
                    extra_context['show_form'] = True
178
                else:
179
                    obj = form.save()
180
                    if not msg:
181
                        msg = _(
182
                            "The %(verbose_name)s was created successfully.")
183
                    msg = msg % model._meta.__dict__
184
                    messages.success(request, msg, fail_silently=True)
185
                    response = redirect(post_save_redirect, obj)
186
        else:
187
            form = form_class(instance=obj)
188
    except (IOError, PermissionDenied), e:
189
        messages.error(request, e)
190
        return None
153
    model, form_class = get_model_and_form_class(model, form_class)
154
    obj = lookup_object(model, object_id, slug, slug_field)
155

  
156
    if request.method == 'POST':
157
        form = form_class(request.POST, request.FILES, instance=obj)
158
        if form.is_valid():
159
            verify = request.GET.get('verify')
160
            edit = request.GET.get('edit')
161
            if verify == '1':
162
                extra_context['show_form'] = False
163
                extra_context['form_data'] = form.cleaned_data
164
            elif edit == '1':
165
                extra_context['show_form'] = True
166
            else:
167
                obj = form.save()
168
                if not msg:
169
                    msg = _(
170
                        "The %(verbose_name)s was created successfully.")
171
                msg = msg % model._meta.__dict__
172
                messages.success(request, msg, fail_silently=True)
173
                return redirect(post_save_redirect, obj)
191 174
    else:
192
        if response is None:
193
            if not template_name:
194
                template_name = "%s/%s_form.html" % \
195
                    (model._meta.app_label, model._meta.object_name.lower())
196
            t = template_loader.get_template(template_name)
197
            c = RequestContext(request, {
198
                'form': form,
199
                template_object_name: obj,
200
            }, context_processors)
201
            apply_extra_context(extra_context, c)
202
            response = HttpResponse(t.render(c))
203
            populate_xheaders(request, response, model,
204
                              getattr(obj, obj._meta.pk.attname))
205
        return response
175
        form = form_class(instance=obj)
176

  
177
    if not template_name:
178
        template_name = "%s/%s_form.html" % \
179
            (model._meta.app_label, model._meta.object_name.lower())
180
    t = template_loader.get_template(template_name)
181
    c = RequestContext(request, {
182
        'form': form,
183
        template_object_name: obj,
184
    }, context_processors)
185
    apply_extra_context(extra_context, c)
186
    response = HttpResponse(t.render(c))
187
    populate_xheaders(request, response, model,
188
                      getattr(obj, obj._meta.pk.attname))
189
    return response
206 190

  
207 191

  
208 192
def _resources_catalog(for_project=False, for_usage=False):

Also available in: Unified diff