From 1c7ba35aebf1305c5db14533d377a0d520f99909 Mon Sep 17 00:00:00 2001 From: Ed Summers Date: Sun, 20 Nov 2011 22:51:20 -0500 Subject: [PATCH] added readme --- .gitignore | 2 ++ README.md | 5 +++++ __init__.py | 0 jobs/models.py | 20 +++++++++++++++++++- jobs/tests.py | 10 +++++----- 5 files changed, 31 insertions(+), 6 deletions(-) create mode 100644 README.md create mode 100644 __init__.py diff --git a/.gitignore b/.gitignore index 449b550..055a648 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ mboxes/* *.pyc +settings.py +*.db diff --git a/README.md b/README.md new file mode 100644 index 0000000..eea5117 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +jobs4lib +-------- + +A django app that collects job announcements from the code4lib discussion +list and puts them on the Web. diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/jobs/models.py b/jobs/models.py index 39a7800..9370056 100644 --- a/jobs/models.py +++ b/jobs/models.py @@ -9,7 +9,13 @@ from django.db import models +class EmailKeyword(models.Model): + created = models.DateTimeField(auto_now_add=True) + name = models.CharField(max_length=255) + emails = models.ManyToManyField('JobEmail', related_name='keywords') + class JobEmail(models.Model): + created = models.DateTimeField(auto_now_add=True) from_name = models.CharField(max_length=255) from_address = models.CharField(max_length=255) from_domain = models.CharField(max_length=255) @@ -38,7 +44,6 @@ def tags(self): words = nltk.word_tokenize(self.body) return nltk.pos_tag(words) - @classmethod def new_from_msg(klass, msg): if not is_job(msg): @@ -63,6 +68,19 @@ def new_from_msg(klass, msg): return None e.save() + + # add keywords + for n in e.proper_nouns(): + n = n.lower() + try: + kw = EmailKeyword.objects.get(name=n) + kw.emails.add(e) + kw.save() + except EmailKeyword.DoesNotExist: + kw = EmailKeyword.objects.create(name=n) + kw.emails.add(e) + kw.save() + return e def normalize_name(name): diff --git a/jobs/tests.py b/jobs/tests.py index a39e0d4..bca2f88 100644 --- a/jobs/tests.py +++ b/jobs/tests.py @@ -5,6 +5,9 @@ class JobsTests(unittest.TestCase): + def setUp(self): + JobEmail.objects.all().delete() + def test_email(self): msg = email.message_from_file(open("test-data/job-email")) e = JobEmail.new_from_msg(msg) @@ -14,8 +17,5 @@ def test_email(self): self.assertEqual(e.subject, '[CODE4LIB] Job Posting: Head of Web & Emerging Technologies, University of Miami - revised') self.assertTrue('collaborates' in e.body) self.assertTrue(e.message_id, '<7933CD19EEFCC94392323A994F6F1EDF01DBB52AE8@MBX03.cgcent.miami.edu>') - - def test_tagging(self): - msg = email.message_from_file(open("test-data/job-email")) - e = JobEmail.new_from_msg(msg) - print e.tags() + keywords = [kw.name for kw in e.keywords.all()] + self.assertTrue('drupal' in keywords)