Skip to content
This repository has been archived by the owner on Aug 26, 2022. It is now read-only.

Commit

Permalink
Clean up from Dave's comments and add the migration to install the qu…
Browse files Browse the repository at this point in the history
…estions app.
  • Loading branch information
James Socol committed Jun 8, 2010
1 parent 72a08d8 commit fe112ea
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 13 deletions.
21 changes: 9 additions & 12 deletions apps/questions/models.py
Expand Up @@ -6,7 +6,6 @@

class QuestionForum(ModelBase):
"""A collection of questions."""
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=50, unique=True)
slug = models.SlugField(unique=True)

Expand All @@ -16,17 +15,16 @@ def __unicode__(self):

class Question(ModelBase):
"""A support question."""
id = models.AutoField(primary_key=True)
title = models.CharField(max_length=255)
forum = models.ForeignKey('QuestionForum')
creator = models.ForeignKey(User)
forum = models.ForeignKey('QuestionForum', related_name='questions')
creator = models.ForeignKey(User, related_name='questions')
content = models.TextField()
created = models.DateTimeField(auto_now_add=True, db_index=True)
updated = models.DateTimeField(null=True, db_index=True)
updated_by = models.ForeignKey(User, null=True)
updated_by = models.ForeignKey(User, null=True, related_name='questions_updated')
last_answer = models.ForeignKey('Answer', related_name='last_reply_in',
null=True)
answers = models.IntegerField(default=0, db_index=True)
num_answers = models.IntegerField(default=0, db_index=True)
status = models.IntegerField(db_index=True)
is_locked = models.BooleanField(default=False)

Expand All @@ -39,8 +37,7 @@ def __unicode__(self):

class QuestionMetaData(ModelBase):
"""Metadata associated with a support question."""
id = models.AutoField(primary_key=True)
question = models.ForeignKey('Question')
question = models.ForeignKey('Question', related_name='meta_data')
name = models.SlugField(db_index=True)
value = models.TextField()

Expand All @@ -50,13 +47,13 @@ def __unicode__(self):

class Answer(ModelBase):
"""An answer to a support question."""
id = models.AutoField(primary_key=True)
question = models.ForeignKey('Question')
creator = models.ForeignKey(User)
question = models.ForeignKey('Question', related_name='answers')
creator = models.ForeignKey(User, related_name='answers')
created = models.DateTimeField(auto_now_add=True, db_index=True)
content = models.TextField()
updated = models.DateTimeField(null=True, db_index=True)
updated_by = models.ForeignKey(User, null=True)
updated_by = models.ForeignKey(User, null=True,
related_name='answers_updated')
upvotes = models.IntegerField(default=0, db_index=True)

def __unicode__(self):
Expand Down
2 changes: 1 addition & 1 deletion apps/questions/urls.py
@@ -1,4 +1,4 @@
from django.conf.urls.defaults import *
from django.conf.urls.defaults import patterns, url

