Esempio n. 1
0
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
Esempio n. 2
0
    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()
Esempio n. 3
0
    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.')
Esempio n. 4
0
    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()
Esempio n. 5
0
    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()
Esempio n. 6
0
    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.')
Esempio n. 7
0
    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.')
Esempio n. 8
0
 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)
Esempio n. 9
0
 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)
Esempio n. 10
0
 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)
Esempio n. 11
0
    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
        })
Esempio n. 12
0
    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)
Esempio n. 13
0
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)
Esempio n. 14
0
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()