Author: jtauber
Date: Tue Oct 7 04:27:46 2008
New Revision: 1026
Modified:
trunk/apps/core_apps/tag_app/views.py
trunk/apps/local_apps/projects/admin.py
trunk/apps/local_apps/projects/models.py
trunk/apps/local_apps/projects/thing.py
trunk/apps/local_apps/projects/urls.py
trunk/apps/local_apps/projects/views.py
trunk/projects/complete_project/sql_changelog.txt
Log:
projects now have a deleted flag which is honoured by most views -- wiki
pages are still an issue and the template/view changes to actually mark a
project as deleted have not yet been done
Modified: trunk/apps/core_apps/tag_app/views.py
==============================================================================
--- trunk/apps/core_apps/tag_app/views.py (original)
+++ trunk/apps/core_apps/tag_app/views.py Tue Oct 7 04:27:46 2008
@@ -20,9 +20,10 @@
phototags = TaggedItem.objects.get_by_model(Photos, tag)
bookmarktags = TaggedItem.objects.get_by_model(BookmarkInstance, tag)
- project_tags = TaggedItem.objects.get_by_model(Project, tag)
- project_topic_tags = TaggedItem.objects.get_by_model(ProjectTopic, tag)
- project_task_tags = TaggedItem.objects.get_by_model(Task, tag)
+
+ project_tags = TaggedItem.objects.get_by_model(Project,
tag).filter(deleted=False)
+ project_topic_tags = TaggedItem.objects.get_by_model(ProjectTopic,
tag).filter(project__deleted=False)
+ project_task_tags = TaggedItem.objects.get_by_model(Task,
tag).filter(project__deleted=False)
tribe_tags = TaggedItem.objects.get_by_model(Tribe, tag)
tribe_topic_tags = TaggedItem.objects.get_by_model(TribeTopic, tag)
Modified: trunk/apps/local_apps/projects/admin.py
==============================================================================
--- trunk/apps/local_apps/projects/admin.py (original)
+++ trunk/apps/local_apps/projects/admin.py Tue Oct 7 04:27:46 2008
@@ -2,7 +2,7 @@
from projects.models import Project, Topic, Task
class ProjectAdmin(admin.ModelAdmin):
- list_display = ('name', 'creator', 'created', 'private')
+ list_display = ('name', 'creator', 'created', 'private', 'deleted')
class TopicAdmin(admin.ModelAdmin):
list_display = ('title', )
Modified: trunk/apps/local_apps/projects/models.py
==============================================================================
--- trunk/apps/local_apps/projects/models.py (original)
+++ trunk/apps/local_apps/projects/models.py Tue Oct 7 04:27:46 2008
@@ -33,6 +33,8 @@
member_users = models.ManyToManyField(User, through="ProjectMember",
verbose_name=_('members'))
+ deleted = models.BooleanField(_('deleted'), default=False)
+
# private means only members can see the project
private = models.BooleanField(_('private'), default=False)
Modified: trunk/apps/local_apps/projects/thing.py
==============================================================================
--- trunk/apps/local_apps/projects/thing.py (original)
+++ trunk/apps/local_apps/projects/thing.py Tue Oct 7 04:27:46 2008
@@ -1,7 +1,7 @@
import things
from django.db import connection
-class ProjectThing(things.ModelThing):
+class ProjectThing(things.Thing):
created = things.OrderField(
verbose_name_asc='Age',
verbose_name_desc='Age',
Modified: trunk/apps/local_apps/projects/urls.py
==============================================================================
--- trunk/apps/local_apps/projects/urls.py (original)
+++ trunk/apps/local_apps/projects/urls.py Tue Oct 7 04:27:46 2008
@@ -4,7 +4,8 @@
from wiki import models as wiki_models
from projects.thing import ProjectThing
-pt = ProjectThing(Project)
+# @@@ should qs really be here?
+pt = ProjectThing(Project.objects.filter(deleted=False))
wiki_args = {
'group_slug_field': 'slug',
@@ -13,23 +14,23 @@
'is_private': (lambda group: group.private),
}
-urlpatterns = pt.urls(url_prefix='', name_prefix='project_thing') +
patterns('',
- url(r'^create/$', 'projects.views.create', name="project_create"),
- # @@@ what to do about clash with project with slug 'your_projects'?
- url(r'^your_projects/$', 'projects.views.your_projects',
name="your_projects"),
- url(r'^project/(\w+)/$', 'projects.views.project',
name="project_detail"),
-
-
url(r'^project/(\w+)/members_status/$', 'projects.views.members_status',
name="project_members_status"),
-
- # topics
- url(r'^project/(\w+)/topics/$', 'projects.views.topics',
name="project_topics"),
- url(r'^topic/(\d+)/$', 'projects.views.topic', name="project_topic"),
-
- # tasks
- url(r'^project/(\w+)/tasks/$', 'projects.views.tasks',
name="project_tasks"),
- url(r'^task/(\d+)/$', 'projects.views.task', name="project_task"),
- url(r'^tasks/(\w+)/$', 'projects.views.user_tasks',
name="project_user_tasks"),
-
- # wiki
- url(r'^project/(?P<group_slug>\w+)/wiki/', include('wiki.urls'),
kwargs=wiki_args),
-)
+urlpatterns = \
+ pt.urls(url_prefix='', name_prefix='project_thing') + \
+ patterns('',
+ url(r'^create/$', 'projects.views.create', name="project_create"),
+ url(r'^your_projects/$', 'projects.views.your_projects',
name="your_projects"),
+ url(r'^project/(\w+)/$', 'projects.views.project',
name="project_detail"),
+
url(r'^project/(\w+)/members_status/$', 'projects.views.members_status',
name="project_members_status"),
+
+ # topics
+ url(r'^project/(\w+)/topics/$', 'projects.views.topics',
name="project_topics"),
+ url(r'^topic/(\d+)/$', 'projects.views.topic',
name="project_topic"),
+
+ # tasks
+ url(r'^project/(\w+)/tasks/$', 'projects.views.tasks',
name="project_tasks"),
+ url(r'^task/(\d+)/$', 'projects.views.task', name="project_task"),
+ url(r'^tasks/(\w+)/$', 'projects.views.user_tasks',
name="project_user_tasks"),
+
+ # wiki
+ url(r'^project/(?P<group_slug>\w+)/wiki/', include('wiki.urls'),
kwargs=wiki_args),
+ )
Modified: trunk/apps/local_apps/projects/views.py
==============================================================================
--- trunk/apps/local_apps/projects/views.py (original)
+++ trunk/apps/local_apps/projects/views.py Tue Oct 7 04:27:46 2008
@@ -1,6 +1,6 @@
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
-from django.http import HttpResponseRedirect
+from django.http import HttpResponseRedirect, Http404
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
@@ -60,14 +60,18 @@
def your_projects(request, template_name="projects/your_projects.html"):
return render_to_response(template_name, {
- "projects":
Project.objects.filter(members__user=request.user).order_by("name"),
+ "projects": Project.objects.filter(deleted=False,
members__user=request.user).order_by("name"),
}, context_instance=RequestContext(request))
your_projects = login_required(your_projects)
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":
adduser_form = AddUserForm(project=project)
@@ -86,14 +90,14 @@
else:
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]
@@ -117,8 +121,12 @@
def topics(request, slug, form_class=TopicForm,
template_name="projects/topics.html"):
project = get_object_or_404(Project, slug=slug)
+
+ if project.deleted:
+ raise Http404
+
is_member = project.has_member(request.user)
-
+
if request.method == "POST":
if is_member:
topic_form = form_class(request.POST)
@@ -145,6 +153,10 @@
def topic(request, id, template_name="projects/topic.html"):
topic = get_object_or_404(Topic, id=id)
+
+ if topic.project.deleted:
+ raise Http404
+
return render_to_response(template_name, {
'topic': topic,
}, context_instance=RequestContext(request))
@@ -152,6 +164,10 @@
def tasks(request, slug, form_class=TaskForm,
template_name="projects/tasks.html"):
project = get_object_or_404(Project, slug=slug)
+
+ if project.deleted:
+ raise Http404
+
is_member = project.has_member(request.user)
if request.user.is_authenticated() and request.method == "POST":
@@ -171,10 +187,10 @@
task_form = form_class(project=project)
else:
task_form = form_class(project=project)
-
+
group_by = request.GET.get("group_by")
tasks = project.tasks.all()
-
+
return render_to_response(template_name, {
"project": project,
"tasks": tasks,
@@ -186,6 +202,10 @@
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":
@@ -229,7 +249,7 @@
else:
assign_form = AssignForm(project, instance=task)
status_form = StatusForm(instance=task)
-
+
return render_to_response(template_name, {
"task": task,
"is_member": is_member,
@@ -239,7 +259,7 @@
def user_tasks(request, username,
template_name="projects/user_tasks.html"):
other_user = get_object_or_404(User, username=username)
- tasks = other_user.assigned_project_tasks.order_by("state")
+ tasks =
other_user.assigned_project_tasks.filter(project__deleted=False).order_by("state")
return render_to_response(template_name, {
"tasks": tasks,
@@ -251,6 +271,9 @@
template_name="projects/members_status.html"):
project = get_object_or_404(Project, slug=slug)
+ if project.deleted:
+ raise Http404
+
is_member = project.has_member(request.user)
try:
project_member = project.members.get(user=request.user)
@@ -267,13 +290,13 @@
elif request.POST["action"] == "set_back":
project_member.away = False
project_member.save()
-
+
if away_form is None:
away_form = form_class()
-
+
active_members = project.members.filter(away=False)
away_members = project.members.filter(away=True).order_by('away_since')
-
+
return render_to_response(template_name, {
"project": project,
"is_member": is_member,
Modified: trunk/projects/complete_project/sql_changelog.txt
==============================================================================
--- trunk/projects/complete_project/sql_changelog.txt (original)
+++ trunk/projects/complete_project/sql_changelog.txt Tue Oct 7 04:27:46
2008
@@ -96,4 +96,9 @@
## add on_site to Notice in notification
-ALTER TABLE notification_notice ADD COLUMN on_site BOOLEAN NOT NULL
DEFAULT 't';
\ No newline at end of file
+ALTER TABLE notification_notice ADD COLUMN on_site BOOLEAN NOT NULL
DEFAULT 't';
+
+
+## add 'deleted' column to project
+
+ALTER TABLE projects_project ADD COLUMN "deleted" bool NOT NULL default
False;
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---