コード例 #1
0
ファイル: models.py プロジェクト: yurivital/pydici
def leadSignalHandler(sender, **kwargs):
    """Signal handler for new/updated leads"""
    lead = kwargs["instance"]
    targetUser = None
    client = lead.client
    # If this was the last active mission of its client and not more active lead, flag client as inactive
    if len(client.getActiveMissions()) == 0 and len(
            client.getActiveLeads().exclude(state="WON")) == 0:
        client.active = False
        client.save()
    if lead.responsible:
        targetUser = lead.responsible.getUser()
    if not targetUser:
        # Default to admin
        targetUser = User.objects.filter(is_superuser=True)[0]

    if kwargs.get("created", False):  # New Lead
        launchTrigger("NEW_LEAD", [
            targetUser,
        ], lead)
        createProjectTree(lead)
        client.active = True
        client.save()
    if lead.state == "WON":
        # Ensure actionset has not already be fired for this lead and this user
        if not ActionState.objects.filter(
                user=targetUser,
                target_id=lead.id,
                target_type=ContentType.objects.get_for_model(Lead)).exists():
            launchTrigger("WON_LEAD", [
                targetUser,
            ], lead)
コード例 #2
0
ファイル: models.py プロジェクト: digitalfox/pydici
def leadSignalHandler(sender, **kwargs):
    """Signal handler for new/updated leads"""
    lead = kwargs["instance"]
    targetUser = None
    client = lead.client
    # If this was the last active mission of its client and not more active lead, flag client as inactive
    if len(client.getActiveMissions()) == 0 and len(client.getActiveLeads().exclude(state="WON")) == 0:
        client.active = False
        client.save()
    if lead.responsible:
        targetUser = lead.responsible.getUser()
    if not targetUser:
        # Default to admin
        targetUser = User.objects.filter(is_superuser=True)[0]

    if  kwargs.get("created", False):  # New Lead
        launchTrigger("NEW_LEAD", [targetUser, ], lead)
        createProjectTree(lead)
        client.active = True
        client.save()
    if lead.state == "WON":
        # Ensure actionset has not already be fired for this lead and this user
        if not ActionState.objects.filter(user=targetUser,
                                          target_id=lead.id,
                                          target_type=ContentType.objects.get_for_model(Lead)
                                          ).exists():
            launchTrigger("WON_LEAD", [targetUser, ], lead)
コード例 #3
0
ファイル: views.py プロジェクト: AYCHUB/AYCHSmart
def lead_documents(request, lead_id):
    """Gather documents relative to this lead as a fragment page for an ajax call"""
    lead = Lead.objects.get(id=lead_id)
    documents = []  # List of name/url docs grouped by type
    clientDir, leadDir, businessDir, inputDir, deliveryDir = getLeadDirs(lead)
    lead_url_dir = settings.DOCUMENT_PROJECT_URL_DIR + leadDir[len(settings.DOCUMENT_PROJECT_PATH):]
    lead_url_file = settings.DOCUMENT_PROJECT_URL_FILE + leadDir[len(settings.DOCUMENT_PROJECT_PATH):]
    for directory in (businessDir, inputDir, deliveryDir):
        # Create project tree if at least one directory is missing
        if not os.path.exists(directory):
            createProjectTree(lead)
            break

    for directory in (businessDir, inputDir, deliveryDir):
        directoryName = directory.split("/")[-1]
        dirs = []
        files = []
        for fileName in os.listdir(directory):
            filePath = os.path.join(directory, fileName)
            fileName = fileName.encode('utf-8', 'surrogateescape').decode('utf-8', 'replace')  # fs encoding mixup
            if os.path.isdir(filePath):
                dirs.append((fileName + "/", lead_url_dir + "/" + directoryName + "/" + fileName + "/"))
            else:
                files.append((fileName, lead_url_file  + "/" + directoryName + "/" + fileName))
        dirs.sort(key=lambda x: x[0])
        files.sort(key=lambda x: x[0])
        documents.append([directoryName, dirs + files])

    return render(request, "leads/lead_documents.html",
                  {"documents": documents,
                   "lead_doc_url": lead_url_dir,
                   "user": request.user})
