from plug_manager_template import create_plug from rboxfileplug import FileManager from models import RboxFileConnector from rboxsinglefileplug import SingleFileManagerDescriptor from south.modelsinspector import add_introspection_rules class ResumeFileManagerDescriptor(SingleFileManagerDescriptor): """ A modified version of SingleFileManagerDescriptor for resumes """ pass RboxResumeFilePlug = create_plug(manager=FileManager, descriptor_cls=ResumeFileManagerDescriptor, to=RboxFileConnector) rboxresumefileplug_introspection_rules = [((RboxResumeFilePlug,),[],{"field_identifier": ["field_identifier",{}],},)] add_introspection_rules(rboxresumefileplug_introspection_rules, ["filemanager.models.RboxSingleFilePlug"])
try: rboxfile_connector = RboxFileConnector.objects.get(rbox_file=rbox_file, content_type=self.content_type, object_id=self.instance.id, file_field_identifier=self.field_identifier) rboxfile_connector.delete() except RboxFileConnector.DoesNotExist: pass return def get(self, **kwargs): if self.max_count == 1: try: return self.all()[0] except IndexError: return None else: try: return super(FileManager,self).get(**kwargs) except RboxFile.DoesNotExist: raise FileManager.FileDoesNotExist def delete(self, **kwargs): raise AttributeError("'FileManager' object has no attribute 'delete'") RboxFilePlug = create_plug(manager=FileManager, to=RboxFileConnector) rboxfileplug_introspection_rules = [((RboxFilePlug,),[],{"field_identifier": ["field_identifier",{}],},)] add_introspection_rules(rboxfileplug_introspection_rules, ["filemanager.models.RboxFilePlug"])
self.max_count = max_count self.manager_kwargs = manager_kwargs def __get__(self, instance, instance_type=None, return_manager=False): manager = super(SingleFileManagerDescriptor, self).__get__(instance, instance_type=None) if return_manager: return manager try: return manager.all()[0] except IndexError: return None def __set__(self, instance, value): if instance is None: raise AttributeError("Manager must be accessed via instance") if not isinstance(value, RboxFile): raise TypeError("Only accepts a RboxFile object") manager = self.__get__(instance, return_manager=True) manager.remove(manager.all()[0]) manager.add(value) RboxSingleFilePlug = create_plug(manager=FileManager, descriptor_cls=SingleFileManagerDescriptor, to=RboxFileConnector) rboxsinglefileplug_introspection_rules = [((RboxSingleFilePlug,),[],{"field_identifier": ["field_identifier",{}],},)] add_introspection_rules(rboxsinglefileplug_introspection_rules, ["filemanager.models.RboxSingleFilePlug"])