def project(request, slug, template_name="projects/project.html"): project = get_object_or_404(Project, slug=slug) if project.deleted: raise Http404 photos = project.photos.all() if request.user.is_authenticated() and request.method == "POST" and request.user == project.creator: if request.POST["action"] == "update": user_file_form = UserFileForm(Account.objects.get(user = request.user)) adduser_form = AddUserForm(project=project) project_form = ProjectUpdateForm(request.POST, instance=project) file_form = UploadFileForm() if project_form.is_valid(): project = project_form.save() elif request.POST["action"] == "add": user_file_form = UserFileForm(Account.objects.get(user = request.user)) project_form = ProjectUpdateForm(instance=project) adduser_form = AddUserForm(project, request.POST) file_form = UploadFileForm() if adduser_form.is_valid(): adduser_form.save(project, request.user) adduser_form = AddUserForm(project=project) # @@@ is this the right way to clear it? elif request.POST["action"] == "upload": user_file_form = UserFileForm(Account.objects.get(user = request.user)) adduser_form = AddUserForm(project=project) project_form = ProjectUpdateForm(instance=project) file_form = UploadFileForm(request.POST, request.FILES) if file_form.is_valid(): uFile = handle_uploaded_file(request.FILES['file'], request.user) project.files.add(uFile) project.save() request.user.message_set.create(message="uploaded %(file)s"%{'file':request.FILES['file'].name}) elif request.POST["action"] == "remove": user_file_form = UserFileForm(Account.objects.get(user = request.user)) adduser_form = AddUserForm(project=project) project_form = ProjectUpdateForm(instance=project) file_form = UploadFileForm() fname = request.POST['file'] remove_uploaded_file(fname, project) request.user.message_set.create(message="removed %(file)s from project"%{'file':fname}) elif request.POST["action"] == "userfile": adduser_form = AddUserForm(project=project) project_form = ProjectUpdateForm(instance=project) file_form = UploadFileForm() user_file_form = UserFileForm(Account.objects.get(user = request.user)) #if user_file_form.is_valid(): acc = Account.objects.get(user = request.user) uFile = acc.files.get(name = request.POST['files']) project.files.add(uFile) project.save() request.user.message_set.create(message="added %(file)s to project"%{'file':uFile.name}) else: user_file_form = UserFileForm(Account.objects.get(user = request.user)) file_form = UploadFileForm() project_form = ProjectUpdateForm(instance=project) adduser_form = AddUserForm(project=project) elif request.user.is_authenticated() and request.user == project.creator: user_file_form = UserFileForm(Account.objects.get(user = request.user)) file_form = UploadFileForm() adduser_form = AddUserForm(project=project) project_form = ProjectUpdateForm(instance=project) else: user_file_form = UserFileForm(None) file_form = UploadFileForm() adduser_form = AddUserForm(project=project) project_form = ProjectUpdateForm(instance=project) topics = project.topics.all()[:5] articles = Article.objects.filter( content_type=get_ct(project), object_id=project.id).order_by('-last_update') total_articles = articles.count() articles = articles[:5] total_tasks = project.tasks.count() tasks = project.tasks.order_by("-modified")[:10] # tweets = TweetInstance.objects.tweets_for(project).order_by("-sent") are_member = project.has_member(request.user) return render_to_response(template_name, { "project_form": project_form, "adduser_form": adduser_form, "project": project, "photos": photos, "topics": topics, "articles": articles, "total_tasks": total_tasks, "tasks": tasks, "total_articles": total_articles, "are_member": are_member, "file_form": file_form, "user_file_form":user_file_form, }, context_instance=RequestContext(request))
def task(request, id, template_name="projects/task.html"): task = get_object_or_404(Task, id=id) project = task.project if project.deleted: raise Http404 is_member = project.has_member(request.user) if is_member and request.method == "POST": if request.POST["action"] == "assign": #dependency_form = TaskDependencyForm(project.tasks.all()) user_file_form = UserFileForm(Account.objects.get(user = request.user)) status_form = StatusForm(instance=task) assign_form = AssignForm(project, request.POST, instance=task) file_form = UploadFileForm() if assign_form.is_valid(): task = assign_form.save() request.user.message_set.create(message="assigned task to '%s'" % task.assignee) if notification: notification.send(project.member_users.all(), "projects_task_assignment", {"user": request.user, "task": task, "project": project, "assignee": task.assignee}) elif request.POST["action"] == "update_status": #dependency_form = TaskDependencyForm(project.tasks.all()) user_file_form = UserFileForm(Account.objects.get(user = request.user)) assign_form = AssignForm(project, instance=task) status_form = StatusForm(request.POST, instance=task) file_form = UploadFileForm() if status_form.is_valid(): task = status_form.save() request.user.message_set.create(message="updated your status on the task") if notification: notification.send(project.member_users.all(), "projects_task_status", {"user": request.user, "task": task, "project": project}) elif request.POST["action"] == "upload": #dependency_form = TaskDependencyForm(project.tasks.all()) user_file_form = UserFileForm(Account.objects.get(user = request.user)) assign_form = AssignForm(project, instance=task) status_form = StatusForm(instance=task) file_form = UploadFileForm(request.POST, request.FILES) if file_form.is_valid(): uFile = handle_uploaded_file(request.FILES['file'], request.user) task.files.add(uFile) task.save() request.user.message_set.create(message="uploaded %(file)s"%{'file':request.FILES['file'].name}) elif request.POST["action"] == "remove": #dependency_form = TaskDependencyForm(project.tasks.all()) user_file_form = UserFileForm(Account.objects.get(user = request.user)) assign_form = AssignForm(project, instance=task) status_form = StatusForm(instance=task) file_form = UploadFileForm() fname = request.POST['file'] remove_uploaded_file(fname, task) request.user.message_set.create(message="removed %(file)s from task"%{'file':fname}) elif request.POST["action"] == "userfile": #dependency_form = TaskDependencyForm(project.tasks.all()) assign_form = AssignForm(project, instance=task) status_form = StatusForm(instance=task) file_form = UploadFileForm() user_file_form = UserFileForm(Account.objects.get(user = request.user)) #if user_file_form.is_valid(): acc = Account.objects.get(user = request.user) uFile = acc.files.get(name = request.POST['files']) task.files.add(uFile) task.save() request.user.message_set.create(message="added %(file)s to task"%{'file':uFile.name}) ## elif request.POST["action"] == "dependency": ## dependency_form = TaskDependencyForm(project.tasks.all()) ## assign_form = AssignForm(project, instance=task) ## status_form = StatusForm(instance=task) ## file_form = UploadFileForm() ## user_file_form = UserFileForm(Account.objects.get(user = request.user)) ## #if user_file_form.is_valid(): ## dependency = Task.objects.get(summary = request.POST['tasks']) ## task.dependencies.add(dependency) ## task.save() ## generate_graph(project, project.tasks.all()) ## request.user.message_set.create(message="added %(task)s as dependency"%{'task':dependency.summary}) else: if is_member: user_file_form = UserFileForm(Account.objects.get(user = request.user)) #dependency_form = TaskDependencyForm(project.tasks.all()) else: user_file_form = UserFileForm(None) #dependency_form = TaskDependencyForm(None) assign_form = AssignForm(project, instance=task) status_form = StatusForm(instance=task) file_form = UploadFileForm() if request.POST["action"] == "mark_resolved" and request.user == task.assignee: task.state = '2' task.save() request.user.message_set.create(message="task marked resolved") if notification: notification.send(project.member_users.all(), "projects_task_change", {"user": request.user, "task": task, "project": project, "new_state": "resolved"}) elif request.POST["action"] == "mark_closed" and request.user == task.creator: task.state = '3' task.save() request.user.message_set.create(message="task marked closed") if notification: notification.send(project.member_users.all(), "projects_task_change", {"user": request.user, "task": task, "project": project, "new_state": "closed"}) elif request.POST["action"] == "reopen" and is_member: task.state = '1' task.save() request.user.message_set.create(message="task reopened") if notification: notification.send(project.member_users.all(), "projects_task_change", {"user": request.user, "task": task, "project": project, "new_state": "reopened"}) else: if is_member: user_file_form = UserFileForm(Account.objects.get(user = request.user)) #dependency_form = TaskDependencyForm(project.tasks.all()) else: user_file_form = UserFileForm(None) #dependency_form = TaskDependencyForm(None) assign_form = AssignForm(project, instance=task) status_form = StatusForm(instance=task) file_form = UploadFileForm() return render_to_response(template_name, { "task": task, "is_member": is_member, "assign_form": assign_form, "status_form": status_form, "file_form": file_form, "user_file_form": user_file_form, #"dependency_form":dependency_form, }, context_instance=RequestContext(request))