Git Product home page Git Product logo

nau-wp-sync's Introduction

DataSync - MySQL+MongoDB -> WordPress

Usage

  • Setup a Virtual Environment
  • Set the "config.ini" file based on the "config.init.sample".
  • Execute "report.py"

Activate virtual environment and install its dependencies

virtualenv venv --python=python3
source venv/bin/activate
python -m pip install -r requirements.txt --upgrade

Set the "config.ini" file based on the "config.init.sample".

cp config.sample.yml config.yml
vi config.yml

Execute "sync.py"

python sync.py

Opções

python sync.py [-t] [-c|--config <config.yml>] [-d|--debug <level>] [-i|--course <course-id>] -e|environment <environment>
  • -e --environment
    • define o ambiente destino: "stage" ou "prod"
  • -d --debug
    • re-define o nível de logging: DEBUG, INFO, WARNING, CRITICAL, FATAL
  • -c --config
    • ficheiro de configuração. Por omissão, config.yml na pasta atual
  • -i --course
    • identifica um curso único para atualizar
  • -t
    • modo de teste - não aplica modificações no wordpress destino

Informação Adicional

Estrutura de acesso MongoDB do OpenEDX.

Conceitos:

  1. A collection “active_versions” tem os cursos ativos no momento
  2. A collection “structures” tem os cursos em histórico
  3. A collection “definitions” tem os objetos propriamente ditos

O passo de pesquisa é sempre:

  • Um curso é definido por:

    • Course
    • Org
    • run
  • Encontrar o curso em “active_versions”.

  • Seleccionar o “published-branch”

    • Iterar pelos “blocks”
    • O “block_type” indica que tipo de bloco é
    • O “definition” indica qual o objeto em “definitions” que tem este conteúdo
    • Finalmente é preciso consultar a collection “definitions” pesquisando pelo “_id” do objeto referenciado por block[“definition”]

    $ mongo admin -u admin -p --host rs0/localhost Enter password: <Put the value of variable MONGO_ADMIN_PASSWORD on the secure-nau-data repo>

    use edxapp

OR $ mongo edxapp -u edxapp -p Enter password: <Put the value of variable EDXAPP_MONGO_PASSWORD on the secure-nau-data repo>

Or using Mongo Compass: connection string like: ssh -L 27017:localhost:27017 mongo-database-machine mongodb://edxapp:*****@127.0.0.1:27017/edxapp?authSource=edxapp&readPreference=primary&appname=MongoDB%20Compass&ssl=false

To get the course language run:

    db.modulestore.active_versions.find({"course":"IVOSAND", "org":"FCT", "run":"2021_T2"}).forEach(
        function(obj) {        
            var published_id = obj["versions"]["published-branch"];
            struct_obj = db.modulestore.structures.find(published_id).forEach(
              function(obj) {
                  obj["blocks"].forEach(
                    function(block) {
                        if (block.fields.hasOwnProperty("language")) {
                            print( block.fields["language"] );
                        }
                    }
                  );
              }
            );
        }
    )

Este é um script mongodb que lista todos os objetos a colocar no Wordpress!

    db.modulestore.active_versions.find({"course":"IVOSAND", "org":"FCT", "run":"2021_T2"}).forEach(
        function(obj) {        
            var published_id = obj["versions"]["published-branch"];
            struct_obj = db.modulestore.structures.find(published_id).forEach(
              function(obj) {
                  obj["blocks"].forEach(
                    function(block) {
                        //if(block["block_type"]=="about") {
                            printjson( {
                                "block_id": block["block_id"],
                                //"edited_on": block["edit_info"]["edited_on"],
                                // "content_id": block["edit_info"]["source_version"],
                                "content": db.modulestore.definitions.findOne({"_id" : block["definition"]})["fields"]["data"],
                                // "block": block
                            } );
                        //}
                    }
                  );
              }
            );
        }
    )

