From b7ad384456cf483b0ec91916e3828cf904519fed Mon Sep 17 00:00:00 2001 From: sanj Date: Fri, 23 Jul 2010 16:10:21 +0530 Subject: [PATCH] uglyish code --- edgware/files/models.py | 38 +++++++++++++++++++++++++++++++++++- edgware/settings.py | 1 + edgware/utils/parse_drive.py | 6 ++++-- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/edgware/files/models.py b/edgware/files/models.py index aad8b85..3a927f9 100755 --- a/edgware/files/models.py +++ b/edgware/files/models.py @@ -1,7 +1,8 @@ from django.db import models from tagging.fields import TagField +from oxdjango.fields import DictField from tagging.models import Tag -from django.contrib.auth.models import User +from django.contrib.auth.models import User, Group, Permission import os from convert import convertFile from django.db.models.signals import post_save @@ -24,6 +25,37 @@ MIME_TYPES = ( ('hid', 'Hidden'), ) +class Folder(models.Model): + name = models.CharField(max_length=1024) + relative_path = models.CharField(max_length=2048) + parent = models.ForeignKey("Folder") + category = models.ForeignKey("Category") + + def get_full_path(self): + return join(UPLOAD_ROOT, category.folder_name, parent. + + def get_children(self): + return Folder.objects.filter(parent=self) + + def has_parent(self): + if self.name == self.category.folder_name: + return False + else: + return True + + def get_files(self): + return File.objects.filter(folder=self) + + def get_dict(self): + return { + 'files': self.get_files(), + 'folders': self.get_children(), + 'parent': self.parent, + 'name': self.name, + 'fullPath': self.fullPath + } + + class File(models.Model): file = models.FileField('File', upload_to='files') title = models.CharField(max_length=255) @@ -34,6 +66,8 @@ class File(models.Model): added = models.DateField("Date Added", auto_now_add=True) categories = models.ManyToManyField('Category', verbose_name='Studies') type = models.ForeignKey('Type', verbose_name='File Type') + folder = models.ForeignKey("Folder") + info = DictField(blank=True, null=True) def __unicode__(self): return self.title @@ -49,6 +83,8 @@ class File(models.Model): class Category(models.Model): name = models.CharField(max_length=255) + groups = models.ManyToManyField(Group, null=True) + folder_name = models.CharField(max_length=512) def __unicode__(self): return self.name diff --git a/edgware/settings.py b/edgware/settings.py index 25a9de4..e97fe19 100644 --- a/edgware/settings.py +++ b/edgware/settings.py @@ -48,6 +48,7 @@ USE_I18N = True # Absolute path to the directory that holds media. # Example: "/home/media/media.lawrence.com/" MEDIA_ROOT = join(PROJECT_PATH, 'static') +UPLOAD_ROOT = join(MEDIA_ROOT, 'media', 'studies') # URL that handles the media served from MEDIA_ROOT. Make sure to use a # trailing slash if there is a path component (optional in other cases). diff --git a/edgware/utils/parse_drive.py b/edgware/utils/parse_drive.py index e685454..053ca24 100644 --- a/edgware/utils/parse_drive.py +++ b/edgware/utils/parse_drive.py @@ -1,5 +1,6 @@ import os import shutil +from add_file import addFile def isVideo(path): basename, ext = os.path.splitext(path) @@ -15,7 +16,7 @@ def isAudio(path): else: return False -def spider(path, fn): +def spider(path, fn, **kwargs): # path = self.archives()[archive] path = os.path.normpath(path) for dirpath, dirnames, filenames in os.walk(path): @@ -24,7 +25,7 @@ def spider(path, fn): for filename in filenames: if not filename.startswith('._') and not filename in ('.DS_Store', ): # print dirpath + " + " + filename - fn(dirpath, filename) + fn(dirpath, filename, kwargs) def mvFile(dirpath, filename): path = os.path.join(dirpath, filename) @@ -61,4 +62,5 @@ def encodeAudio(path): print cmd os.system(cmd) return True +