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
-~----------~----~----~----~------~----~------~--~---

Reply via email to