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)
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)
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)
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)
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)
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)
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)