Esempio n. 1
0
  def testCreateDocumentNoDashboardVisibility(self):
    user = profile_utils.seedNDBUser(host_for=[self.program])
    profile_utils.loginNDB(user)

    url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name()
    response = self.get(url)
    self.assertResponseOK(response)
    self.assertGSoCTemplatesUsed(response)
    self.assertTemplateUsed(response, 'modules/gsoc/document/base.html')
    self.assertTemplateUsed(response, 'modules/gsoc/_form.html')

    # test POST
    override = {
        'prefix': 'gsoc_program', 'scope': self.gsoc, 'link_id': 'doc',
        'key_name': DocumentKeyNameProvider(),
        'modified_by': user.key.to_old_key(),
        'home_for': None,
        'author': user.key.to_old_key(), 'is_featured': None,
        'write_access': 'admin', 'read_access': 'public',
        'dashboard_visibility': [],
    }
    properties = seeder_logic.seed_properties(Document, properties=override)
    response = self.post(url, properties)
    self.assertResponseRedirect(response, url)

    key_name = properties['key_name']
    document = Document.get_by_key_name(key_name)
    self.assertEqual(document.key().name(), key_name)
Esempio n. 2
0
    def testCreateDocumentWithDashboardVisibility(self):
        url = "/gci/document/edit/gci_program/%s/doc" % self.gci.key().name()
        response = self.get(url)
        self.assertGCITemplatesUsed(response)
        self.assertTemplateUsed(response, "modules/gci/document/base.html")
        self.assertTemplateUsed(response, "modules/gci/_form.html")

        # test POST
        key_name = string_provider.DocumentKeyNameProvider()
        override = {
            "prefix": "gci_program",
            "scope": self.gci,
            "link_id": "doc",
            "key_name": key_name,
            "modified_by": self.user.key.to_old_key(),
            "home_for": None,
            "author": self.user.key.to_old_key(),
            "is_featured": None,
            "write_access": "admin",
            "read_access": "public",
            "dashboard_visibility": ["student", "mentor"],
        }
        properties = seeder_logic.seed_properties(Document, properties=override)
        response = self.post(url, properties)
        self.assertResponseRedirect(response, url)

        key_name = properties["key_name"]
        document = Document.get_by_key_name(key_name)

        self.assertEqual(document.scope.key(), self.gci.key())
        self.assertEqual(document.link_id, "doc")
        self.assertEqual(document.key().name(), key_name)
        self.assertIn("student", document.dashboard_visibility)
        self.assertIn("mentor", document.dashboard_visibility)
Esempio n. 3
0
    def testCreateDocument(self):
        self.data.createHost()
        url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name(
        )
        response = self.get(url)
        self.assertGSoCTemplatesUsed(response)
        self.assertTemplateUsed(response, 'v2/modules/gsoc/document/base.html')
        self.assertTemplateUsed(response, 'v2/modules/gsoc/_form.html')

        # test POST
        override = {
            'prefix': 'gsoc_program',
            'scope': self.gsoc,
            'link_id': 'doc',
            'key_name': DocumentKeyNameProvider(),
            'modified_by': self.data.user,
            'home_for': None,
            'author': self.data.user,
            'is_featured': None,
            'write_access': 'admin',
            'read_access': 'public',
        }
        properties = seeder_logic.seed_properties(Document,
                                                  properties=override)
        response = self.post(url, properties)
        self.assertResponseRedirect(response, url)

        key_name = properties['key_name']
        document = Document.get_by_key_name(key_name)
        self.assertPropertiesEqual(properties, document)
