class JalonConfigurationControlPanel(ControlPanelForm): label = _("Jalon Configuration") description = _("""Configuration de Jalon""") form_name = _("Jalon Configuration") form_fields = FormFieldsets(configAnalyticsset, configLDAPset, configDidacticielset, configMailErreurset, configLienset, configUnivset)
class JalonConfigControlPanel(ControlPanelForm): label = _("Jalon Content Config") description = _("""Configuration des contenus de Jalon""") form_name = _("Jalon Content Config") form_fields = FormFieldsets(configfichierset, configsonorisationset, configgwimsset, configexternesset, configglossaireset, configmajset)
class IJalonConfigUnivControlPanel(Interface): """ fields for jalon Université control panel """ etablissement = TextLine(title=_(u"Établissement de la plateforme"), default=_(u"Université de…"), required=False)
class IJalonConfigMailErreurControlPanel(Interface): """ fields for jalon mail_erreur control panel """ mail_erreur = TextLine( title=_(u"Adresse de réception des erreurs"), description=_(u"Adresse mail de réception des error_log"), required=True) activer_listeDiffusion = Bool( title=_(u"Activer les listes de diffusions"), description=_(u"Activer les listes de diffusions"), default=False, required=False) cible_listeDiffusion = Text( title=_(u"Éléments utilisant une liste de diffusions"), description=_(u"valeur possible : etape, ue, uel, groupe"), default= u"Liste des éléments utilisant les listes de diffusions, une valeur par ligne", required=False) mail_listeDiffusion = TextLine( title=_(u"Adresse des listes de diffusion"), description=_(u"Adresse des listes de diffusion"), default=_(u"@etablissement.com"), required=False)
class IJalonImportControlPanel(Interface): """ fields for jalon import control panel """ chemin_repertoire = Text( title=_(u"title_chemin_repertoire", default=u"Chemin du répertoire à importer"), description=_(u"description_chemin_repertoire", default=u"Exemple : /Plone/Members/"), default=u"/Plone/Members/", required=True)
class IJalonConfigDidacticielControlPanel(Interface): """ fields for jalon Didacticiels control panel """ didacticiel_plan_vide = Text( title=_(u"Didacticiel du plan interactif"), description= _(u"Didacticiel à afficher automatiquement lorsque le plan de cours est vide" ), default= u'La vidéo ci-dessous vous expliquera comment construire votre premier plan :\n <iframe style="max-width:853px;height:480px;width:100%" src="http://www.youtube.com/embed/Z10V-BMXuec?rel=0" frameborder="0" allowfullscreen="allowfullscreen"></iframe>', required=False)
class IJalonConfigWimsControlPanel(Interface): """fields for jalon Config Wims control panel.""" activer_wims = Bool( title=_(u"Activer la section Exercices Wims dans mon espace."), description= _(u"Cocher pour activer la section Exercices Wims dans mon espace, seulement possible si le produit jalon.wims est installé." ), default=False, required=False) wims_connecteur = TextLine( title=_(u"Identifiant du connecteur wims."), description= _(u"Pour la configuration par défaut de jalon.wims laisser portal_wims." ), default=u"portal_wims", required=False) wims = List( title=_(u"Exercices Wims : définition des étiquettes par défaut."), description=_(u"Exemple : le modèle des exercices Wims 'modele'"), value_type=TextLine(), default=[], required=False) wims_modele = List( title=_(u"Modèle Wims"), description= _(u"Lister ici les modèles (du Wims Connector) que vous souhaitez utiliser pour la création d'exercices dans 'Mon espace'. Format : 'id*-*Titre du Modele*-*Categorie' . Exemple : qcmsimple*-*Question simple*-*1 Modeles simples" ), value_type=TextLine(), default=[], required=False)
class IJalonConfigFichiersControlPanel(Interface): """fields for jalon Config Fichiers control panel.""" activer_fichiers = Bool( title=_(u"Activer la section Fichiers dans mon espace."), description=_( u"Cocher pour activer la section Fichiers dans mon espace."), default=False, required=False) fichiers = List( title=_(u"Fichiers : définition des étiquettes par défaut."), description=_(u"Exemple : les types de fichiers"), value_type=TextLine(), default=[], required=False)
class IJalonConfigGlossaireControlPanel(Interface): """fields for jalon Config Glossaire control panel.""" activer_glossaire = Bool( title=_(u"Activer la section Glossaire dans mon espace."), description=_( u"Cocher pour activer la section Glossaire dans mon espace."), default=False, required=False) glossaire = List( title=_(u"Glossaire : définition des étiquettes par défaut."), description=_(u"Exemple : les lettres de l'alphabet, une par case"), value_type=TextLine(), default=[], required=False)
def genererFichiers(self, value, utilisateur, dicoFichiers): try: contenuDossier = os.listdir("%s/%s/" % (value, utilisateur)) except: return dicoFichiers #Vérification du fichier d'importation de cours "exportCours.json" if not "exportFichiers.json" in contenuDossier: return dicoFichiers #Chargement du fichier try: listeObj = json.load( open('%s/%s/exportFichiers.json' % (value, utilisateur), 'r')) except: raise Invalid(_(u"addFichiers : %s " % utilisateur)) for infosObj in listeObj: image = False try: idFichier = os.listdir( "%s/%s/Fichiers/%s/file/" % (value, utilisateur, infosObj["id"]))[-1] except: idFichier = None if idFichier: extension = idFichier.split(".")[-1] idObj = infosObj["id"].replace(".", "-") if extension in ["jpg", "jpeg", "gif", "png", "bmp"]: image = True if image: dicoFichiers[idObj] = "Image" else: dicoFichiers[idObj] = "File" return dicoFichiers
def addTermeGlossaire(self, value, utilisateur): #print "------- addTermeGlossaire -------" #Recherche du dossier de l'utilisateur contenuDossier = os.listdir("%s/%s/" % (value, utilisateur)) #Vérification du fichier d'importation de cours "exportGlossaire.json" if not "exportGlossaire.json" in contenuDossier: return None #Chargement du fichier try: listeObj = json.load( open('%s/%s/exportGlossaire.json' % (value, utilisateur), 'r')) except: raise Invalid(_(u"addTermeGlossaire : %s " % utilisateur)) portal = getSite() home = getattr(getattr(portal.Members, utilisateur), "Glossaire") num = 1 for infosObj in listeObj: idobj = infosObj["id"].replace(".", "-") #Création d'une image sous Plone home.invokeFactory(type_name='JalonTermeGlossaire', id=idobj) #print "%s : addTermeGlossaire : %s" % (str(num), idobj) num = num + 1 #Récupération de l'objet fichier = getattr(home, idobj) fichier.manage_setLocalRoles(utilisateur, ["Owner"]) #Mise à jour des données fichier.setTitle(infosObj["titre"].encode("utf-8")) fichier.setDescription(infosObj["description"].encode("utf-8")) home.setTagDefaut(fichier) fichier.reindexObject() home.reindexObject()
class IJalonConfigMAJControlPanel(Interface): """fields for jalon Config MAJ control panel.""" activer_maj = Bool( title=_(u"Activer les notes de mise à jour de Jalon"), description= _(u"Cocher pour activer les notes de mise à jour depuis la page mon espace" ), default=False, required=False) url_maj = TextLine( title=_(u"Url du RSS des notes de mise à jour de Jalon"), description= _(u"Indiquez ici l'adresse du flux RSS utilisez pour les mises à jour de Jalon" ), default= u"http://wiki.unice.fr/createrssfeed.action?types=blogpost&sort=created&showContent=true&showDiff=true&spaces=JALON&labelString=maj_jalonv4&rssType=rss2&maxResults=1000&timeSpan=1000&publicFeed=true&title=Mises+à+jour+de+l%27Environnement+Pédagogique+Jalon", required=False)
def addRessourceExterne(self, value, utilisateur): #print "------- addRessourceExterne -------" #Recherche du dossier de l'utilisateur contenuDossier = os.listdir("%s/%s/" % (value, utilisateur)) #Vérification du fichier d'importation de cours "exportExternes.json" if not "exportExternes.json" in contenuDossier: return {} #Chargement du fichier dicoExternes = {} try: listeObj = json.load( open('%s/%s/exportExternes.json' % (value, utilisateur), 'r')) except: raise Invalid(_(u"addRessourceExterne : %s " % utilisateur)) portal = getSite() dicoType = { u"Lien URL": u"Lien web", u"Lien Vidéo": u"Lecteur exportable", u"Référence Bibliographique": u"Ressource bibliographique", u"Référence Bilbliographique": u"Ressource bibliographique" } home = getattr(getattr(portal.Members, utilisateur), "Externes") num = 1 for infosObj in listeObj: idobj = infosObj["id"].replace(".", "-") #Création d'une image sous Plone home.invokeFactory(type_name='JalonRessourceExterne', id=idobj) #print "%s : addRessourceExterne : %s" % (str(num), idobj) num = num + 1 #Récupération de l'objet fichier = getattr(home, idobj) fichier.manage_setLocalRoles(utilisateur, ["Owner"]) #Mise à jour des données fichier.setProperties({ "Title": infosObj["titre"].encode("utf-8"), "Description": infosObj["description"].encode("utf-8"), "TypeRessourceExterne": dicoType[infosObj["type"]], "Urlbiblio": infosObj["lien"], "Lecteur": infosObj["lien"] }) home.setTagDefaut(fichier) fichier.reindexObject() dicoExternes[idobj] = dicoType[infosObj["type"]] home.reindexObject() return dicoExternes
def addConnect(self, value, utilisateur): #print "------- addConnect -------" #Recherche du dossier de l'utilisateur contenuDossier = os.listdir("%s/%s/" % (value, utilisateur)) #Vérification du fichier d'importation de cours "exportCours.json" if not "exportConnect.json" in contenuDossier: return None portal = getSite() try: motdepasse = open( '%s/%s/exportConnect.json' % (value, utilisateur), 'r').read() except: raise Invalid(_(u"addConnect JSON : %s " % utilisateur)) #Récupération des modèles home = getattr(getattr(portal.Members, utilisateur), "Webconference") home.connect('connexion', {}) userConnect = home.connect('rechercherIdUser', utilisateur) if userConnect: dossiers = home.connect("getAttribut", {"attribut": "dossiers"}) if dossiers: for ligne in dossiers.split("\n"): repertoire, modele = ligne.split(":") #Récupération du répertoire du membre en fonction du modele home = getattr(getattr(portal.Members, utilisateur), repertoire) #Sauvegarde du mot de pass home.setComplement(motdepasse) home.reindexObject() session = home.getSessionConnect(utilisateur) home.getContents("", "JalonConnect", utilisateur, repertoire) try: home.getContents("", "JalonConnect", utilisateur, repertoire) except: raise Invalid(_(u"addConnect : %s " % utilisateur))
class IJalonConfigLDAPControlPanel(Interface): """ fields for Config LDAP control panel TODO : Placer ici les configs génériques pour la connexion LDAP """ activer_ldap = Bool( title=_(u"Exemple de champ générique"), description=_(u"Cocher pour activer ce champ générique"), default=False, required=False) fiche_ldap = TextLine( title=_(u"Chemin vers une fiche de votre annuaire"), description= _(u"exemple : http://universite.fr/page?variable=valeur&Nom=*-*nom*-* ou uid=*-*id*-*" ), required=False) schema_ldap = TextLine(title=_(u"Schema de l'annuaire LDAP"), description=_(u"exemple : supann ou eduPerson"), default=_(u"supann"), required=True)
def genererExternes(self, value, utilisateur, dicoExternes): try: contenuDossier = os.listdir("%s/%s/" % (value, utilisateur)) except: return dicoExternes #Vérification du fichier d'importation de cours "exportExternes.json" if not "exportExternes.json" in contenuDossier: return dicoExternes #Chargement du fichier try: listeObj = json.load( open('%s/%s/exportExternes.json' % (value, utilisateur), 'r')) except: raise Invalid(_(u"addRessourceExterne : %s " % utilisateur)) dicoType = { u"Lien URL": u"Lien web", u"Lien Vidéo": u"Lecteur exportable", u"Référence Bibliographique": u"Ressource bibliographique", u"Référence Bilbliographique": u"Ressource bibliographique" } for infosObj in listeObj: idobj = infosObj["id"].replace(".", "-") dicoExternes[idobj] = dicoType[infosObj["type"]] return dicoExternes
class IJalonConfigAnalyticsControlPanel(Interface): """ fields for Config Analytics control panel """ id_account = TextLine(title=_(u"Identifiant Google Analytics."), description=_(u"Exemple : UA-12345678-1"), default=u"UA-12345678-1", required=True) id_domain = TextLine(title=_(u"Domaine du site."), description=_(u"Exemple : unice.fr"), default=u"unice.fr", required=True) chemin_encodage = TextLine( title=_(u"Clé de cryptage"), description= _(u"Une clé de cryptage des identifants sera créée. Pensez à sauvegarder le fichier. Exemple : /var/secret" ), default=u"", required=True)
class IJalonConfigExterneControlPanel(Interface): """fields for jalon Config Externe control panel.""" activer_externes = Bool( title=_(u"Activer la section Ressources externes dans mon espace."), description= _(u"Cocher pour activer la section Ressources externes dans mon espace." ), default=False, required=False) externes = List( title=_(u"Externes : définition des étiquettes par défaut."), description=_(u"Exemple : les types de ressources externes"), value_type=TextLine(), default=[], required=False) activer_cataloguebu = Bool( title=_(u"Activer la section Catalogue BU dans mon espace."), description=_( u"Cocher pour activer la section Catalogue BU dans mon espace."), default=False, required=False)
def getAllActiver(self): return { "fichiers": self.get_activer_fichiers(), "externes": self.get_activer_externes(), "glossaire": self.get_activer_glossaire(), "webconference": self.get_activer_webconference(), "sonorisation": self.get_activer_sonorisation(), "wims": self.get_activer_wims(), "cataloguebu": self.get_activer_cataloguebu(), "maj": self.get_activer_maj(), } configfichierset = FormFieldsets(IJalonConfigFichiersControlPanel) configfichierset.id = 'configfichier' configfichierset.label = _(u"Fichiers") configsonorisationset = FormFieldsets(IJalonConfigSonorisationControlPanel) configsonorisationset.id = 'configsonorisation' configsonorisationset.label = _(u"Présentation sonorisée & Webconférence") configgwimsset = FormFieldsets(IJalonConfigWimsControlPanel) configgwimsset.id = 'configwims' configgwimsset.label = _(u"Exercices WIMS") configexternesset = FormFieldsets(IJalonConfigExterneControlPanel) configexternesset.id = 'configexternes' configexternesset.label = _(u"Ressources externes & Catalogue BU") configglossaireset = FormFieldsets(IJalonConfigGlossaireControlPanel) configglossaireset.id = 'configglossaire'
from jalon.content.interfaces import IJalonRessourceExterne import jalon_utils import copy ressourceType = [ u"Lien web".encode("utf-8"), u"Lecteur exportable".encode("utf-8") ] JalonRessourceExterneSchema = ATDocumentSchema.copy() + atpublic.Schema(( atpublic.StringField("sousTitre", required=False, accessor="getSousTitre", searchable=False, widget=atpublic.StringWidget( label=_(u"Sous titre"), )), atpublic.StringField("typeRessourceExterne", required=True, accessor="getTypeRessourceExterne", searchable=False, default="", vocabulary=ressourceType, widget=atpublic.SelectionWidget( label=_(u"Type de la Ressource Externe"), format="select", )), atpublic.TextField("auteurs", required=True, accessor="getAuteurs", searchable=False, widget=atpublic.TextAreaWidget(label=_(u"Auteurs"), )),
from Products.CMFCore.utils import getToolByName from jalon.content import contentMessageFactory as _ from jalon.content.config import PROJECTNAME from jalon.content.interfaces import IJalonAnnonce from jalon.content.browser.config.jalonconfiguration import IJalonConfigurationControlPanel import jalon_utils JalonAnnonceSchema = ATDocumentSchema.copy() + Schema(( LinesField("publics", required=False, accessor="getPublics", searchable=False, widget=LinesWidget(label=_(u"Publics cible d'une annonce"), visible={'view': 'visible', 'edit': 'invisible'}) ), )) class JalonAnnonce(ATDocumentBase): """ Une annonce dans un cours. """ implements(IJalonAnnonce) meta_type = 'JalonAnnonce' schema = JalonAnnonceSchema schema['description'].required = True schema['description'].widget.label = "Description" schema['text'].required = False
from jalon.content import contentMessageFactory as _ from jalon.content.config import PROJECTNAME from jalon.content.interfaces import IJalonConnect import copy import jalon_utils JalonConnectSchema = ATDocumentSchema.copy() + atpublic.Schema(( atpublic.StringField( 'dateAjout', required = False, accessor = 'getDateAjout', searchable = False, widget = atpublic.StringWidget( label = _(u"Date de création sur Adobe Connect") )), atpublic.StringField( "duree", required = False, accessor = "getDuree", searchable = False, widget = atpublic.StringWidget( label = _(u"Durée"), )), atpublic.StringField( "dateUS", required = False, accessor = "getDateUS", searchable = False, widget = atpublic.StringWidget(
from jalon.content.interfaces import IJalonFile import jalon_utils JalonFileSchema = ATDocumentSchema.copy() + atpublic.Schema(( BlobField('file', widget=atpublic.FileWidget(label='A file', description='Some file'), required=True, ), atpublic.StringField("actif", required=False, accessor="getActif", searchable=False, default="actif", widget=atpublic.StringWidget(label=_(u"Actif"), )), atpublic.TextField("correction", required=True, accessor="getCorrection", searchable=False, widget=atpublic.TextAreaWidget(label=_(u"Correction"), )), atpublic.StringField("note", required=False, accessor="getNote", searchable=False, widget=atpublic.StringWidget(label=_(u"Note ou appréciation"), )), ))
def addCours(self, value, utilisateur): #print "------- addCours -------" #Recherche du dossier de l'utilisateur utilisateur = utilisateur.split(".json")[0][11:] contenuDossier = os.listdir("%s" % value) #Vérification du fichier d'importation de cours "exportCours.json" idExport = u"exportCours%s.json" % utilisateur if not idExport in contenuDossier: return None #Chargement du fichier try: dicoCours = json.load(open('%s/%s' % (value, idExport), 'r')) except: raise Invalid(_(u"addCours : %s " % utilisateur)) dicoExternes = self.genererExternes( "/home/zope/sites/jalon/jalonv2fait", utilisateur, {}) dicoFichiers = self.genererFichiers( "/home/zope/sites/jalon/jalonv2fait", utilisateur, {}) portal = getSite() Cours = getattr(portal.cours, utilisateur) num = 1 for infosCours in dicoCours: Cours.invokeFactory(type_name='JalonCours', id=infosCours["idcours"]) #print "%s : addCours : %s " % (str(num), infosCours["idcours"]) num = num + 1 cours = getattr(Cours, infosCours["idcours"]) #Mise à jour des permissions cours.manage_setLocalRoles(utilisateur, ["Owner"]) #Mise à jour des informations cours.setTitle(infosCours["titre"].encode("utf-8")) cours.setAuteurs({"auteurs": "auteur", "username": utilisateur}) if infosCours["coAuteurs"]: cours.setAuteurs({ "auteurs": "coAuteurs", "username": infosCours["coAuteurs"] }) for coAuteur in infosCours["coAuteurs"].split(","): dicoExternes = self.genererExternes( "/home/zope/sites/jalon/jalonv2fait", coAuteur, dicoExternes) dicoFichiers = self.genererFichiers( "/home/zope/sites/jalon/jalonv2fait", coAuteur, dicoFichiers) if infosCours["coLecteurs"]: cours.setAuteurs({ "auteurs": "coLecteurs", "username": infosCours["coLecteurs"] }) heure = str(time.clock()).replace(".", "") for composant in infosCours["plan"]: if composant["type"] in ["Titre", "TexteLibre"]: now = DateTime() idElement = "%s-%s-%s" % ( composant["type"], utilisateur, ''.join( [now.strftime('%Y%m%d'), str(heure)])) cours.ajouterInfosElement( idElement.encode("utf-8"), composant["type"].encode("utf-8"), composant["titre"].encode("utf-8"), utilisateur.encode("utf-8")) cours.ajouterElementPlan(idElement.encode("utf-8")) #print "addCours Element : %s , %s" % (idElement.encode("utf-8"), composant["titre"].encode("utf-8")) heure = int(heure) + 1 else: if composant["type"] == "Fichier": try: cours.ajouterElement( composant["id"].encode("utf-8"), dicoFichiers[composant["id"]].encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) except: print "addCours Element Fichier : %s , %s" % ( composant["id"].encode("utf-8"), composant["titre"].encode("utf-8")) if composant["type"] == "Ressources Externes": try: cours.ajouterElement( composant["id"].encode("utf-8"), dicoExternes[composant["id"]].encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) except: print "addCours Element Ressources Externes : %s , %s" % ( composant["id"].encode("utf-8"), composant["titre"].encode("utf-8")) if composant["type"] == "Webconference": try: cours.ajouterElement( composant["id"].encode("utf-8"), "Webconference".encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) except: print "addCours Element Webconference : %s , %s %s" % ( composant["id"].encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) if composant["type"] == "Presentation sonirisee": try: cours.ajouterElement( composant["id"].encode("utf-8"), "Presentations sonorisees".encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) except: print "addCours Element Presentation sonirisee : %s , %s %s" % ( composant["id"].encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) if composant["type"] == "Sujet de dicussion": idactivite = cours.creerSousObjet( "Forum".encode("utf-8"), composant["titre"].encode("utf-8"), composant["description"].encode("utf-8"), composant["createur"].encode("utf-8"), None, None) cours.ajouterElement( idactivite.encode("utf-8"), "Forum".encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) #print "addCours Element : %s , %s" % (composant["id"].encode("utf-8"), composant["titre"].encode("utf-8")) if composant[ "type"] == "Boîte de dépôts": idactivite = cours.creerSousObjet( "BoiteDepot".encode("utf-8"), composant["titre"].encode("utf-8"), composant["description"].encode("utf-8"), composant["createur"].encode("utf-8"), None, None) cours.ajouterElement( idactivite, "BoiteDepot".encode("utf-8"), composant["titre"].encode("utf-8"), composant["createur"].encode("utf-8")) if composant["sujets"] != [] or composant[ "corrections"] != []: boite = getattr(cours, idactivite) for sujet in composant["sujets"]: if sujet["typeElement"] == "Fichier": try: boite.ajouterElement( "sujets".encode("utf-8"), sujet["id"].encode("utf-8"), dicoFichiers[sujet["id"]], sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) except: print "add Element Boite Fichier : %s , %s %s" % ( sujet["id"].encode("utf-8"), sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) if sujet[ "typeElement"] == "Ressources Externes": try: boite.ajouterElement( "sujets".encode("utf-8"), sujet["id"].encode("utf-8"), dicoExternes[sujet["id"]], sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) except: print "add Element Boite Ressources Externes : %s , %s %s" % ( sujet["id"].encode("utf-8"), sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) if sujet["typeElement"] == "Webconference": try: boite.ajouterElement( "sujets".encode("utf-8"), sujet["id"].encode("utf-8"), "Webconference".encode("utf-8"), sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) except: print "add Element Boite Webconference : %s , %s %s" % ( sujet["id"].encode("utf-8"), sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) if sujet[ "typeElement"] == "Presentation sonirisee": try: boite.ajouterElement( "sujets".encode("utf-8"), sujet["id"].encode("utf-8"), "Presentations sonorisees".encode( "utf-8"), sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) except: print "add Element Boite Presentation sonirisee : %s , %s %s" % ( sujet["id"].encode("utf-8"), sujet["titreElement"].encode( "utf-8"), sujet["createurElement"].encode( "utf-8")) for correction in composant["corrections"]: if correction["typeElement"] == "Fichier": try: boite.ajouterElement( "corrections".encode("utf-8"), correction["id"].encode("utf-8"), dicoFichiers[correction["id"]]. encode("utf-8"), correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) except: print "add Element Boite Fichier : %s , %s %s" % ( correction["id"], correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) if correction[ "typeElement"] == "Ressources Externes": try: boite.ajouterElement( "corrections".encode("utf-8"), correction["id"].encode("utf-8"), dicoExternes[correction["id"]]. encode("utf-8"), correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) except: print "add Element Boite Ressources Externes : %s , %s %s" % ( correction["id"], correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) if correction[ "typeElement"] == "Webconference": try: boite.ajouterElement( "corrections".encode("utf-8"), correction["id"].encode("utf-8"), "Webconference".encode("utf-8"), correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) except: print "add Element Boite Webconference : %s , %s %s" % ( correction["id"].encode("utf-8"), correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) if correction[ "typeElement"] == "Presentation sonirisee": try: boite.ajouterElement( "corrections".encode("utf-8"), correction["id"].encode("utf-8"), "Presentations sonorisees".encode( "utf-8"), correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) except: print "add Element Boite Presentation sonirisee : %s , %s %s" % ( correction["id"].encode("utf-8"), correction["titreElement"].encode( "utf-8"), correction["createurElement"]. encode("utf-8")) #print "addCours Element : %s , %s" % (composant["id"], composant["titre"].encode("utf-8")) cours.invokeFactory(type_name='Folder', id="annonce") cours.reindexObject() Cours.reindexObject()
class IJalonMaintenanceControlPanel(Interface): """ fields for jalon maintenance control panel """ annoncer_maintenance = Bool( title=_(u"Annonce maintenance du site"), description=_( u"Affiche un message d'annonce de la prochaine maintenance du site." ), default=False, required=False) activer_maintenance = Bool( title=_(u"Mise en maintenance du site"), description=_(u"Empêche les utilisateurs de se connecter au site."), default=False, required=False) date_debut = TextLine( title=_(u"Date de début de maintenance"), description=_( u"Date du début de la maintenance dans le texte informatif."), required=True) date_fin = TextLine( title=_(u"Date de fin de maintenance"), description=_( u"Date de fin de la maintenance dans le texte informatif."), required=True) texte_maintenance = Text( title=_(u"Texte de la maintenance"), description=_(u"Texte informatif pour la maintenance du site."), required=True) activer_information = Bool( title=_(u"Afficher une information sur le site"), description=_(u"Affiche une information sur le site."), default=False, required=False) texte_information = Text(title=_(u"Texte d'information"), description=_(u"Texte informatif pour le site."), required=True) annoncer_vider_cache = Bool( title=_(u"Annonce « Vider son cache »"), description= _(u"Affiche un message demandant de vider son cache suite à une mise à jour." ), default=False, required=False)
class JalonMaintenanceControlPanel(ControlPanelForm): label = _(u"Jalon maintenance settings") description = _(u"Mise en maintenance de Jalon") form_name = _(u"Jalon maintenance settings") form_fields = FormFields(IJalonMaintenanceControlPanel)
class IJalonConfigSonorisationControlPanel(Interface): """fields for jalon Config Sonorisation control panel.""" activer_sonorisation = Bool( title=_(u"Activer la section Présentation sonorisée dans mon espace."), description= _(u"Cocher pour activer la section Présentation sonorisée dans mon espace, seulement possible si le produit jalon.connect est installé." ), default=False, required=False) sonorisation_connecteur = TextLine( title=_(u"Identifiant du connecteur connect."), description= _(u"Pour la configuration par défaut de jalon.connect laisser portal_connect." ), default=u"portal_connect", required=False) sonorisation = List( title=_( u"Présentation sonorisée : définition des étiquettes par défaut."), description=_( u"Exemple : le champ de date du portal_connect 'dateUS'"), value_type=TextLine(), default=[], required=False) activer_webconference = Bool( title=_(u"Activer la section Webconférence dans mon espace."), description= _(u"Cocher pour activer section la Webconference dans mon espace, seulement possible si le produit jalon.connect est installé." ), default=False, required=False) webconference_connecteur = TextLine( title=_(u"Identifiant du connecteur connect."), description= _(u"Pour la configuration par défaut de jalon.connect laisser portal_connect." ), default=u"portal_connect", required=False) webconference = List( title=_(u"Webconférence : définition des étiquettes par défaut."), description=_( u"Exemple : le champ de date du portal_connect 'dateUS'"), value_type=TextLine(), default=[], required=False)
def __init__(self, *args, **kwargs): super(JalonProperties, self).__init__(*args, **kwargs) self._categories = {1: {"title": _(u"Mes formations"), "users": ['all']}, 2: {"title": _(u"Inscription par mot de passe"), "users": ['all']}}
class JalonImportControlPanel(ControlPanelForm): label = _("Jalon Import settings") description = _( """Import les contenus de Jalon V2 depuis un dossier du filesystem""") form_name = _("Jalon Import settings") form_fields = FormFields(IJalonImportControlPanel)
def addFichiers(self, value, utilisateur): #print "------- addFichiers -------" #Recherche du dossier de l'utilisateur contenuDossier = os.listdir("%s/%s/" % (value, utilisateur)) #Vérification du fichier d'importation de cours "exportCours.json" if not "exportFichiers.json" in contenuDossier: return None #Chargement du fichier try: listeObj = json.load( open('%s/%s/exportFichiers.json' % (value, utilisateur), 'r')) except: raise Invalid(_(u"addFichiers : %s " % utilisateur)) portal = getSite() listeSubject = [] dicoFichiers = {} num = 1 home = getattr(getattr(portal.Members, utilisateur), "Fichiers") for infosObj in listeObj: image = False try: idFichier = os.listdir( "%s/%s/Fichiers/%s/file/" % (value, utilisateur, infosObj["id"]))[-1] except: idFichier = None if idFichier: extension = idFichier.split(".")[-1] idObj = infosObj["id"].replace(".", "-") if extension in ["jpg", "jpeg", "gif", "png", "bmp"]: #Création d'une image sous Plone home.invokeFactory(type_name='Image', id=idObj) image = True else: #Création du fichier sous Plone home.invokeFactory(type_name='File', id=idObj) #print "%s : addFichiers : %s" % (str(num), idObj) num = num + 1 #Récupération du fichier fichier = getattr(home, idObj) fichier.manage_setLocalRoles(utilisateur, ["Owner"]) #Mise à jour des données fichier.setTitle(infosObj["titre"].encode("utf-8")) home.setTagDefaut(fichier) subject = list(fichier.Subject()) subject.append( urllib.quote(infosObj["etiquette"].encode("utf-8"))) fichier.setSubject(list(subject)) #Mise à jour des étiquettes du parents if not infosObj["etiquette"].encode("utf-8") in listeSubject: listeSubject.append(infosObj["etiquette"].encode("utf-8")) #Mise à jour du fichier en uploadant le contenu du Filesystem if image: fichier.setImage( open( "%s/%s/Fichiers/%s/file/%s" % (value, utilisateur, infosObj["id"], idFichier), "r")) dicoFichiers[idObj] = "Image" else: print idFichier fichier.setFile( open( "%s/%s/Fichiers/%s/file/%s" % (value, utilisateur, infosObj["id"], idFichier), "r")) dicoFichiers[idObj] = "File" fichier.setFilename(idFichier.encode("utf-8")) fichier.reindexObject() if listeSubject: home.setSubject(tuple(listeSubject)) home.reindexObject() return dicoFichiers