def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.DATA) if serializer.is_valid(): # this call consumes a lot of queries and time self.pre_save(serializer.object) self.object = serializer.save() # update the person and roles models.setMaterialPersons(self.object.id, request.DATA) # correct modified time to now self.object.modified = datetime.utcnow() # add the attached image manually self.object.image = request.FILES.get('image', None) self.object.save() # next, add all other files submitted material_id = self.object.material_id material_version = self.object.version for key in request.FILES.keys(): if key == 'image': continue mfile = models.MaterialFile() mfile.material_id = material_id mfile.version = material_version file_content = request.FILES.get(key, None) mfile.mfile = file_content #mfile.mfile.close() mfile.name = request.FILES[key].name mfile.description = request.DATA.get(key+'_description', '') mfile.mime_type = mimetypes.guess_type( os.path.realpath(mfile.mfile.name))[0] or '' mfile.save() # add original record if having if request.DATA.get('original_id', ''): orgid = models.OriginalID() orgid.material_id = material_id orgid.original_id = request.DATA.get('original_id') orgid.save() # (module/collection) create the zip package and post to vpt try: if not request.DATA.get('export_later', 0): requestMaterialPDF(self.object) except: pass return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def requestAllPDFs(): mids = getAllMaterialIDs() count = 1 for mid in mids: try: print '[%d/%d] Exporting material %s...' % (count, len(mids), mid) material = Material.objects.get(material_id=mid) requestMaterialPDF(material) count += 1 except: print 'Failed by unknown error... sorry.' print 'All is done. Congrats!'
def put(self, request, *args, **kwargs): """ Check in a material """ try: serializer = self.get_serializer(data=request.DATA) response = None if serializer.is_valid(): # check if valid editor or new material will be created sobj = serializer.object sobj.material_id = material_id = kwargs['mid'] # special update or checkin? if request.GET.get('magic-update', None): sobj.version = current_version = int(kwargs['version']) res = models.deleteMaterial(material_id, current_version) if not res: raise # 404 else: last_version = models.getMaterialLatestVersion(sobj.material_id) try: sobj.version = last_version + 1 except AttributeError: sobj.version = 1 self.pre_save(sobj) self.object = serializer.save() # update the person and roles models.setMaterialPersons(self.object.id, request.DATA) # add the attached image manually self.object.image = request.FILES.get('image', None) self.object.save() # next, add all other files submitted material_id = self.object.material_id material_version = self.object.version for key in request.FILES.keys(): if key == 'image': continue mfile = models.MaterialFile() mfile.material_id = material_id mfile.version = material_version file_content = request.FILES.get(key, None) mfile.mfile = file_content mfile.name = request.FILES[key].name mfile.description = request.DATA.get(key+'_description', '') mfile.mime_type = mimetypes.guess_type( os.path.realpath(mfile.mfile.name))[0] or '' mfile.save() # (module/collection) create the zip package and post to vpt try: if not request.DATA.get('export-later', 0): requestMaterialPDF(self.object) except: pass response = Response(serializer.data, status=status.HTTP_201_CREATED) else: response = Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) return response except: raise404(request)