You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

377 lines
12 KiB

# -*- coding: utf-8 -*-
from django import forms
from django.forms import ModelForm
from todo.models import ProjectList, Item, ParentType
from django.contrib.auth.models import User
from django.conf import settings
def type_as_group(type):
program = []
for p in ParentType.objects.all():
subprogram = []
subtype = p.type_set.filter(type=type)
if subtype.count() != 0:
for s in subtype:
subprogram.append((s.id, s.name))
program.append((p.name, subprogram))
return program
# 项目任务
class ProjectListForm(ModelForm):
def __init__(self, *args, **kwargs):
super(ProjectListForm, self).__init__(*args, **kwargs)
class Meta:
model = ProjectList
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control'}),
'stat': forms.Select(attrs={'class': 'form-control'}),
'assigned_to': forms.SelectMultiple(attrs={'class': 'js-example-basic-multiple form-control', 'multiple':''}),
'created_by': forms.HiddenInput(),
}
exclude = ('created_date', )
# 计次任务
class BaseItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super(BaseItemForm, self).__init__(*args, **kwargs)
self.fields['type'].widget = forms.Select(attrs={'data-rel': 'chosen','class':'form-control'}, choices=type_as_group('count'))
self.fields['assigned_to'].queryset = User.objects.exclude(username__in=settings.EXCLUDE_USER)
due_date = forms.DateField(
required=False,
widget=forms.DateInput(attrs={'class': 'form-control','readonly': True}),
label=u'截止日期',
)
class Meta:
model = Item
widgets = {
'created_by': forms.HiddenInput(),
'title':
forms.widgets.TextInput(attrs={
'class': 'form-control',
}),
'count':
forms.widgets.NumberInput(attrs={
'class': 'form-control',
}),
'status':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'note':
forms.widgets.Textarea(attrs={
'class': 'form-control',
}),
'assigned_to':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'priority':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
}
exclude = ('is_delete', 'progress', 'lock', 'completed_date', 'project', 'length', 'tasktype')
# 计时任务
class ItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super(ItemForm, self).__init__(*args, **kwargs)
self.fields['type'].widget = forms.Select(choices=type_as_group('time'),attrs={'class': 'form-control',})
self.fields['assigned_to'].queryset = User.objects.exclude(username__in=settings.EXCLUDE_USER)
due_date = forms.DateField(
required=False,
widget=forms.DateInput(attrs={'class': 'form-control', 'readonly': True}),
label=u'截止日期',
)
title = forms.CharField(
widget=forms.widgets.TextInput(attrs={'size': 35,'class': 'form-control',}),
label=u'任务名'
)
class Meta:
model = Item
widgets = {
'created_by': forms.HiddenInput(),
'tasktype': forms.HiddenInput(),
'length':
forms.widgets.NumberInput(attrs={
'class': 'form-control',
}),
'status':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'note':
forms.widgets.Textarea(attrs={
'class': 'form-control',
}),
'assigned_to':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'priority':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
}
exclude = ('is_delete', 'progress', 'lock', 'completed_date', 'project', 'count')
# 项目任务
class SubProjectForm(ModelForm):
def __init__(self, *args, **kwargs):
super(SubProjectForm, self).__init__(*args, **kwargs)
init = kwargs.get('initial')
if init:
try:
pro = init.get('project')
self.fields['assigned_to'].queryset = pro.assigned_to.all()
except:
self.fields['assigned_to'].queryset = init.project.assigned_to.all()
class Meta:
model = Item
widgets = {
'created_by': forms.HiddenInput(),
'project': forms.HiddenInput(),
'tasktype': forms.HiddenInput(),
'due_date': forms.DateInput(attrs={'class': 'form_datetime','readonly': True}),
}
exclude = ('is_delete', 'lock', 'type', 'completed_date', 'count',)
class MultiItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MultiItemForm, self).__init__(*args, **kwargs)
self.fields['type'].widget = forms.Select(choices=type_as_group('time'),attrs={'class': 'form-control',})
init = kwargs.get('initial')
if init:
user = init.get('user')
# getuser = GetOrgStructure(user)
# if getuser == 'all':
c = [(u.id, u.username) for u in User.objects.exclude(username='admin')]
self.fields['assigned_to'] = forms.CharField(widget=forms.SelectMultiple(
attrs={'class': 'js-example-basic-multiple form-control', 'multiple': ''},
choices=c), label=u'选择用户')
# elif isinstance(getuser, list):
# c = [(u.id, u.username) for u in User.objects.filter(username__in=getuser)]
# self.fields['assigned_to'] = forms.CharField(widget=forms.SelectMultiple(
# attrs={'class': 'js-example-basic-multiple form-control', 'multiple': ''},
# choices=c), label=u'选择用户')
else:
return
due_date = forms.DateField(
required=False,
widget=forms.DateInput(attrs={'class': 'form-control', 'readonly': True}),
label=u'截止日期',
)
class Meta:
model = Item
widgets = {
'created_by': forms.HiddenInput(),
'tasktype': forms.HiddenInput(),
'title':
forms.widgets.TextInput(attrs={
'class': 'form-control',
}),
'length':
forms.widgets.NumberInput(attrs={
'class': 'form-control',
}),
'status':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'note':
forms.widgets.Textarea(attrs={
'class': 'form-control',
}),
'assigned_to':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'priority':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
}
exclude = ('is_delete', 'progress', 'lock', 'completed_date', 'project', 'count', )
class MultiCountItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MultiCountItemForm, self).__init__(*args, **kwargs)
self.fields['type'].widget = forms.Select(choices=type_as_group('count'),attrs={'class': 'form-control',})
init = kwargs.get('initial')
if init:
user = init.get('user')
#getuser = GetOrgStructure(user)
#if getuser == 'all':
c = [(u.id, u.username) for u in User.objects.exclude(username='admin')]
self.fields['assigned_to'] = forms.CharField(widget=forms.SelectMultiple(
attrs={'class': 'js-example-basic-multiple form-control', 'multiple': ''},
choices=c), label=u'选择用户')
# elif isinstance(getuser, list):
# c = [(u.id, u.username) for u in User.objects.filter(username__in=getuser)]
# self.fields['assigned_to'] = forms.CharField(widget=forms.SelectMultiple(
# attrs={'class': 'js-example-basic-multiple form-control', 'multiple': ''},
# choices=c), label=u'选择用户')
else:
return
due_date = forms.DateField(
required=False,
widget=forms.DateInput(attrs={'class': 'form-control', 'readonly': True}),
label=u'截止日期',
)
class Meta:
model = Item
widgets = {
'created_by': forms.HiddenInput(),
'title':
forms.widgets.TextInput(attrs={
'class': 'form-control',
}),
'count':
forms.widgets.NumberInput(attrs={
'class': 'form-control',
}),
'status':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'note':
forms.widgets.Textarea(attrs={
'class': 'form-control',
}),
'assigned_to':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
'priority':
forms.widgets.Select(attrs={
'class': 'form-control',
}),
}
exclude = ('is_delete', 'progress', 'lock', 'completed_date', 'project', 'length', 'tasktype' )
class EditSubProjectForm(ModelForm):
"""
编辑子项目实例Form方法
"""
def __init__(self, *args, **kwargs):
super(EditSubProjectForm, self).__init__(*args, **kwargs)
ins = kwargs.get('instance')
self.fields['assigned_to'].queryset = ins.project.assigned_to.all()
class Meta:
model = Item
widgets = {
'created_by': forms.HiddenInput(),
'project': forms.HiddenInput(),
'tasktype': forms.HiddenInput(),
'due_date': forms.DateInput(attrs={'class': 'form_datetime','readonly': True}),
}
exclude = ('is_delete', 'lock', 'type', 'completed_date', 'count',)
class SearchForm(ModelForm):
"""
搜索表单
"""
def __init__(self, *args, **kwargs):
super(SearchForm, self).__init__(*args, **kwargs)
init = kwargs.get('initial')
if init:
user = init.get('user')
#getuser = GetOrgStructure(user)
# if getuser == 'all':
c = [(u.id, u.username) for u in User.objects.exclude(username='admin')]
self.fields['owner'] = forms.CharField(widget=forms.SelectMultiple(
attrs={'class': 'form-control', 'multiple': ''},
choices=c), label=u'选择查询用户')
else:
return
STATUS_CHOICES = (
(1, (u'未开始')),
(2, (u'进行中')),
(3, (u'已完成')),
(4, (u'已关闭')),
(5, ('ALL')),
)
TASK_TYPE = (
(1, (u'计次任务')),
(2, (u'计时任务')),
(3, (u'项目任务')),
(4, ('ALL')),
)
self.fields['tasktype'].widget = forms.Select(attrs={'class': 'form-control'}, choices=TASK_TYPE)
self.fields['status'].widget = forms.Select(attrs={'class': 'form-control'}, choices=STATUS_CHOICES)
self.fields['start_date'] = forms.DateField(widget=forms.TextInput(attrs={'class': 'form-control'}),
label=u'开始时间', help_text=' *'
)
self.fields['end_date'] = forms.DateField(widget=forms.TextInput(attrs={'class': 'form-control'}),
label=u'结束时间', help_text=' *')
class Meta:
model = Item
fields = ('tasktype', 'status',)