def timeline(request, from_date, to_date, context_id):
try:
from_date_date = datetime.datetime(*time.strptime(from_date, '%Y_%m_%d')[0:5]).date()
to_date_date = datetime.datetime(*time.strptime(to_date, '%Y_%m_%d')[0:5]).date()
except ValueError:
raise Http404
context_id = int(context_id)
if context_id:
context_agent = get_object_or_404(EconomicAgent, pk=context_id)
timeline_date = datetime.date.today().strftime("%b %e %Y 00:00:00 GMT-0600")
unassigned = Commitment.objects.unfinished().filter(
from_agent=None,
event_type__relationship="work").order_by("due_date")
return render_to_response("valueaccounting/timeline.html", {
"orderId": 0,
"context_id": context_id,
"useContextId": 0,
"from_date": from_date,
"to_date": to_date,
"timeline_date": timeline_date,
"unassigned": unassigned,
}, context_instance=RequestContext(request))
python类render_to_response()的实例源码
def order_timeline(request, order_id):
order = get_object_or_404(Order, pk=order_id)
first_process = order.first_process_in_order()
timeline_date = datetime.date.today().strftime("%b %e %Y 00:00:00 GMT-0600")
if first_process:
if first_process.start_date:
timeline_date = first_process.start_date.strftime("%b %e %Y 00:00:00 GMT-0600")
unassigned = Commitment.objects.unfinished().filter(
independent_demand=order,
from_agent=None,
event_type__relationship="work").order_by("due_date")
return render_to_response("valueaccounting/timeline.html", {
"orderId": order.id,
"context_id": 0,
"useContextId": 0,
"timeline_date": timeline_date,
"unassigned": unassigned,
}, context_instance=RequestContext(request))
def misc(request):
if not request.user.is_superuser:
return render_to_response('valueaccounting/no_permission.html')
context_agent = None
context_agents = EconomicAgent.objects.context_agents()
if context_agents:
context_agent = context_agents[0]
for ca in context_agents:
if ca.events.all().count() > context_agent.events.all().count():
context_agent = ca
ca_form = ContextAgentSelectionForm()
if request.method == "POST":
form = ContextAgentSelectionForm(data=request.POST)
if form.is_valid():
data = form.cleaned_data
agent = data["selected_agent"]
return HttpResponseRedirect('/%s/%s/'
% ('accounting/create-distribution', agent.id))
return render_to_response("valueaccounting/misc.html", {
"context_agent": context_agent,
"ca_form": ca_form,
}, context_instance=RequestContext(request))
def demand(request):
agent = get_agent(request)
orders = Order.objects.customer_orders()
rands = Order.objects.open_rand_orders()
help = get_help("demand")
nav_form = DemandExchangeNavForm(data=request.POST or None)
if agent:
if request.method == "POST":
#import pdb; pdb.set_trace()
if nav_form.is_valid():
data = nav_form.cleaned_data
ext = data["exchange_type"]
return HttpResponseRedirect('/%s/%s/%s/'
% ('accounting/exchange', ext.id, 0))
return render_to_response("valueaccounting/demand.html", {
"orders": orders,
"rands": rands,
"agent": agent,
"nav_form": nav_form,
"help": help,
}, context_instance=RequestContext(request))
def resource_type_lists(request):
agent = get_agent(request)
rt_lists = ResourceTypeList.objects.all()
rtl_form = ResourceTypeListForm(data=request.POST or None)
#help = get_help("demand")
if request.method == "POST":
if rtl_form.is_valid():
form_data = rtl_form.cleaned_data
rt_list = rtl_form.save()
rt_ids = form_data["resource_types"]
for rt_id in rt_ids:
rt = EconomicResourceType.objects.get(id=rt_id)
elem = ResourceTypeListElement(
resource_type_list=rt_list,
resource_type=rt)
elem.save()
return HttpResponseRedirect('/%s/'
% ('accounting/resource-type-lists'))
return render_to_response("valueaccounting/resource_type_lists.html", {
"rt_lists": rt_lists,
"rtl_form": rtl_form,
"agent": agent,
#"help": help,
}, context_instance=RequestContext(request))
def agent_stats(request, agent_id):
agent = get_object_or_404(EconomicAgent, id=agent_id)
scores = agent.resource_types.all()
agents = {}
contributions = EconomicEvent.objects.filter(is_contribution=True)
for c in contributions:
if c.from_agent not in agents:
agents[c.from_agent] = Decimal("0")
agents[c.from_agent] += c.quantity
member_hours = []
for key, value in agents.iteritems():
member_hours.append((key, value))
member_hours.sort(lambda x, y: cmp(y[1], x[1]))
return render_to_response("valueaccounting/agent_stats.html", {
"agent": agent,
"scores": scores,
"member_hours": member_hours,
}, context_instance=RequestContext(request))
def project_stats(request, context_agent_slug):
project = None
member_hours = []
#import pdb; pdb.set_trace()
if context_agent_slug:
project = get_object_or_404(EconomicAgent, slug=context_agent_slug)
if project:
subs = project.with_all_sub_agents()
ces = CachedEventSummary.objects.filter(
event_type__relationship="work",
context_agent__in=subs)
if ces.count():
agents = {}
for ce in ces:
agents.setdefault(ce.agent, Decimal("0"))
agents[ce.agent] += ce.quantity
for key, value in agents.items():
member_hours.append((key, value))
member_hours.sort(lambda x, y: cmp(y[1], x[1]))
return render_to_response("valueaccounting/project_stats.html", {
"member_hours": member_hours,
"page_title": "All-time project stats",
}, context_instance=RequestContext(request))
def change_event(request, event_id):
event = get_object_or_404(EconomicEvent, pk=event_id)
page = request.GET.get("page")
#import pdb; pdb.set_trace()
event_form = event.change_form(data=request.POST or None)
if request.method == "POST":
#import pdb; pdb.set_trace()
page = request.POST.get("page")
if event_form.is_valid():
event = event_form.save(commit=False)
event.changed_by = request.user
event.save()
agent = event.from_agent
if page:
return HttpResponseRedirect('/%s/%s/?page=%s'
% ('accounting/contributionhistory', agent.id, page))
else:
return HttpResponseRedirect('/%s/%s/'
% ('accounting/contributionhistory', agent.id))
return render_to_response("valueaccounting/change_event.html", {
"event_form": event_form,
"page": page,
}, context_instance=RequestContext(request))
def labnotes_reload(
request,
commitment_id,
was_running=0,
was_retrying=0):
ct = get_object_or_404(Commitment, id=commitment_id)
#import pdb; pdb.set_trace()
template_params = create_labnotes_context(
request,
ct,
was_running,
was_retrying,
)
return render_to_response("valueaccounting/workbook.html",
template_params,
context_instance=RequestContext(request))
def log_past_work(
request,
commitment_id):
ct = get_object_or_404(Commitment, id=commitment_id)
#import pdb; pdb.set_trace()
agent = get_agent(request)
if not request.user.is_superuser:
if agent != ct.from_agent:
return render_to_response('valueaccounting/no_permission.html')
template_params = create_past_work_context(
request,
ct,
)
event = template_params["event"]
if request.method == "POST":
return HttpResponseRedirect('/%s/%s/'
% ('accounting/labnote', ct.id))
return render_to_response("valueaccounting/log_past_work.html",
template_params,
context_instance=RequestContext(request))
def todo_history(request):
#import pdb; pdb.set_trace()
todo_list = Commitment.objects.finished_todos().order_by('-due_date',)
paginator = Paginator(todo_list, 25)
page = request.GET.get('page')
try:
todos = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
todos = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
todos = paginator.page(paginator.num_pages)
return render_to_response("valueaccounting/todo_history.html", {
"todos": todos,
}, context_instance=RequestContext(request))
def labnotes(request, process_id):
process = get_object_or_404(Process, id=process_id)
agent = get_agent(request)
work_commitments = process.work_requirements()
#import pdb; pdb.set_trace()
if work_commitments.count() == 1:
ct = work_commitments[0]
template_params = get_labnote_context(ct, agent)
return render_to_response("valueaccounting/labnote.html",
template_params,
context_instance=RequestContext(request))
else:
return render_to_response("valueaccounting/labnotes.html", {
"process": process,
"agent": agent,
}, context_instance=RequestContext(request))
def change_order(request, order_id):
order = get_object_or_404(Order, id=order_id)
#import pdb; pdb.set_trace()
order_form = OrderChangeForm(instance=order, data=request.POST or None)
if request.method == "POST":
next = request.POST.get("next")
if order_form.is_valid():
order = order_form.save()
if next == "demand":
return HttpResponseRedirect('/%s/'
% ('accounting/demand'))
if next == "closed_work_orders":
return HttpResponseRedirect('/%s/'
% ('accounting/closed-work-orders'))
else:
next = request.GET.get("next")
return render_to_response("valueaccounting/change_order.html", {
"order_form": order_form,
"order": order,
"next": next,
}, context_instance=RequestContext(request))
def comments(request):
comments = Comment.objects.all().order_by("-submit_date")
paginator = Paginator(comments, 25)
page = request.GET.get('page')
try:
comment_list = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer, deliver first page.
comment_list = paginator.page(1)
except EmptyPage:
# If page is out of range (e.g. 9999), deliver last page of results.
comment_list = paginator.page(paginator.num_pages)
return render_to_response("valueaccounting/comments.html", {
"comment_list": comment_list,
}, context_instance=RequestContext(request))
def bucket_filter_header(request):
#import pdb; pdb.set_trace()
header_form = FilterSetHeaderForm(data=request.POST or None)
if request.method == "POST":
if header_form.is_valid():
data = header_form.cleaned_data
agent = data["context"]
event_type = data["event_type"]
pattern = data["pattern"]
if pattern:
pattern_id = pattern.id
else:
pattern_id = 0
#import pdb; pdb.set_trace()
filter_set = data["filter_set"]
return HttpResponseRedirect('/%s/%s/%s/%s/%s/'
% ('accounting/bucket-filter', agent.id, event_type.id, pattern_id, filter_set))
return render_to_response("valueaccounting/bucket_filter_header.html", {
"header_form": header_form,
}, context_instance=RequestContext(request))
#@login_required
def copy_config(request):
tpl = 'admin/api/custom/copy_config.html'
servers = models.Server.objects.all()
if request.method == 'POST':
sfrom = int(request.POST['server_from'])
sto = int(request.POST['server_to'])
if sfrom == 0:
message = 'Server "from" hasn\'t been chosen.'
messages.error(request, message)
elif sto == 0:
message = 'Server "to" hasn\'t been chosen.'
messages.error(request, message)
elif sfrom == sto:
message = 'Server "from" and server "to" should be different.'
messages.error(request, message)
else:
count = 0
objs = models.Conf.objects.filter(server_id=sfrom)
for obj in objs:
dic = {
'server_id': sto,
'filename': obj.filename,
'type': models.Conf.SERVER,
'item': obj.item
}
if not models.Conf.objects.filter(**dic).exists():
dic['data'] = obj.data
conf = models.Conf(**dic)
conf.save()
count += 1
message = '{:d} configs have been copied.'.format(count)
messages.success(request, message)
return render_to_response(
tpl, locals(), context_instance=RequestContext(request))
def handler404(request):
response = render_to_response(
'404.html',
{},
context_instance=RequestContext(request)
)
response.status_code = 404
return response
def handler500(request):
response = render_to_response(
'500.html',
{},
context_instance=RequestContext(request)
)
response.status_code = 500
return response
def login_user(request):
logout(request)
username = password = ''
if request.POST:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
return HttpResponseRedirect(main)
return render_to_response('login.html', (request))
def main(request):
return render_to_response('main.html', (request))