Browse Source

initial commit

devel
Dmitry 10 years ago
parent
commit
dfbd026f74
  1. 0
      taskapp/__init__.py
  2. 4
      taskapp/admin.py
  3. 5
      taskapp/apps.py
  4. 33
      taskapp/forms.py
  5. 0
      taskapp/migrations/__init__.py
  6. 41
      taskapp/models.py
  7. 3
      taskapp/tests.py
  8. 9
      taskapp/urls.py
  9. 64
      taskapp/views.py
  10. 74
      templates/taskapp/add_edit_task.html
  11. 71
      templates/taskapp/index.html

0
taskapp/__init__.py

4
taskapp/admin.py

@ -0,0 +1,4 @@
from django.contrib import admin
import models
admin.site.register(models.Task)

5
taskapp/apps.py

@ -0,0 +1,5 @@
from django.apps import AppConfig
class TicketsappConfig(AppConfig):
name = 'taskapp'

33
taskapp/forms.py

@ -0,0 +1,33 @@
# -*- coding: utf-8 -*-
from datetime import datetime, timedelta
from django import forms
from models import TASK_PRIORITIES
from accounts_app.models import UserProfile
from devapp.models import Device
class TaskFrm(forms.Form):
descr = forms.CharField(max_length=128, required=True, widget=forms.TextInput(attrs={
'placeholder': u'Краткое описание',
'class': "form-control",
'id': "descr",
'required':''
}))
recipient = forms.ModelChoiceField(
queryset=UserProfile.objects.all(),
widget=forms.Select(attrs={'class': 'form-control', 'id': 'recipient', 'required':''})
)
device = forms.ModelChoiceField(
queryset=Device.objects.all(),
widget=forms.Select(attrs={'class': 'form-control', 'id': 'device', 'required':''})
)
priority = forms.ChoiceField(
choices=TASK_PRIORITIES,
widget=forms.Select(attrs={'class': 'form-control', 'id': 'priority'}),
required=False,
initial=TASK_PRIORITIES[2][0]
)
out_date = forms.DateField(
widget=forms.DateInput(attrs={'class': 'form-control', 'id': 'out_date'}),
initial=datetime.now()+timedelta(days=7)
)

0
taskapp/migrations/__init__.py

41
taskapp/models.py

@ -0,0 +1,41 @@
# coding=utf-8
from __future__ import unicode_literals
from django.db import models
from djing import settings
from devapp.models import Device
from datetime import datetime, timedelta
TASK_PRIORITIES = (
(b'A', u'Высший'),
(b'B', u'Выше среднего'),
(b'C', u'Средний'),
(b'D', u'Ниже среднего'),
(b'E', u'Низкий')
)
class Task(models.Model):
descr = models.CharField(max_length=128)
recipient = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+')
author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+')
device = models.ForeignKey(Device, related_name='dev')
priority = models.CharField(max_length=1, choices=TASK_PRIORITIES, default=TASK_PRIORITIES[2][0])
out_date = models.DateField(null=True, blank=True, default=datetime.now()+timedelta(days=7))
time_of_create = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.descr
class Meta:
db_table = 'task'
def save_form(self, frm_instance, auth_user):
cl = frm_instance.cleaned_data
self.descr = cl['descr']
self.recipient = cl['recipient']
self.author = auth_user
self.device = cl['device']
self.priority = cl['priority']
self.out_date = cl['out_date']

3
taskapp/tests.py

@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

9
taskapp/urls.py

@ -0,0 +1,9 @@
from django.conf.urls import url
import views
urlpatterns = [
url(r'^$', views.home, name='task_home'),
url(r'^(?P<task_id>\d+)/edit$', views.task_add_edit, name='task_edit'),
url(r'^(?P<task_id>\d+)/delete$', views.task_delete, name='task_delete'),
url(r'^add$', views.task_add_edit, name='task_add')
]

64
taskapp/views.py

@ -0,0 +1,64 @@
# coding=utf-8
from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect, get_object_or_404
from models import Task
from mydefs import pag_mn#, order_helper
from forms import TaskFrm
@login_required
def home(request):
tasks = Task.objects.all()
# filter
#dir, field = order_helper(request)
#if field:
# tasks = tasks.order_by(field)
for ts in tasks:
print ts.priority, type(ts.priority)
tasks = pag_mn(request, tasks)
return render(request, 'taskapp/index.html', {
'tasks': tasks
})
@login_required
def task_delete(request, task_id):
get_object_or_404(Task, id=task_id).delete()
return redirect('task_home')
@login_required
def task_add_edit(request, task_id=0):
warntext = ''
if request.method == 'POST':
frm = TaskFrm(request.POST)
if frm.is_valid():
tsk = Task()
tsk.save_form(frm, request.user)
tsk.save()
return redirect('task_home')
else:
warntext = u'Исправте ошибки'
if task_id == 0:
task = Task()
frm = TaskFrm()
else:
task = get_object_or_404(Task, id=task_id)
frm = TaskFrm({
'descr': task.descr,
'recipient': task.recipient.id,
'device': task.device.id,
'priority': task.priority,
'out_date': task.out_date
})
return render(request, 'taskapp/add_edit_task.html', {
'warntext': warntext,
'form': frm,
'task': task
})