Esempio n. 4
0
    def testCreateDocumentNoDashboardVisibility(self):
        user = profile_utils.seedNDBUser(host_for=[self.program])
        profile_utils.loginNDB(user)

        url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name(
        )
        response = self.get(url)
        self.assertResponseOK(response)
        self.assertGSoCTemplatesUsed(response)
        self.assertTemplateUsed(response, 'modules/gsoc/document/base.html')
        self.assertTemplateUsed(response, 'modules/gsoc/_form.html')

        # test POST
        override = {
            'prefix': 'gsoc_program',
            'scope': self.gsoc,
            'link_id': 'doc',
            'key_name': DocumentKeyNameProvider(),
            'modified_by': user.key.to_old_key(),
            'home_for': None,
            'author': user.key.to_old_key(),
            'is_featured': None,
            'write_access': 'admin',
            'read_access': 'public',
            'dashboard_visibility': [],
        }
        properties = seeder_logic.seed_properties(Document,
                                                  properties=override)
        response = self.post(url, properties)
        self.assertResponseRedirect(response, url)

        key_name = properties['key_name']
        document = Document.get_by_key_name(key_name)
        self.assertEqual(document.key().name(), key_name)
Esempio n. 5
0
  def documentKeyNameFromKwargs(self):
    """Returns the document key fields from kwargs.

    Returns False if not all fields were supplied/consumed.
    """
    from soc.models.document import Document

    fields = []
    kwargs = self.data.kwargs.copy()

    prefix = kwargs.pop('prefix', None)
    fields.append(prefix)

    if prefix in ['gsoc_program', 'gsoc_org', 'gci_program', 'gci_org']:
      fields.append(kwargs.pop('sponsor', None))
      fields.append(kwargs.pop('program', None))

    if prefix in ['gsoc_org', 'gci_org']:
      fields.append(kwargs.pop('organization', None))

    fields.append(kwargs.pop('document', None))

    if any(kwargs.values()):
      raise BadRequest("Unexpected value for document url")

    if not all(fields):
      raise BadRequest("Missing value for document url")

    self.data.scope_path = '/'.join(fields[1:-1])
    self.data.key_name = '/'.join(fields)
    self.data.document = Document.get_by_key_name(self.data.key_name)
Esempio n. 6
0
  def testCreateDocument(self):
    self.data.createHost()
    url = '/gsoc/document/edit/gsoc_program/%s/doc' % self.gsoc.key().name()
    response = self.get(url)
    self.assertGSoCTemplatesUsed(response)
    self.assertTemplateUsed(response, 'v2/modules/gsoc/document/base.html')
    self.assertTemplateUsed(response, 'v2/modules/gsoc/_form.html')

    # test POST
    override = {
        'prefix': 'gsoc_program', 'scope': self.gsoc, 'link_id': 'doc',
        'key_name': DocumentKeyNameProvider(), 'modified_by': self.data.user,
        'home_for': None, 'author': self.data.user, 'is_featured': None,
        'write_access': 'admin', 'read_access': 'public',
    }
    properties = seeder_logic.seed_properties(Document, properties=override)
    response = self.post(url, properties)
    self.assertResponseRedirect(response, url)

    key_name = properties['key_name']
    document = Document.get_by_key_name(key_name)
    self.assertPropertiesEqual(properties, document)
Esempio n. 7
0
    def documentKeyNameFromKwargs(self):
        """Returns the document key fields from kwargs.

    Returns False if not all fields were supplied/consumed.
    """
        from soc.models.document import Document

        fields = []
        kwargs = self.data.kwargs.copy()

        prefix = kwargs.pop('prefix', None)
        fields.append(prefix)

        if prefix in ['site', 'user']:
            fields.append(kwargs.pop('scope', None))

        if prefix in ['sponsor', 'gsoc_program', 'gsoc_org']:
            fields.append(kwargs.pop('sponsor', None))

        if prefix in ['gsoc_program', 'gsoc_org']:
            fields.append(kwargs.pop('program', None))

        if prefix in ['gsoc_org']:
            fields.append(kwargs.pop('organization', None))

        fields.append(kwargs.pop('document', None))

        if any(kwargs.values()):
            raise BadRequest("Unexpected value for document url")

        if not all(fields):
            raise BadRequest("Missing value for document url")

        self.data.scope_path = '/'.join(fields[1:-1])
        self.data.key_name = '/'.join(fields)
        self.data.document = Document.get_by_key_name(self.data.key_name)