def test_task_fromdict_dependencies(self): user = self.create_user() task1 = Task(user=user, description='test') task1.save(track=False) task2 = Task(user=user, description='test2') task2.save(track=False) data = { 'description': 'foobar', 'uuid': 'sssssssss', 'status': 'pending', 'entry': '12345', 'user': user, 'annotation_1324076995': u'this is an annotation', 'depends': u','.join([t.uuid for t in (task1, task2)]), 'priority': '', } task = Task.fromdict(data) # ensure the data is in the db, not just the task # object from above task = Task.objects.get(description='foobar') self.assertEqual(list(Undo.objects.all()), []) data.pop('user') data.pop('priority') self.assertEqual(data, task.todict())
def add_new_task(item): result = False message = "no process" # app.logger.debug(item) query_result = Task.query.filter(Task.id == item['id']).first() if item['id'] and not query_result: try: task = Task(**item) db.session.add(task) db.session.flush() if task.id: result = True message = "success" else: message = "failed" except Exception as ex: err = "Exception while processing item %s" % item['id'] app.logger.error(err, ex) message = err else: message = "duplicate entry" result = True app.logger.warning(message) r = {'result': result, 'message': message} return r
def execute(self): task = Task() task.project = self.payload.get('project') task.title = self.payload.get('title') task_type = self.payload.get('task_type') task.task_type = task_type task.label = self.payload.get('label') task.priority = self.payload.get('priority') task.branch = Task.generate_branch() assignee = self.payload.get('assignee') if assignee: task.assignee = assignee if task_type == TaskChoices.SUB_TASK: task.parent = self.payload.get('parent') # it must be instance task.deadline = self.payload.get('deadline') task.descriptions = self.payload.get('descriptions') created_by = self.payload.get('created_by') task.created_by = created_by task.save() if assignee != created_by: # send email & notifications to user if he not assignee task to himself title = f'{created_by.username} assigned an task to you.' payload = { 'title': title, 'recipient': assignee.id, 'subject': ASSIGNEE_TASK, 'related_data': task.id } NotificationTask.task_push_notification.delay(payload) return task
def test_mark_task_done(self): user = self.create_user() task = Task(description='test', user=user) task.save() self.assertEqual(task.status, 'pending') task.done() self.assertEqual(task.status, 'completed')
def test_set_name_invalid_length(self): """任务名称长度不在规定的范围内""" task = Task(user=self.user, template=self.template) for name in ('t1', ' t1 ', ' ', 't' * 30): with self.assertRaises(ValueError) as cm: task.set_name(name) self.assertEqual('任务名长度应在3~20个字符之间', cm.exception.args[0])
def create(request): if request.method == 'POST': form = TaskCreateForm(request.POST) if form.is_valid(): thisadmin = MyAdmin.objects.get(user_id=request.user.user_id) schema_name = request.POST.get('TaskDataTableName', '') schema = request.POST.get('TaskDataTableScheme', '') cursor = connection.cursor() cursor.execute(schema) cursor.close() tskobj = Task(task_name=request.POST.get('Name', ''), admin=thisadmin, description=request.POST.get('Comment', ''), mincycle=request.POST.get('mincycle', '')) tskobj.save() task_schema = TaskSchema(task_id=tskobj, TaskDataTableName=schema_name, TaskDataTableScheme=schema) task_schema.save() return redirect('taskdatatableschema') #return redirect('/pjadmin') return render(request, 'TaskCreateFail.html') else: form = TaskCreateForm() return render(request, 'TaskCreate.html', {'form': form})
def create_task(request, template_pk): """提交创建任务表单""" if not request.user.is_authenticated: return redirect(reverse('login')) template = get_object_or_404(Template, pk=template_pk) task = Task(user=request.user, template=template) try: task.set_name(request.POST['inputTaskName']) split_arg = task.set_args({ param.name: request.POST[param.name] for param in template.param_set.all() }) except ValueError as e: return JsonResponse({ 'status': 'ERROR', 'message': e.args[0] }, json_dumps_params={'ensure_ascii': False}) task.save() task_arg = task.args_dict() for i in range(split_arg): task_arg[template.split_param] = i + 1 Job.objects.create(uuid=uuid.uuid4(), task=task, args=json.dumps(task_arg)) return JsonResponse({ 'status': 'SUCCESS', 'tasks': get_recent_tasks(request.user) })
def task_display(request, pk): if request.method == 'POST': form = TaskForm(request.POST) user = request.user if request.user.is_authenticated else None if form.is_valid(): task = Task( tasklist_id = pk, description=request.POST['description'], created=timezone.now(), creator=user, ) task.save() return redirect('task:task_display', pk) task_list = get_object_or_404(TaskList, pk=pk) user = request.user if request.user.is_authenticated else None tasks = task_list.tasks.filter(creator=user) length = task_list.count() complete_length = task_list.count_complete() incomplete_length = task_list.count_incomplete() if length != 0: progress = round((complete_length/length)*100, 0) else: progress = 0 context = { 'task_list':task_list, 'tasks':tasks, 'len':length, 'complete':complete_length, 'incomplete':incomplete_length, 'progress':progress, 'form':TaskForm(), } return render(request, 'task/tasks.html', context)
def complete_task(request, pk, list_id): task = Task(id = pk, tasklist_id=list_id) task.description = Task.objects.get(pk=pk).description task.is_complete = True task.completed_at = timezone.now() task.save() return redirect('task:task_display', list_id)
def restart_task(request, pk, list_id): task = Task(id = pk, tasklist_id=list_id) task.description = Task.objects.get(pk=pk).description task.is_complete = False task.completed_at = None task.save() return redirect('task:task_display', list_id)
def post(self, request, *args, **kwargs): form = TaskAddForm(request.POST) user = request.user if form.is_valid(): task = Task( name=form.cleaned_data["name"], task_status=form.cleaned_data["task_status"], start_date=form.cleaned_data["start_date"], start_time=form.cleaned_data["start_time"], # users=(user,) ) try: task.save() task.users.add(user) except Exception as e: return HttpResponse( render(request, "task/task_list.html", {"form": form})) return HttpResponseRedirect(reverse("task_list")) else: tasks_list = user.task_set.all().order_by("-id") paginator = MyPaginator(tasks_list, per_page=5, max_range=3) tasks = paginator.page(1) return render(request, "task/task_list.html", { "form": form, "tasks": tasks, })
def add_task(data: dict): """Добавить задачу в очередь""" num = str_to_int(data, 'num') timeout = str_to_int(data, 'timeout') tq = TaskQueue() index_num_of_last_task = tq.get_index_num_of_last_task() task = Task(index_num_of_last_task + 1, num, timeout) tq.add_task(task)
def create(request): if request.method == 'GET': return render(request, 'task/create.html') elif request.method == 'POST': text = request.POST.get('title') task = Task(text=text, creator=request.user) task.save() return redirect(todo_list)
def test_create_task_undo(self): user = self.create_user() task = Task(description='foobar', user=user) task.save() self.assertEqual(len(Undo.objects.all()), 1) self.assertNotIn('old', Undo.serialize()) self.assertEqual(len(Undo.serialize().splitlines()), 3) task.delete()
def index(request): if request.method == 'GET': name = request.GET.get('name', '') location = request.GET.get('location') acc_token = request.GET.get('token') if location: geolocator = Nominatim() location = geolocator.geocode(location) location = str(location.latitude) + ',' + str(location.longitude) else: lat = request.GET.get('lat') lon = request.GET.get('lon') location = str(lat) + ',' + str(lon) print name, location, acc_token if acc_token: graph = GraphAPI(acc_token) else: graph = GraphAPI( 'CAACEdEose0cBAPJRZA8xHkMmbokHYBCUyjcKxZBohVhzJnGlm2ETlOYESQpEjG1Gj6ykTV4FMmhqMUrgFsJp0HdH4TszHwCkoMA8PS8L2MRFth3w3Wm7ucx4xMglc9ZBZAMhnyrr3XNAlH6MHZBtGmeWusWvzu4GSt4Mt9oS2KIOkWh70WhQ3ktOUC40PgChklQN31X0EgAZDZD' ) search = name search = qp(search) result = graph.get('search?type=place&q=' + search + '¢er=' + location) page_id = result['data'][0]['id'] params = 'fields=phone,likes,current_location,about,website,food_styles,description,hours,awards,price_range,location,booking_agent,is_verified,offers,public_transit,founded,products,emails,parking' a = str(page_id) + '?' + params cache = {} cache['facebook'] = {} cache['google'] = {} cache['facebook'] = {'fb_page_url': 'http://facebook.com/' + page_id} params = params.split(',') for each in params: try: cache['facebook'][each] = str(graph.get(a)[each]) except: pass #Google Data url = 'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=' + location + '&radius=5000&name=' + name + '&key=AIzaSyDAERlVmOrLWdq0pHF5fK3c2cHmCSvy55I' print url r = requests.get(url) google_result = json.loads(r.text) cache['google'] = google_result return HttpResponse(json.dumps(cache), content_type="application/json") elif request.method == 'POST': t = request.POST.get("task", "") a = Task(text=t, date=timezone.now()) a.save() return redirect('/')
def test_pending_tasks(self): user = self.create_user() task = Task(description='test, test', user=user) task.save() self.assertEqual(len(Task.objects.all()), 1) response = self.client.get('/pending/') self.assertEqual(response.status_code, 200) self.assertEqual(len(response.context['datagrid'].rows), 1)
def test_task_is_dirty_foreign_key(self): user = self.create_user() task = Task(description='foobar', user=user) self.assertTrue(task._is_dirty()) task.save() self.assertFalse(task._is_dirty()) task.priority = Priority.objects.get(weight=1) self.assertItemsEqual(task._get_dirty_fields().keys(), ['priority']) self.assertTrue(task._is_dirty())
def test_task_is_dirty_m2m(self): user = self.create_user() task = Task(description='foobar', user=user) self.assertTrue(task._is_dirty()) task.save() self.assertFalse(task._is_dirty()) task.tags.add(Tag.objects.create(tag='foobar')) self.assertItemsEqual(task._get_dirty_fields().keys(), ['tags']) self.assertTrue(task._is_dirty())
def post(self, request): try: task = Task() return redirect('index') except Exception as e: return render
def test_task_saving_without_data_change(self): """ Make sure that saving a task twice without a change in data doesn't create duplicate Undo's """ user = self.create_user() task = Task(description='foobar', user=user) task.save() task.save() self.assertEqual(len(Undo.objects.all()), 1)
def test_create_task_with_uuid(self): """ Verify that when instantiating a Task with a uuid specified, it uses that uuid. """ user = self.create_user() uuid = 'foobar' task = Task(description='my description', uuid=uuid, user=user) task.save() self.assertEqual(task.uuid, uuid)
def test_task_tags_single_tag(self): user = self.create_user() task = Task(description='foobar', user=user) task.save() # single tag tag = Tag.objects.create(tag='django') task.tags.add(tag) task.save() self.assertEqual(list(task.tags.all()), [tag])
def test_create_task_no_uuid(self): """ Verify that a `Task`s uuid field is automatically populated when not specified. """ # description and user are the only required field user = self.create_user() task = Task(description='foobar', user=user) task.save() self.assertTrue(hasattr(task, 'uuid')) self.assertNotEqual(task.uuid, None)
def index(request): if request.method == 'GET': a = Task.objects.all().order_by('date').reverse() context = {'tasks': a} return render(request, 'task/index.html', context) elif request.method == 'POST': t = request.POST.get("task", "") a = Task(text=t, date=timezone.now()) a.save() return redirect('/')
def test_task_tags_multiple_tags(self): user = self.create_user() task = Task(description='foobar', user=user) task.save() # multiple tags tag1 = Tag.objects.create(tag='spam') tag2 = Tag.objects.create(tag='eggs') task.tags.add(tag1, tag2) task.save() self.assertEqual(list(task.tags.all()), [tag1, tag2])
def create(request): if request.method =='GET': return render(request,'task/create.html') elif request.method =='POST': text = request.POST.get('title') task = Task(text=text,creator=request.user) # 很重要的一点, creator =request.user # 创建模型的时候,创建了两个参数:text,creator, task.save() return redirect(list)
def test_name_already_exists(self): """任务名称已存在""" Task.objects.create(user=self.user, template=self.template, name='task1') task = Task(user=self.user, template=self.template) with self.assertRaises(ValueError) as cm: task.set_name(' task1\t\r\n') self.assertEqual('任务名称已存在', cm.exception.args[0]) # 重新运行任务时如果未修改任务名称则不应报错(名称与自己重复) task = self.user.task_set.get() task.set_name(' task1 ') self.assertEqual('task1', task.name)
def test_task_is_dirty(self): user = self.create_user() task = Task(description='foobar', user=user) self.assertItemsEqual(task._get_dirty_fields().keys(), ['user', 'description']) self.assertTrue(task._is_dirty()) task.save() self.assertFalse(task._is_dirty()) self.assertItemsEqual(task._get_dirty_fields().keys(), []) task.description = 'foobar2' self.assertItemsEqual(task._get_dirty_fields().keys(), ['description']) self.assertTrue(task._is_dirty())
def new_task(request): name = unicode.strip(request.POST.get('name')) description = unicode.strip(request.POST.get('description')) pk = request.POST.get('pk') if pk: task = Task.objects.get(pk=pk) task.name = name task.description = description else: task = Task(name=name, description=description) task.save() return HttpResponseRedirect(reverse('tasks'))
def test_edit_task_undo(self): user = self.create_user() task = Task(description='foobar', user=user) task.save() task.annotate('annotation') self.assertEqual(len(Undo.objects.all()), 2) self.assertIn('old', Undo.serialize()) # 'old' shouldn't have an annotation new_undo = Undo.objects.get(pk=2) self.assertNotIn('annotation_', new_undo.old) self.assertEqual(len(Undo.serialize().splitlines()), 7) self.assertNotIn('annotation_', Undo.serialize().splitlines()[4])