O resultado é o seguinte:

    /* 1 */
    {
        "block_id" : "effort",
        "content" : "2 h/semana"
    }
     
    /* 2 */
    {
        "block_id" : "duration",
        "content" : ""
    }
     
    /* 3 */
    {
        "block_id" : "title",
        "content" : ""
    }
     
    /* 4 */
    {
        "block_id" : "about_sidebar_html",
        "content" : ""
    }
     
    /* 5 */
    {
        "block_id" : "short_description",
        "content" : "Este curso aborda, de forma introdutória, as normas de acessibilidade web e as estratégias para tornar acessíveis os formatos de conteúdo mais utilizados na web."
    }
     
    /* 6 */
    {
        "block_id" : "entrance_exam_id",
        "content" : ""
    }
     
    /* 7 */
    {
        "block_id" : "entrance_exam_minimum_score_pct",
        "content" : "50"
    }
     
    /* 8 */
    {
        "block_id" : "subtitle",
        "content" : ""
    }
     
    /* 9 */
    {
        "block_id" : "overview",
        "content" : "<section class=\"about\">\n  <h2>Sobre o curso</h2>\n  <p>O curso começa com uma introdução à regulamentação da acessibilidade web, fornecendo uma perspetiva histórica, quer no panorama mundial, quer em Portugal, e uma clarificação das diretrizes de acessibilidade para conteúdo web (WCAG). Segue-se o módulo que introduz a questão das interfaces, dos produtos ou tecnologias de apoio e as ferramentas para verificar o nível de conformidade com as WCAG 2.0 das páginas web. Os módulos seguintes abordam as estratégias para criar e disponibilizar conteúdo acessível nas páginas web, ou seja, imagem, texto e vídeo.</p>\n <p>Em cada módulo são apresentados desafios que permitem ao participante avaliar o seu nível de aprendizagem e refletir sobre o tema abordado em cada módulo.</p>\n <p>Os conteúdos e atividades propostas são acessíveis a tecnologias de apoio, permitindo a qualquer utilizador participar no curso.</p>\n  <p></p>\n  <h2>Contactos</h2>\n  <p>E-mail: [email protected].</p>\n  <p>Tel: (351) 244845052</p>\n</section>\n\n<section class=\"prerequisites\">\n  <h2>Pré-requisitos</h2>\n  <p>Este curso destina-se a qualquer pessoa que contribua com conteúdos para a web (em sites, redes sociais, blogs, email, etc.) ou com interesse na temática, sendo por isso fundamental estar familiarizado com o ambiente web.</p>\n</section>\n\n<section class=\"course-staff\">\n  <h2>Instrutores</h2>\n  <article class=\"teacher\">\n    <div class=\"teacher-image\" style=\"border:none;\">\n      <img src=\"/static/foto_manuela_francisco.png\" align=\"left\" style=\"margin:0 20 px 0\" alt=\"Foto de Manuela Francisco\">\n    </div>\n\n    <h3>Manuela Francisco</h3>\n    <p style=\"padding-left:131px;\">Doutorada em Educação a Distancia e eLearning, desenvolve investigação na área do eLearning acessível. É Designer Instrucional no Politécnico de Leiria, desde 2007. Foi docente na ESAD-FRESS e colabora com a Universidade Aberta em atividades de investigação e docência. Integra a equipa de revisão da versão portuguesa das WCAG e esteve envolvida em vários projetos europeus e grupos de trabalho nacionais.</p>\n  </article>\n  \n  <article class=\"teacher\">\n    <div class=\"teacher-image\" style=\"border:none;\">\n      <img src=\"/static/foto_sandro_costa.png\" align=\"left\" style=\"margin:0 20 px 0\" alt=\"Foto de Sabdro Costa\">\n    </div>\n\n    <h3>Sandro Costa</h3>\n    <p style=\"padding-left:131px;\">Licenciado em Comunicação e Multimedia e doutorando em Ciência e Tecnologia Web. Trabalha como Designer Multimedia na Unidade de Ensino a Distância do Politécnico de Leiria, desde 2008. Esteve envolvido em projetos europeus e nacionais como especialista multimédia. Ao nível da programação desenvolve sites, eBooks e plataformas acessíveis.</p>\n  </article>\n\n  <article class=\"teacher\">\n    <div class=\"teacher-image\" style=\"border:none;\">\n      <img src=\"/static/foto_formador_carina.jpg\" align=\"left\" style=\"margin:0 20 px 0\" alt=\"Foto de Carina Rodrigues\">\n    </div>\n\n    <h3>Carina Rodrigues</h3>\n    <p style=\"padding-left:131px;\">Mestre em Ciências da Educação na área de Educação de Adultos, a terminar o Doutoramento em Ensino a Distância e eLearning. É Designer Instrucional e formadora na Unidade de Ensino a Distância do Politécnico de Leiria, desde 2008. Esteve envolvida em projetos europeus e nacionais relacionados com a área da inovação social, competências digitais e estratégias de active learning, desenvolvendo investigação nestas áreas.</p>\n  </article>\n</section>\n\n"
    }
     
    /* 10 */
    {
        "block_id" : "entrance_exam_enabled",
        "content" : "false"
    }
     
    /* 11 */
    {
        "block_id" : "description",
        "content" : ""
    }

nau-wp-sync's People

Contributors

igobranco avatar racr-fccn avatar

Watchers

 avatar James Cloos avatar Fabricio avatar Rui Martins avatar Jhony Avella avatar Caio Nakai avatar  avatar

Forkers

kuyesu

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.