# -*- mode: python -*-
# -*- coding: utf-8 -*-

"""Configuration pour debugguer en mode console

Lancer ScoDoc ainsi: (comme root)

 /opt/scodoc/bin/zopectl debug

Puis

from debug import *
context = go(app)
# ou
context = go_dept(app, 'CJ')

authuser = app.acl_users.getUserById('admin')
# ou app.ScoDoc.acl_users.getUserById('toto') pour un utilisateur scodoc
authuser = authuser.__of__(app.acl_users)

Exemple:
sems = sco_formsemestre.do_formsemestre_list.formsemestre_list(context)
formsemestre_id = sems[0]['formsemestre_id']

# Affiche tous les semestres:
for sem in sems:
    print sem['formsemestre_id'], sem['titre_num']

# Recupere la table de notes:
nt = sco_core.get_notes_cache(context).get_NotesTable(context, formsemestre_id)


"""
from __future__ import absolute_import
from __future__ import print_function
import pdb  # pylint: disable=unused-import
import pprint

import app.scodoc.notesdb as ndb  # pylint: disable=unused-import
from app.scodoc.notesdb import *  # pylint: disable=wildcard-import,unused-wildcard-import
from app.scodoc.notes_log import log
import app.scodoc.sco_utils as scu
from app.scodoc.sco_utils import *  # pylint: disable=wildcard-import, unused-wildcard-import

from app.scodoc.gen_tables import GenTable
from app.scodoc import html_sco_header
from app.scodoc import sco_archives
from app.scodoc import sco_bulletins
from app.scodoc import sco_bulletins_xml
from app.scodoc import sco_codes_parcours
from app.scodoc import sco_compute_moy
from app.scodoc import sco_core
from app.scodoc import sco_edit_matiere
from app.scodoc import sco_edit_module
from app.scodoc import sco_edit_ue
from app.scodoc import sco_excel
from app.scodoc import sco_formations
from app.scodoc import sco_formsemestre
from app.scodoc import sco_formsemestre_edit
from app.scodoc import sco_formsemestre_status
from app.scodoc import sco_formsemestre_validation
from app.scodoc import sco_groups
from app.scodoc import sco_moduleimpl
from app.scodoc import sco_news
from app.scodoc import sco_parcours_dut
from app.scodoc import sco_permissions
from app.scodoc import sco_preferences
from app.scodoc import sco_tag_module
from app.scodoc import sco_etud

# Prend le premier departement comme context


def go(app, n=0, verbose=True):
    context = app.ScoDoc.objectValues("Folder")[n].Scolarite
    if verbose:
        print("context in dept ", scu.get_dept_id())
    return context


def go_dept(app, dept, verbose=True):
    objs = app.ScoDoc.objectValues("Folder")
    for o in objs:
        try:
            context = o.Scolarite
        except AttributeError:
            # ignore other folders, like old "icons"
            continue
        if scu.get_dept_id() == dept:
            if verbose:
                print("context in dept ", scu.get_dept_id())
            return context
    raise ValueError("dep %s not found" % dept)


class FakeUser:
    def __init__(self, name):
        self.name = name

    def __str__(self):
        return self.name

    def has_permission(self, op, dept=None):
        return True

    def has_role(self, role):
        return True


class DummyResponse:
    """Emulation vide de Reponse http Zope"""

    def __init__(self):
        self.header = {}
        self.redirected = ""

    def setHeader(self, name, value):
        self.header[name] = value

    def redirect(self, url):
        self.redirected = url


class DummyRequest:
    """Emulation vide de Request Zope"""

    def __init__(self):
        self.RESPONSE = DummyResponse()
        self.AUTHENTICATED_USER = FakeUser("admin")
        self.form = {}
        self.URL = "http://scodoc/"
        self.URL0 = self.URL
        self.BASE0 = "localhost"
        self.REMOTE_ADDR = "127.0.0.1"
        self.HTTP_REFERER = ""
        self.REQUEST_METHOD = "get"
        self.QUERY_STRING = ""


REQUEST = DummyRequest()

# handful shorcut
pp = pprint.pprint