74
templates/taskapp/add_edit_task.html

@ -0,0 +1,74 @@
{% extends request.is_ajax|yesno:'bajax.html,base.html' %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li><a href="{% url 'task_home' %}">Задачи</a></li>
<li class="active">Создать</li>
</ol>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">Добавьте новую задачу</h3>
</div>
<div class="panel-body">
{% if warntext %}
<div class="alert-danger">{{ warntext }}</div>
{% endif %}
{% if task.id %}
<form role="form" action="{% url 'task_edit' task.id %}" method="post">
{% else %}
<form role="form" action="{% url 'task_add' %}" method="post">
{% endif %}
{% csrf_token %}
<div class="form-group">
<label for="descr">Пару слов...</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-tag"></span></span>
{{ form.descr }}{{ form.descr.errors }}
</div>
</div>
<div class="form-group">
<label for="recipient">Цель, на кого назначаем</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
{{ form.recipient }}{{ form.recipient.errors }}
</div>
</div>
<div class="form-group">
<label for="device">С каким устройством связано</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-hdd"></span></span>
{{ form.device }}{{ form.device.errors }}
</div>
</div>
<div class="form-group">
<label for="priority">Приоритет</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-sort-by-order"></span></span>
{{ form.priority }}{{ form.priority.errors }}
</div>
</div>
<div class="form-group">
<label for="out_date">Актуальность</label>
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-calendar"></span></span>
{{ form.out_date }}{{ form.out_date.errors }}
</div>
</div>
<div class="btn-group">
<button type="submit" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-save"></span> Сохранить
</button>
<button type="reset" class="btn btn-sm btn-default">
<span class="glyphicon glyphicon-remove-circle"></span> Сбросить
</button>
</div>
</form>
</div>
</div>
{% endblock %}

71
templates/taskapp/index.html

@ -0,0 +1,71 @@
{% extends 'base.html' %}
{% block main %}
<ol class="breadcrumb">
<li><span class="glyphicon glyphicon-home"></span></li>
<li class="active">Задачи</li>
</ol>
<h3>Задачи, которые необходимо выполнить</h3>
<div class="table-responsive">
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Пару слов..</th>
<th>Кому назначена</th>
<th>Кто назначил</th>
<th>Приоритет</th>
<th>Истечение срока</th>
<th>Дата создания</th>
<th width="50">Ред.</th>
<th width="50">Уд.</th>
</tr>
</thead>
<tbody>
{% for task in tasks %}
{% if task.priority == 'E' %}<tr class="danger">
{% elif task.priority == 'D' %}<tr class="warning">
{% elif task.priority == 'C' %}<tr class="info">
{% elif task.priority == 'B' %}<tr>
{% elif task.priority == 'A' %}<tr class="success">
{% else %}<tr>{% endif %}
<td>{{ task.descr }}</td>
<td><a href="{% url 'other_profile' task.recipient.id %}" title="{{ task.recipient.get_full_name }}">{{ task.recipient.username }}</a></td>
<td><a href="{% url 'other_profile' task.author.id %}" title="{{ task.author.get_full_name }}">{{ task.author.username }}</a></td>
<td>{{ task.get_priority_display }}</td>
<td>{{ task.out_date }}</td>
<td>{{ task.time_of_create }}</td>
<td colspan="2" class="btn-group">
<a href="{% url 'task_edit' task.id %}" class="btn btn-sm btn-primary">
<span class="glyphicon glyphicon-edit"></span>
</a>
<a href="{% url 'task_delete' task.id %}" class="btn btn-sm btn-danger">
<span class="glyphicon glyphicon-remove-circle"></span>
</a>
</td>
</tr>
{% empty %}
<tr>
<td colspan="8">Нет ни одного задания на этот момент. <a href="{% url 'task_add' %}">Создать задачу</a></td>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<td colspan="8">
<a href="{% url 'task_add' %}" class="btn btn-sm btn-success" title="Создать новую задачу">
<span class="glyphicon glyphicon-plus"></span>
</a>
</td>
</tr>
</tfoot>
</table>
</div>
{% include 'toolbar_page.html' with pag=tasks %}
{% endblock %}
Loading…
Cancel
Save