parent
97e8f076f6
commit
aad19db4db
|
|
@ -113,6 +113,26 @@ const mockGraphqlOps = (options) => {
|
||||||
cy.get('@mockGraphqlOps').invoke('setOperations' as any, options);
|
cy.get('@mockGraphqlOps').invoke('setOperations' as any, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const login = (username: string, password: string, visitLogin = false) => {
|
||||||
|
if (visitLogin) {
|
||||||
|
cy.visit('/beta-login');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (username !== '') {
|
||||||
|
cy.get('[data-cy=email-input]').type(username);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (password !== '') {
|
||||||
|
cy.get('[data-cy=password-input]').type(password);
|
||||||
|
}
|
||||||
|
cy.get('[data-cy=login-button]').click();
|
||||||
|
};
|
||||||
|
|
||||||
|
const fakeLogin = () => {
|
||||||
|
cy.log('Logging in (fake)');
|
||||||
|
cy.setCookie('loginStatus', 'true');
|
||||||
|
};
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
namespace Cypress {
|
namespace Cypress {
|
||||||
interface Chainable {
|
interface Chainable {
|
||||||
|
|
@ -136,9 +156,9 @@ declare global {
|
||||||
|
|
||||||
selectClass(schoolClass: string): void;
|
selectClass(schoolClass: string): void;
|
||||||
|
|
||||||
login(username: string, password: string, visitLogin?: boolean): void;
|
login: typeof login;
|
||||||
|
|
||||||
fakeLogin(username: string, password: string): void;
|
fakeLogin: typeof fakeLogin;
|
||||||
|
|
||||||
isSubmissionReadOnly(myText: string): void;
|
isSubmissionReadOnly(myText: string): void;
|
||||||
|
|
||||||
|
|
@ -180,20 +200,7 @@ Cypress.Commands.add('apolloLogin', (username, password) => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// todo: replace with apollo call
|
// todo: replace with apollo call
|
||||||
Cypress.Commands.add('login', (username, password, visitLogin = false) => {
|
Cypress.Commands.add('login', login);
|
||||||
if (visitLogin) {
|
|
||||||
cy.visit('/beta-login');
|
|
||||||
}
|
|
||||||
|
|
||||||
if (username !== '') {
|
|
||||||
cy.get('[data-cy=email-input]').type(username);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (password !== '') {
|
|
||||||
cy.get('[data-cy=password-input]').type(password);
|
|
||||||
}
|
|
||||||
cy.get('[data-cy=login-button]').click();
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add('getByDataCy', getByDataCy);
|
Cypress.Commands.add('getByDataCy', getByDataCy);
|
||||||
|
|
||||||
|
|
@ -203,10 +210,7 @@ Cypress.Commands.add('selectClass', (schoolClass) => {
|
||||||
cy.getByDataCy('class-selection-entry').contains(schoolClass).click();
|
cy.getByDataCy('class-selection-entry').contains(schoolClass).click();
|
||||||
});
|
});
|
||||||
|
|
||||||
Cypress.Commands.add('fakeLogin', () => {
|
Cypress.Commands.add('fakeLogin', fakeLogin);
|
||||||
cy.log('Logging in (fake)');
|
|
||||||
cy.setCookie('loginStatus', 'true');
|
|
||||||
});
|
|
||||||
|
|
||||||
Cypress.Commands.add('isSubmissionReadOnly', (myText) => {
|
Cypress.Commands.add('isSubmissionReadOnly', (myText) => {
|
||||||
cy.get('.submission-form__textarea--readonly').as('textarea');
|
cy.get('.submission-form__textarea--readonly').as('textarea');
|
||||||
|
|
|
||||||
|
|
@ -137,9 +137,11 @@ class ContentBlock(StrictHierarchyPage, GraphqlNodeMixin):
|
||||||
)
|
)
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
# todo: move this to the after_create_page and after_edit_page hooks, and remove from here.
|
||||||
for data in self.contents.raw_data:
|
for data in self.contents.raw_data:
|
||||||
block_type, value = get_type_and_value(data)
|
block_type, value = get_type_and_value(data)
|
||||||
|
|
||||||
|
# todo: also do the same for assignments
|
||||||
if block_type == "survey":
|
if block_type == "survey":
|
||||||
module = self.module
|
module = self.module
|
||||||
survey = value["survey_id"]
|
survey = value["survey_id"]
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,9 @@ from wagtail import hooks
|
||||||
|
|
||||||
from basicknowledge.models import BasicKnowledge
|
from basicknowledge.models import BasicKnowledge
|
||||||
from books.models import ContentBlockSnapshot
|
from books.models import ContentBlockSnapshot
|
||||||
|
from core.logger import get_logger
|
||||||
|
|
||||||
|
logger = get_logger(__name__)
|
||||||
|
|
||||||
|
|
||||||
# 1. Use the register_rich_text_features hook.
|
# 1. Use the register_rich_text_features hook.
|
||||||
|
|
@ -88,3 +91,17 @@ def register_secondary_feature(features):
|
||||||
@hooks.register('construct_explorer_page_queryset')
|
@hooks.register('construct_explorer_page_queryset')
|
||||||
def remove_page_types_from_menu(parent_page, pages, request):
|
def remove_page_types_from_menu(parent_page, pages, request):
|
||||||
return pages.not_type(ContentBlockSnapshot).not_type(BasicKnowledge).exclude(contentblock__user_created=True)
|
return pages.not_type(ContentBlockSnapshot).not_type(BasicKnowledge).exclude(contentblock__user_created=True)
|
||||||
|
|
||||||
|
@hooks.register('after_copy_page')
|
||||||
|
def after_copy_hook(request, page, new_page):
|
||||||
|
# todo: find every ContentBlock further down in the tree, see if there are any Surveys or Assignments and copy them and reassign them
|
||||||
|
logger.debug(f'After copy page {page.title}, {new_page.title}')
|
||||||
|
|
||||||
|
@hooks.register('after_edit_page')
|
||||||
|
def after_edit_hook(request, page):
|
||||||
|
logger.debug(f'After edit page {page.title}, {type(page).__name__}')
|
||||||
|
|
||||||
|
@hooks.register('after_create_page')
|
||||||
|
def after_create_hook(request, page):
|
||||||
|
logger.debug(f'After create page {page.title}')
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue