def create_revision( owner, template, title, content, bibliography, images, comments, submission_id, revision_version, ): revision = Document() revision.owner = owner revision.template = template revision.title = title revision.content = content revision.bibliography = bibliography revision.path = f"/Submission {submission_id}/{title.replace('/', '')} ({revision_version})" revision.comments = comments revision.save() for image in images: if image is None: image = Image() image.uploader = owner f = open( path.join(settings.PROJECT_PATH, "base/static/img/error.png") ) image.image.save("error.png", File(f)) image.save() DocumentImage.objects.create(document=revision, image=image, title="") return revision
def test_title_is_mandatory(self): document = Document(description='test_description', body='test_body', user=self.test_user) with self.assertRaises(ValidationError): document.full_clean()
def test_body_is_not_mandatory(self): document = Document(title='test_title', description='test_description', user=self.test_user) try: document.full_clean() except ValidationError: self.fail('Document is not correct.')
def test_description_max_length(self): description_max_length = Document.description.field.max_length self.assertEqual(description_max_length, 100) description = 'a' * 101 document = Document(title='test_title', description=description, body='test_body', user=self.test_user) with self.assertRaises(ValidationError): document.full_clean()
def test_title_max_length(self): title_max_length = Document.title.field.max_length self.assertEqual(title_max_length, 50) title = 'a' * 51 document = Document(title=title, description='test_description', body='test_body', user=self.test_user) with self.assertRaises(ValidationError): document.full_clean()
def test_description_limit_max_length(self): description_max_length = Document.description.field.max_length self.assertEqual(description_max_length, 100) description = 'a' * 100 document = Document(title='test_title', description=description, body='test_body', user=self.test_user) try: document.full_clean() except ValidationError: self.fail('Document is not correct.')
def test_title_limit_max_length(self): title_max_length = Document.title.field.max_length self.assertEqual(title_max_length, 50) title = 'a' * 50 document = Document(title=title, description='test_description', body='test_body', user=self.test_user) try: document.full_clean() except ValidationError: self.fail('Document is not correct.')
def add_document(self, request, pk=None): concept = get_object_or_404(Concept, pk=pk) self.check_object_permissions(request, concept.group.course) serializer = DocumentSerializer(data=request.DATA) if serializer.is_valid(): document = Document(title=serializer.data['title'], description=serializer.data['description']) document.save() concept.playlist = typed_playlist.append(document.id, concept.playlist, 2) concept.pages.add(document) concept.save() return Response(document.to_dict()) else: content = serializer.errors return Response(content, status.HTTP_400_BAD_REQUEST)
def add_page(self, request, pk=None): _course = get_object_or_404(Course, pk=pk) self.check_object_permissions(request, _course) serializer = DocumentSerializer(data=request.DATA) if serializer.is_valid(): document = Document(title=serializer.data['title'], is_heading=True, description=serializer.data['description']) document.save() _course.pages.add(document) _course.page_playlist = playlist.append(document.id, _course.page_playlist) _course.save() return Response(DocumentSerializer(document).data) else: content = serializer.errors return Response(content, status.HTTP_400_BAD_REQUEST)
def add_concept(self, request, pk=None): group = get_object_or_404(Group, pk=pk) self.check_object_permissions(request, group.course) serializer = ConceptSerializer(data=request.DATA) if serializer.is_valid(): document = Document(title='dummy', description='dummy') document.save() concept = Concept(group=group, title_document=document, title=serializer.data['title'], description=serializer.data['description']) if request.FILES != {}: concept.image = request.FILES['image'] concept.save() group.playlist = playlist.append(concept.id, group.playlist) group.save() return Response(ConceptSerializer(concept).data) else: content = serializer.errors return Response(content, status.HTTP_400_BAD_REQUEST)
def post(self, request, key): #create document doc = Document(owner=self.request.user, last_update_user=self.request.user) doc.save() #create document attachment fs = get_object_or_404(FileStorage, key=key) attach = DocumentAttach(document=doc, file=fs) attach.save() #save to rebuild index doc.save() #send signal signals.post_attach_file.send(sender=self.__class__, file=fs, document=doc, user=self.request.user) return self.render_to_response({ "document_id": doc.id, "filestorage_id": attach.id })
def author_first_submit(self): # The document is not part of an existing submission. journal_id = self.get_argument('journal_id') self.submission = Submission() self.submission.submitter = self.user self.submission.journal_id = journal_id self.submission.save() self.revision = SubmissionRevision() self.revision.submission = self.submission self.revision.version = "1.0.0" version = "1.0.0" # Connect a new document to the submission. title = self.get_argument('title') abstract = self.get_argument('abstract') contents = self.get_argument('contents') bibliography = self.get_argument('bibliography') image_ids = list( filter(None, self.get_argument('image_ids').split(','))) document = Document() journal = Journal.objects.get(id=journal_id) document.owner = journal.editor document.title = title document.contents = contents document.bibliography = bibliography document.save() for id in image_ids: image = Image.objects.filter(id=id).first() if image is None: image = Image() image.pk = id image.uploader = journal.editor f = open( os.path.join(settings.PROJECT_PATH, "base/static/img/error.png")) image.image.save('error.png', File(f)) image.save() DocumentImage.objects.create(document=document, image=image, title='') self.revision.document = document self.revision.save() fidus_url = '{protocol}://{host}'.format( protocol=self.request.protocol, host=self.request.host) post_data = { 'username': self.user.username.encode('utf8'), 'title': title.encode('utf8'), 'abstract': abstract.encode('utf8'), 'first_name': self.get_argument('firstname').encode('utf8'), 'last_name': self.get_argument('lastname').encode('utf8'), 'email': self.user.email.encode('utf8'), 'affiliation': self.get_argument('affiliation').encode('utf8'), 'author_url': self.get_argument('author_url').encode('utf8'), 'journal_id': journal.ojs_jid, 'fidus_url': fidus_url, 'fidus_id': self.submission.id, 'version': version } body = urlencode(post_data) key = journal.ojs_key base_url = journal.ojs_url url = base_url + self.plugin_path + 'authorSubmit' http = AsyncHTTPClient() http.fetch(HTTPRequest(url_concat(url, {'key': key}), 'POST', None, body), callback=self.on_author_first_submit_response)
docs = bd.entries pro = Project(name="deep learning study", description="this is project is used for deep learning study") pro.save() for doc in docs: if "title" in doc: title = doc['title'].replace("{", "").replace("}", "") try: document = Document.objects.get(title=title) print "sucess" except: print "except" # exit() document = Document(title=title) if "author" in doc: authors_s = doc['author'].split("and") authors = [] for author_s in authors_s: author_s = author_s.strip().replace("{", "").replace("}", "") names = author_s.split(", ") last_name = names[0] if len(names) > 1: first_name = names[1] try: author = Author.objects.get(last_name=last_name, first_name=first_name) except: author = Author(last_name=last_name, first_name=first_name)
def create_document(file_id=None, text=None, user=None): data = dict(processed_text=text, file_id=file_id, author=user) document = Document(**data) document.save()