Détails du package smp-all-in-one-package_101_all_MUST-BE-EDITED.wapt
retour Revenir à la liste des packages

smp-all-in-one-package

ATTENTION CE DÉPÔT n'est plus compatible 1.3 vous devez migrer en 1.5.1.21 !

Fichier control :

package           : smp-all-in-one-package
version           : 101
architecture      : all
section           : base
priority          : optional
maintainer        : Simon Fonteneau
description       : Sample package --> Install wapt packages with this wapt package.  Change Required
depends           : 
conflicts         : 
maturity          : MUST-BE-EDITED
locale            : 
target_os         : 
min_os_version    : 
max_os_version    : 
min_wapt_version  : 
sources           : 
installed_size    : 
impacted_process  : 
description_fr    : 
description_pl    : 
description_de    : 
description_es    : 
audit_schedule    : 
signer            : wapt.lesfourmisduweb.org
signer_fingerprint: 8da83ebdac1a25e820b186510d049f47407b11835b0664fdc5bacd3595b1671d
signature         : vCJpxQ5auefCioQd49GDAzlqowfyIMOBba96q+5WKuYlnSbdz1USIEUJ7OPH558dV99TH3rBWiA7QK8oVF2/g1b5wKM7NTaZ7AHreFYCwUpJC07+hLpX7XYAtKoQxy7O6T0Ushe5eWLrEc+wKrqanIGfCWZMaD3gzOOjeOLpYJcURHylVLiAXLFZGYCa8iMlmAeRAw/gZ4BOAQM5Ntc1JQe/7McOJqZfHTv0+65ojhxThh+BzsTW7hWZqbsKQO0jhgfHfCoQDhtQhKBFtNemM2sp4RVVTBeTKj9+jcVf8z2Otr8ybK28IjdjE2msvG2DBo1uU926vI3sn89vdhI4aQ==
signature_date    : 20180516-010247
signed_attributes : package,version,architecture,section,priority,maintainer,description,depends,conflicts,maturity,locale,target_os,min_os_version,max_os_version,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,audit_schedule,signer,signer_fingerprint,signature_date,signed_attributes






Fichier setup.py :

# -*- coding: utf-8 -*-
from setuphelpers import *
from active_directory import *

uninstallkey = []

def install():


###################################################
    print ('RETIRER CECI POUR ACTIVER LE PAQUET') #
    return (0);                                   #
