3 # Copyright (C) 2012 FinalsClub Foundation
6 Models for the notes django app.
7 Contains only the minimum for handling files and their representation
12 from django.db import models
13 from taggit.managers import TaggableManager
15 from karmaworld.apps.courses.models import Course
17 class Note(models.Model):
18 """ A django model representing an uploaded file and associated metadata.
22 ('doc', 'MS Word compatible file (.doc, .docx, .rtf, .odf)'),
23 ('img', 'Scan or picture of notes'),
25 (UNKNOWN_FILE, 'Unknown file'),
28 course = models.ForeignKey(Course)
30 tags = TaggableManager()
32 name = models.CharField(max_length=255, blank=True, null=True)
33 desc = models.TextField(max_length=511, blank=True, null=True)
34 uploaded_at = models.DateTimeField(null=True, default=datetime.datetime.utcnow)
36 file_type = models.CharField(max_length=15, blank=True, null=True, choices=FILE_TYPE_CHOICES, default=UNKNOWN_FILE)
37 # Upload files to MEDIA_ROOT/notes/YEAR/MONTH/DAY, 2012/10/30/filename
38 note_file = models.FileField(upload_to="notes/%Y/%m/%j/", blank=True, null=True)
40 ## post gdrive conversion data
41 embed_url = models.URLField(max_length=1024, blank=True, null=True)
42 download_url = models.URLField(max_length=1024, blank=True, null=True)
43 # for word processor documents
44 html = models.TextField(blank=True, null=True)
45 text = models.TextField(blank=True, null=True)
47 # FIXME: Not Implemented
48 #uploader = models.ForeignKey(User, blank=True, null=True, related_name='notes')
49 #course = models.ForeignKey(Course, blank=True, null=True, related_name="files")
50 #school = models.ForeignKey(School, blank=True, null=True)
52 def __unicode__(self):
53 return u"{0}: {1} -- {2}".format(self.file_type, self.name, self.uploaded_at)
55 def save(self, *args, **kwargs):
56 """ override built-in save to ensure contextual self.name """
57 # TODO: If self.name isn't set, generate one based on uploaded_name
58 # if we fail to set the Note.name earlier than this, use the saved filename
61 super(Note, self).save(*args, **kwargs)