aboutsummaryrefslogtreecommitdiffstats
path: root/97suifangqa/apps/indicator/obsolete/views_forms.py
diff options
context:
space:
mode:
Diffstat (limited to '97suifangqa/apps/indicator/obsolete/views_forms.py')
-rw-r--r--97suifangqa/apps/indicator/obsolete/views_forms.py311
1 files changed, 311 insertions, 0 deletions
diff --git a/97suifangqa/apps/indicator/obsolete/views_forms.py b/97suifangqa/apps/indicator/obsolete/views_forms.py
new file mode 100644
index 0000000..89af21f
--- /dev/null
+++ b/97suifangqa/apps/indicator/obsolete/views_forms.py
@@ -0,0 +1,311 @@
+# -*- coding: utf-8 -*-
+
+"""
+views for used with forms.py
+
+splitted from 'views.py'
+"""
+
+from indicator.forms import *
+
+###########################################################
+###### forms ######
+
+## add_edit_category # {{{
+@login_required
+def add_edit_category(request, category_id=None, template='indicator/simple.html'):
+ """
+ add/edit category: 'models.IndicatorCategory'
+ for 'staff' or 'normal user'
+ """
+ # get or create model instance
+ if category_id:
+ category_id = int(category_id)
+ category = get_object_or_404(im.IndicatorCategory,
+ id=category_id)
+ action = 'Edit'
+ # check the user
+ # 'staff' can edit all data;
+ # normal users can only edit their own.
+ if category.addByUser != request.user and (
+ not request.user.is_staff):
+ return HttpResponseForbidden()
+ else:
+ category = im.IndicatorCategory(addByUser=request.user)
+ action = 'Add'
+
+ if request.method == 'POST':
+ form = IndicatorCategoryForm(request.POST, instance=category)
+ if form.is_valid():
+ # form posted and valid
+ # save form to create/update the model instance
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with data of the specified instance
+ form = IndicatorCategoryForm(instance=category)
+
+ return render(request, template, {
+ 'object': 'IndicatorCategory',
+ 'action': action,
+ 'form': form,
+ })
+# }}}
+
+
+# add_edit_indicator # {{{
+@login_required
+def add_edit_indicator(request, indicator_id=None, template='indicator/simple.html'):
+ """
+ add/edit indicator: 'models.Indicator'
+ for 'staff' or 'normal user'
+ """
+ if indicator_id:
+ indicator_id = int(indicator_id)
+ indicator = get_object_or_404(im.Indicator,
+ id=indicator_id)
+ action = 'Edit'
+ # check the user
+ # 'staff' can edit all data;
+ # normal users can only edit their own.
+ if indicator.addByUser != request.user and (
+ not request.user.is_staff):
+ return HttpResponseForbidden()
+ else:
+ indicator = im.Indicator(addByUser=request.user)
+ action = 'Add'
+
+ if request.method == 'POST':
+ form = IndicatorForm(request.POST, instance=indicator)
+ if form.is_valid():
+ # form posted and valid
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with instance
+ form = IndicatorForm(instance=indicator)
+
+ return render(request, template, {
+ 'object': 'Indicator',
+ 'action': action,
+ 'form': form,
+ })
+# }}}
+
+
+## add_edit_unit {{{
+@login_required
+def add_edit_unit(request, unit_id=None, template='indicator/simple.html'):
+ """
+ add unit for indicator
+ """
+ if unit_id:
+ unit_id = int(unit_id)
+ unit = get_object_or_404(im.Unit, id=unit_id)
+ action = 'Edit'
+ # check the user
+ # 'staff' can edit all data;
+ # normal users can only edit their own.
+ if unit.addByUser != request.user and (
+ not request.user.is_staff):
+ return HttpResponseForbidden()
+ else:
+ unit = im.Unit(addByUser=request.user)
+ action = 'Add'
+
+ if request.method == 'POST':
+ form = UnitForm(request.POST, instance=unit)
+ if form.is_valid():
+ # form posted and valid
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with instance
+ form = UnitForm(instance=unit)
+
+ return render(request, template, {
+ 'object': 'Unit',
+ 'action': action,
+ 'form': form,
+ })
+# }}}
+
+
+## add_edit_confine {{{
+@login_required
+def add_edit_confine(request, confine_id=None, template='indicator/simple.html'):
+ """
+ InnateConfine
+ add confines for indicator
+ """
+ if confine_id:
+ confine_id = int(confine_id)
+ confine = get_object_or_404(im.InnateConfine, id=confine_id)
+ action = 'Edit'
+ # check the user
+ # 'staff' can edit all data;
+ # normal users can only edit their own.
+ if confine.addByUser != request.user and (
+ not request.user.is_staff):
+ return HttpResponseForbidden()
+ else:
+ confine = im.InnateConfine(addByUser=request.user)
+ action = 'Add'
+
+ if request.method == 'POST':
+ form = InnateConfineForm(request.POST, instance=confine)
+ if form.is_valid():
+ # form posted and valid
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with instance
+ form = InnateConfineForm(instance=confine)
+
+ return render(request, template, {
+ 'object': 'InnateConfine',
+ 'action': action,
+ 'form': form,
+ })
+# }}}
+
+
+## add_edit_record {{{
+@login_required
+def add_edit_record(request, record_id=None, template='indicator/simple.html'):
+ """
+ add/edit 'IndicatorRecord'
+
+ staff 能自由地修改所有的记录,并且无需填写"修改原因";
+ 普通用户只能修改自己的记录,而且必须填写"修改原因" -> RecordHistory
+
+ TODO:
+ * 当用户选择好"indicator"后,重新筛选"unit",只提供与"indicator"
+ 对应的"unit"供选择;
+ * 对"普通用户"增加限制,修改数据"记录"时必须同时提交"修改原因",
+ 对应模型"RecordHistory"。
+ """
+ if record_id:
+ record_id = int(record_id)
+ record = get_object_or_404(im.IndicatorRecord, id=record_id)
+ action = 'Edit'
+ # check the user
+ if request.user.is_staff:
+ # 'staff' can edit all data;
+ pass
+ elif request.user == record.user:
+ # user modify the record
+ return HttpResponse("Not finished yet ...")
+ #return modify_record(request, record_id)
+ else:
+ return HttpResponseForbidden()
+ else:
+ record = im.IndicatorRecord(user=request.user)
+ action = 'Add'
+
+ if request.method == 'POST':
+ form = IndicatorRecordForm(request.POST, instance=record)
+ if form.is_valid():
+ #raise ValueError
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with instance
+ form = IndicatorRecordForm(instance=record)
+
+ return render(request, template, {
+ 'object': 'IndicatorRecord',
+ 'action': action,
+ 'form': form,
+ })
+# }}}
+
+
+## modify_record {{{
+@login_required
+def modify_record(request, record_id=None, template='indicator/simple.html'):
+ """
+ modify an existing IndicatorRecord
+
+ TODO:
+ a new 'RecordHistory' is added to record the modification reason
+ and backup the original data
+ """
+ if record_id:
+ record_id = int(record_id)
+ record = get_object_or_404(im.IndicatorRecord, id=record_id)
+ action = 'Edit'
+ # check the user
+ if request.user.is_staff:
+ # 'staff' can edit all data;
+ return add_edit_record(request, record_id)
+ elif request.user == record.user:
+ # user modify the record
+ action = 'Modify'
+ pass
+ else:
+ return HttpResponseForbidden()
+ else:
+ return add_edit_record(request)
+
+ if request.method == 'POST':
+ form = IndicatorRecordForm(request.POST, instance=record)
+ if form.is_valid():
+ # form posted and valid
+ # TODO
+ raise ValueError(u"该功能尚未完整实现")
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with instance
+ form = IndicatorRecordForm(instance=record)
+
+ return render(request, template, {
+ 'object': 'IndicatorRecord',
+ 'action': action,
+ 'form': form,
+ })
+## }}}
+
+
+## add_recordhistory_view {{{
+@login_required
+def add_recordhistory_view(request, record_id, template='indicator/simple.html'):
+ """
+ add 'RecordHistory' for a record by given
+
+ 'staff' should use the 'admin' interface.
+ """
+ record_id = int(record_id)
+ record = get_object_or_404(im.IndicatorRecord, id=record_id)
+ recordhistory = im.RecordHistory(indicatorRecord=record)
+ action = 'Add'
+ # check the user
+ if request.user != record.user:
+ return HttpResponseForbidden()
+
+ if request.method == 'POST':
+ form = RecordHistoryForm(request.POST, instance=recordhistory)
+ if form.is_valid():
+ # form posted and valid
+ form.save()
+ # redirect url, avoid page reload/refresh
+ return HttpResponseRedirect('/indicator/done/')
+ else:
+ # form with instance
+ form = RecordHistoryForm(instance=recordhistory)
+
+ return render(request, template, {
+ 'object': 'RecordHistory',
+ 'action': action,
+ 'form': form,
+ })
+# }}}
+
+