###################################################


    # Je déclare cette fonction pour indiquer de ne pas basculer le paquet "manage-my-wapt" en erreur si une erreur survient lors du lancement de WAPT.install(nompackage) et donc continer le script
    def action_for_wapt_package(nompackage,action='install'):
        if action == 'install':
            if WAPT.is_available(nompackage) :
                try :
                    WAPT.install(nompackage)
                except:
                    pass
            else :
                error("%s is unavailable" % nompackage)
        if action == 'remove':
            try :
                WAPT.remove(nompackage)
            except:
                pass
        if action == 'forget':
            if WAPT.is_installed(nompackage) :
                WAPT.forget_packages(nompackage)



    # Récupération du préfix du package et je stock la variable dans prefixpkg, je ne connai pas votre préfix et je suppose donc que votre préfix est le même que celui de manage-my-wapt
    prefixpkg = control.package.split('-',1)[0]

    # Récupération du Nom du poste et convertion de la chaine en minuscule et je stock ça dans la variable hostname
    hostname = get_computername().lower()


    # Si les 4 dernier caractères du poste sont "prof" alors j'installe Firefox ESR
    if hostname[-4:] == 'prof' :
        action_for_wapt_package('%s-firefox-esr'% prefixpkg, action='install')
        # Peut très bien être remplacée par :
        #action_for_wapt_package('smp-firefox-esr', action='install')


    # Si les 7 premier caractère du poste commence par "salle9" alors j'installe geogebra
    if hostname[7:] == 'salle9' :
        action_for_wapt_package('%s-geogebra'% prefixpkg, action='install')


    # Si le nom du pc est "pc-compta"
    if hostname == 'pc-compta' :
        action_for_wapt_package('%s-logicielcompta'% prefixpkg, action='install')


    # Si le nom du pc contient 'eleves' alors j'install scratch
    if 'eleves' in hostname :
         action_for_wapt_package('%s-scratch'% prefixpkg, action='install')


    # Si le nom du pc contient ne contient pas 'administration' alors j'install scratch
    if not 'administration' in hostname :
         action_for_wapt_package('%s-italc'% prefixpkg, action='install')


    # Là j'ai fait une erreur et je veux supprimer le logiciel de "gestionnote" sur les poste élèves. Je demande donc une supression du paquet si il est installé sur les postes qui possède le mot eleves dans leur nom:
    if 'eleves' in hostname :
        if WAPT.is_installed('%s-gestionnote'% prefixpkg) :
            action_for_wapt_package('%s-gestionnote'% prefixpkg, action='remove')


    # Si le mot "Mozilla Firefox" est trouvée dans la liste les logiciel (uninstallkey) alors j'install le paquet firefox esr pour gérer ses mise à jour, sinon je ne l'install pas.
    if installed_softwares('Mozilla Firefox') :
        action_for_wapt_package('%s-firefox-esr'% prefixpkg, action='install')



    # Si je suis sur un xp j'install le sp3 xp
    if windows_version() == Version('5.1') :
           action_for_wapt_package('%s-xp-sp3'% prefixpkg, action='install')
    #si je suis un windows 7 , install le sp1 windows 7 32 ou 64 en fonction de la plateforme
    if windows_version() == Version('6.1') :
        if iswin64() :
            action_for_wapt_package('%s-w7-sp1-x64'% prefixpkg, action='install')
        else:
            action_for_wapt_package('%s-w7-sp1-x86'% prefixpkg, action='install')



    # là j'ai fait une erreur dans un paquet et je veux oublier le paquet "prefix-paquetenerreur" si il est installée :
    action_for_wapt_package('%s-paquetenerreur'% prefixpkg, action='forget')



    # Là j'ai fait une erreur, lorsque j'ai fait mon paquet firefox j'ai indiquer un numéro de version beaucoup trop haut = 500.2-6, j'ai supprimer le paquet mais je veux que les postes oublie la version 500.2 pour corriger mon erreur.
    # J'oublier donc le paquet firefox-esr si il existe  en version 500 et je lance de nouveau un réinstallation:

    reader = WAPT.is_installed('%s-firefox-esr'% prefixpkg)
    if reader and Version(reader.version.split('-',1)[0]) == Version('500.2'):
        WAPT.forget_packages(reader.package)
        action_for_wapt_package(reader.package,action='install')




    #Ensuite, peut importe le cas, j'install d'autre paquets
    action_for_wapt_package('%s-allow_cancel_upgrade'% prefixpkg,action='install')
    action_for_wapt_package('%s-preshutdowntimeout'% prefixpkg,action='install')
    action_for_wapt_package('%s-poweroff'% prefixpkg,action='install')

    #Je peux aussi installer un groupe :
    action_for_wapt_package('%s-groupe-de-base'% prefixpkg,action='install')


    # Si la manufacture du poste est 'innotek GmbH', installer le paquet drivers smp-drivers-for-innotek
    if wmi_info_basic()["System_Information"]["Manufacturer"] == 'innotek GmbH' :
        action_for_wapt_package('%s-drivers-for-innotek'% prefixpkg, action='install')


    # Si l'ordinateur fait partie de l'OU OU=Ordinateur_compta,OU=Ordinateur_administratif,DC=tranquilit,DC=local alors j'install le paquet libreoffice-stable
    # Attention Fonctione du coup avec ule principe d'héritage
    # Fonctionne Uniquement si l'instalation est lancée en compte système ou avec un compte Active Directory
    unitorga = find_computer().Parent.path()
    print unitorga
    if 'OU=Ordinateur_compta,OU=Ordinateur_administratif,DC=tranquilit,DC=local' in unitorga :
        action_for_wapt_package('%s-libreoffice-stable'% prefixpkg, action='install')

    # Je liste les groupe dont est membre la machine
    for group in get_computer_groups():
        # si un groupe wapt du meme nom existe
        if WAPT.is_available(group) :
            #Je lance une installation
            action_for_wapt_package(group, action='install')


def get_computer_groups():
    """Try to finc the computer in the Active Directory
        and return the list of groups
    """
    groups = []
    computer = find_computer()
    if computer:
        computer_groups = computer.memberOf
        if computer_groups:
            if not isinstance(computer_groups,(tuple,list)):
                computer_groups = [computer_groups]
            for group in computer_groups:
                # extract first component of group's DN
                cn = group.split(',')[0].split('=')[1]
                groups.append(cn.lower())
    return groups