urlpatterns = patterns('questions.views',
url(r'^$', 'question_forums', name='questions.question_forums'),
Expand Down
10 changes: 10 additions & 0 deletions apps/questions/views.py
Expand Up @@ -37,3 +37,13 @@ def answers(request, forum_slug, question_id):
return jingo.render(request, 'questions/answers.html',
{'forum': forum, 'question': question,
'answers': answers_})


def new_question(request, forum_slug):
"""Ask a new question."""
pass


def reply(request, forum_slug, question_id):
"""Post a new answer to a question."""
pass
65 changes: 65 additions & 0 deletions migrations/10-create-questions-app.sql
@@ -0,0 +1,65 @@
BEGIN;
CREATE TABLE `questions_questionforum` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(50) NOT NULL UNIQUE,
`slug` varchar(50) NOT NULL UNIQUE
) ENGINE=InnoDB CHARSET=utf8
;
CREATE TABLE `questions_question` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`title` varchar(255) NOT NULL,
`forum_id` integer NOT NULL,
`creator_id` integer NOT NULL,
`content` longtext NOT NULL,
`created` datetime NOT NULL,
`updated` datetime,
`updated_by_id` integer,
`last_answer_id` integer,
`num_answers` integer NOT NULL,
`status` integer NOT NULL,
`is_locked` bool NOT NULL
) ENGINE=InnoDB CHARSET=utf8
;
ALTER TABLE `questions_question` ADD CONSTRAINT `creator_id_refs_id_723e3a28` FOREIGN KEY (`creator_id`) REFERENCES `auth_user` (`id`);
ALTER TABLE `questions_question` ADD CONSTRAINT `updated_by_id_refs_id_723e3a28` FOREIGN KEY (`updated_by_id`) REFERENCES `auth_user` (`id`);
ALTER TABLE `questions_question` ADD CONSTRAINT `forum_id_refs_id_334b13f3` FOREIGN KEY (`forum_id`) REFERENCES `questions_questionforum` (`id`);
CREATE TABLE `questions_questionmetadata` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`question_id` integer NOT NULL,
`name` varchar(50) NOT NULL,
`value` longtext NOT NULL
) ENGINE=InnoDB CHARSET=utf8
;
ALTER TABLE `questions_questionmetadata` ADD CONSTRAINT `question_id_refs_id_199b1870` FOREIGN KEY (`question_id`) REFERENCES `questions_question` (`id`);
CREATE TABLE `questions_answer` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`question_id` integer NOT NULL,
`creator_id` integer NOT NULL,
`created` datetime NOT NULL,
`content` longtext NOT NULL,
`updated` datetime,
`updated_by_id` integer,
`upvotes` integer NOT NULL
) ENGINE=InnoDB CHARSET=utf8
;
ALTER TABLE `questions_answer` ADD CONSTRAINT `creator_id_refs_id_30a2e948` FOREIGN KEY (`creator_id`) REFERENCES `auth_user` (`id`);
ALTER TABLE `questions_answer` ADD CONSTRAINT `updated_by_id_refs_id_30a2e948` FOREIGN KEY (`updated_by_id`) REFERENCES `auth_user` (`id`);
ALTER TABLE `questions_answer` ADD CONSTRAINT `question_id_refs_id_5dadc1b3` FOREIGN KEY (`question_id`) REFERENCES `questions_question` (`id`);
ALTER TABLE `questions_question` ADD CONSTRAINT `last_answer_id_refs_id_6a0465b3` FOREIGN KEY (`last_answer_id`) REFERENCES `questions_answer` (`id`);
CREATE INDEX `questions_question_forum_id` ON `questions_question` (`forum_id`);
CREATE INDEX `questions_question_creator_id` ON `questions_question` (`creator_id`);
CREATE INDEX `questions_question_created` ON `questions_question` (`created`);
CREATE INDEX `questions_question_updated` ON `questions_question` (`updated`);
CREATE INDEX `questions_question_updated_by_id` ON `questions_question` (`updated_by_id`);
CREATE INDEX `questions_question_last_answer_id` ON `questions_question` (`last_answer_id`);
CREATE INDEX `questions_question_num_answers` ON `questions_question` (`num_answers`);
CREATE INDEX `questions_question_status` ON `questions_question` (`status`);
CREATE INDEX `questions_questionmetadata_question_id` ON `questions_questionmetadata` (`question_id`);
CREATE INDEX `questions_questionmetadata_name` ON `questions_questionmetadata` (`name`);
CREATE INDEX `questions_answer_question_id` ON `questions_answer` (`question_id`);
CREATE INDEX `questions_answer_creator_id` ON `questions_answer` (`creator_id`);
CREATE INDEX `questions_answer_created` ON `questions_answer` (`created`);
CREATE INDEX `questions_answer_updated` ON `questions_answer` (`updated`);
CREATE INDEX `questions_answer_updated_by_id` ON `questions_answer` (`updated_by_id`);
CREATE INDEX `questions_answer_upvotes` ON `questions_answer` (`upvotes`);
COMMIT;
1 change: 1 addition & 0 deletions settings.py
Expand Up @@ -167,6 +167,7 @@
'celery',
'notifications',
'identicons',
'questions',
)

# Extra apps for testing
Expand Down

0 comments on commit fe112ea

Please sign in to comment.