コード例 #4
0
ファイル: views.py プロジェクト: digitalfox/pydici
def lead_documents(request, lead_id):
    """Gather documents relative to this lead as a fragment page for an ajax call"""
    lead = Lead.objects.get(id=lead_id)
    documents = []  # List of name/url docs grouped by type
    clientDir, leadDir, businessDir, inputDir, deliveryDir = getLeadDirs(lead)
    lead_url_dir = settings.DOCUMENT_PROJECT_URL_DIR + leadDir[len(settings.DOCUMENT_PROJECT_PATH):]
    lead_url_file = settings.DOCUMENT_PROJECT_URL_FILE + leadDir[len(settings.DOCUMENT_PROJECT_PATH):]
    for directory in (businessDir, inputDir, deliveryDir):
        # Create project tree if at least one directory is missing
        if not os.path.exists(directory):
            createProjectTree(lead)
            break

    for directory in (businessDir, inputDir, deliveryDir):
        directoryName = directory.split("/")[-1]
        dirs = []
        files = []
        for fileName in os.listdir(directory):
            filePath = os.path.join(directory, fileName)
            fileName = fileName.encode('utf-8', 'surrogateescape').decode('utf-8', 'replace')  # fs encoding mixup
            if os.path.isdir(filePath):
                dirs.append((fileName + "/", lead_url_dir + "/" + directoryName + "/" + fileName + "/"))
            else:
                files.append((fileName, lead_url_file  + "/" + directoryName + "/" + fileName))
        dirs.sort(key=lambda x: x[0])
        files.sort(key=lambda x: x[0])
        documents.append([directoryName, dirs + files])

    return render(request, "leads/lead_documents.html",
                  {"documents": documents,
                   "lead_doc_url": lead_url_dir,
                   "user": request.user})
コード例 #5
0
ファイル: views.py プロジェクト: sgmqs/pydici
def lead_documents(request, lead_id):
    """Gather documents relative to this lead as a fragment page for an ajax call"""
    lead = Lead.objects.get(id=lead_id)
    documents = []  # List of name/url docs grouped by type
    clientDir, leadDir, businessDir, inputDir, deliveryDir = getLeadDirs(lead)
    lead_url_dir = pydici.settings.DOCUMENT_PROJECT_URL_DIR + leadDir[len(pydici.settings.DOCUMENT_PROJECT_PATH):]
    lead_url_file = pydici.settings.DOCUMENT_PROJECT_URL_FILE + leadDir[len(pydici.settings.DOCUMENT_PROJECT_PATH):]
    for directory in (businessDir, inputDir, deliveryDir):
        # Create project tree if at least one directory is missing
        if not os.path.exists(directory):
            createProjectTree(lead)
            break

    for directory in (businessDir, inputDir, deliveryDir):
        directoryName = directory.split(u"/")[-1]
        dirs = []
        files = []
        for fileName in os.listdir(directory):
            filePath = os.path.join(directory.encode(sys.getfilesystemencoding()), fileName)
            if isinstance(fileName, str):
                # Corner case, files are not encoded with filesystem encoding but another...
                fileName = fileName.decode("utf8", "ignore")
            if os.path.isdir(filePath):
                dirs.append((fileName + u"/", lead_url_dir + u"/" + directoryName + u"/" + fileName + u"/"))
            else:
                files.append((fileName, lead_url_file  + u"/" + directoryName + u"/" + fileName))
        dirs.sort(key=lambda x: x[0])
        files.sort(key=lambda x: x[0])
        documents.append([directoryName, dirs + files])

    return render(request, "leads/lead_documents.html",
                  {"documents": documents,
                   "lead_doc_url": lead_url_dir,
                   "user": request.user})
コード例 #6
0
ファイル: views.py プロジェクト: GeoffreyOnRails/pydici
def lead_documents(request, lead_id):
    """Gather documents relative to this lead as a fragment page for an ajax call"""
    lead = Lead.objects.get(id=lead_id)
    documents = []  # List of name/url docs grouped by type
    clientDir, leadDir, businessDir, inputDir, deliveryDir = getLeadDirs(lead)
    leadDocURL = lead.getDocURL()
    for directory in (businessDir, inputDir, deliveryDir):
        # Create project tree if at least one directory is missing
        if not os.path.exists(directory):
            createProjectTree(lead)
            break

    for directory in (businessDir, inputDir, deliveryDir):
        directoryName = directory.split(u"/")[-1]
        dirs = []
        files = []
        for fileName in os.listdir(directory):
            filePath = os.path.join(directory.encode(sys.getfilesystemencoding()), fileName)
            if isinstance(fileName, str):
                # Corner case, files are not encoded with filesystem encoding but another...
                fileName = fileName.decode("utf8", "ignore")
            if os.path.isdir(filePath):
                dirs.append((fileName + u"/", leadDocURL + directoryName + u"/" + fileName + u"/"))
            else:
                files.append((fileName, leadDocURL + directoryName + u"/" + fileName))
        dirs.sort(key=lambda x: x[0])
        files.sort(key=lambda x: x[0])
        documents.append([directoryName, dirs + files])

    return render(request, "leads/lead_documents.html",
                  {"documents": documents,
                   "lead_doc_url": leadDocURL,
                   "user": request.user})