コード例 #1
0
ファイル: outcomedefaults.py プロジェクト: UPCnet/gwopa.core
class IOutcomedefaults(model.Schema):
    """  Outcome Default values
    """

    number = schema.TextLine(
        title=_(u"KPI Number"),
        required=True,
    )

    title = schema.TextLine(
        title=_(u"Title English"),
        required=True,
    )

    unit = schema.TextLine(
        title=_(u"Unit"),
        required=True,
    )

    title_es = schema.TextLine(
        title=_(u"Title Spanish"),
        required=False,
    )

    title_fr = schema.TextLine(
        title=_(u"Title French"),
        required=False,
    )
コード例 #2
0
ファイル: dashboard-areas.py プロジェクト: UPCnet/gwopa.core
    def getItems(self):
        """ Returns all the project years of the dash-areas """
        items = len(self.context.gwopa_year_phases)
        results = []
        total = 0

        while total != items:
            if (total == 0) and (self.request.steps[-1] == 'dash-areas'):
                classe = 'disabled'
            elif self.request.steps[-1] == str(total + 1):
                classe = 'disabled'
            else:
                classe = 'visible'
            if total == 0:
                url = self.context.absolute_url_path() + '/dash-areas/'
            else:
                url = self.context.absolute_url_path() + '/dash-areas/' + str(
                    total + 1)
            results.append(
                dict(title=_(u"Project year"),
                     year=str(total + 1),
                     url=url,
                     alt=_(u"Show dashboard of year ") + str(total + 1),
                     classe=classe))
            total = total + 1
        return sorted(results, key=itemgetter('title'), reverse=False)
コード例 #3
0
def listSectionsReport(context):
    sections = []
    sections.append(SimpleVocabulary.createTerm(u'Project Overview', 'Project Overview', _(u'Project Overview')))
    sections.append(SimpleVocabulary.createTerm(u'Summary', 'Summary', _(u'Summary')))
    sections.append(SimpleVocabulary.createTerm(u'Activities and Outputs Progress', 'Activities and Outputs Progress', _(u'Activities and Outputs Progress')))
    sections.append(SimpleVocabulary.createTerm(u'Outcomes - Utility Perfomance', 'Outcomes - Utility Perfomance', _(u'Outcomes - Utility Perfomance')))
    sections.append(SimpleVocabulary.createTerm(u'Outcomes - Capacity', 'Outcomes - Capacity', _(u'Outcomes - Capacity')))
    sections.append(SimpleVocabulary.createTerm(u'Budget', 'Budget', _(u'Budget')))
    sections.append(SimpleVocabulary.createTerm(u'Next Steps', 'Next Steps', _(u'Next Steps')))
    return SimpleVocabulary(sections)
コード例 #4
0
ファイル: maincontributing.py プロジェクト: UPCnet/gwopa.core
class IMainContributing(model.Schema):
    """ Main Contributing default values. """

    title = schema.TextLine(
        title=_(u"Title English"),
        required=True,
    )

    title_es = schema.TextLine(
        title=_(u"Title Spanish"),
        required=False,
    )

    title_fr = schema.TextLine(
        title=_(u"Title French"),
        required=False,
    )
コード例 #5
0
ファイル: platform.py プロジェクト: UPCnet/gwopa.core
class IPlatform(model.Schema):
    """  Project type
    """
    title = schema.TextLine(
        title=_(u"Title"),
        required=True,
    )

    description = schema.Text(
        title=_(u'Summary'),
        required=False,
        missing_value=u'',
    )

    image = namedfile.NamedBlobImage(
        title=_(u'Image'),
        required=False,
    )

    country = schema.List(
        title=_(u"Country"),
        description=_(
            u"Choose countries from list that represents this country."),
        value_type=schema.Choice(source=utils.countries),
        required=True,
    )

    region = schema.List(
        title=_(u"Region"),
        description=_(u"Choose region based on selected country."),
        value_type=schema.Choice(source=utils.countries),
        required=True,
    )
コード例 #6
0
class IOutcomecc(model.Schema):
    """  OutcomeCC Generic
    """
    directives.mode(title='hidden')
    title = schema.TextLine(
        title=_(u"Title"),
        required=True,
    )

    description = schema.Text(
        title=_(u'Summary'),
        required=False,
        missing_value=u'',
    )

    baseline = schema.TextLine(
        title=_(u"Baseline"),
        required=True,
    )

    baseline_date = schema.Date(title=_(u'Baseline date'), required=True)

    objective = schema.Text(
        title=_(u"Objective"),
        required=False,
    )

    objective_date = schema.Date(title=_(u"Objective date"), required=False)

    stage = schema.TextLine(
        title=_(u"Stage"),
        required=False,
    )
コード例 #7
0
ファイル: contributorother.py プロジェクト: UPCnet/gwopa.core
class IContribOther(model.Schema):
    """  Other contributor
    """
    title = schema.TextLine(
        title=_(u"Name"),
        required=True,
    )

    organization_roles = schema.Choice(
        title=_(u"Organization roles"),
        description=_(u"The roles of other organizations in project"),
        source=utils.settings_organization_roles,
        required=False,
    )

    incash = schema.Decimal(
        title=_(u'In-cash'),
        required=False,
    )

    directives.mode(currency_incash='display')
    currency_incash = schema.TextLine(title=_(u""), )

    inkind = schema.Decimal(
        title=_(u'In-kind'),
        required=False,
    )

    directives.mode(currency_inkind='display')
    currency_inkind = schema.TextLine(title=_(u""), )
コード例 #8
0
class IContribPartner(model.Schema):
    """  Partner contributor
    """
    form.mode(IEditForm, title='display')
    title = schema.TextLine(
        title=_(u"Name"),
        required=True,
    )

    partner_roles = schema.Choice(
        title=_(u"Partner roles"),
        description=_(u"The role of partner in project"),
        source=utils.settings_partner_roles,
        required=False,
    )

    incash = schema.Decimal(
        title=_(u'In-cash'),
        required=False,
    )

    directives.mode(currency_incash='display')
    currency_incash = schema.TextLine(title=_(u""), )

    inkind = schema.Decimal(
        title=_(u'In-kind'),
        required=False,
    )

    directives.mode(currency_inkind='display')
    currency_inkind = schema.TextLine(title=_(u""), )
コード例 #9
0
ファイル: utils.py プロジェクト: UPCnet/gwopa.core
def generate_vocabulary(value):
    """ Generates Dropdown with the countries. """
    vocabulary_list = []
    for row in value:
        entry = SimpleTerm(value=unicodedata.normalize('NFKD', row).encode(
            'ascii', errors='ignore').decode('ascii'),
                           title=_(row))
        vocabulary_list.append(entry)
    return SimpleVocabulary(vocabulary_list)
コード例 #10
0
ファイル: activity.py プロジェクト: UPCnet/gwopa.core
def checkDate(value):
    if value:
        req = getRequest()
        context = req.PARENTS[0]
        start_project = context.aq_parent.startactual.toordinal()
        end_project = context.aq_parent.completionactual.toordinal()
        date = value.date().toordinal()
        if not (date <= end_project and date >= start_project):
            raise Invalid(
                _(u'This date must be between the dates of the project.'))
    return True
コード例 #11
0
ファイル: reporting.py プロジェクト: UPCnet/gwopa.core
    def getItems(self):
        """ Returns all the project years of the planning """
        items = len(self.context.gwopa_year_phases)
        results = []
        total = 0

        while total != items:
            if total == 0:
                url = self.context.absolute_url_path() + '/reportPreview/'
            else:
                url = self.context.absolute_url_path(
                ) + '/reportPreview/' + str(total + 1)
            results.append(
                dict(title=_(u"Project year"),
                     year=str(total + 1),
                     url=url,
                     alt=_(u"Show report preview of year ") + str(total + 1)))
            total = total + 1

        return sorted(results, key=itemgetter('title'), reverse=False)
コード例 #12
0
class IOutcomezone(model.Schema):
    """  OutcomeZONE. """

    title = schema.TextLine(
        title=_(u"Title"),
        required=True,
    )

    zone = schema.TextLine(
        title=_(u'Zone'),
        required=False,
    )

    directives.widget('members', SelectWidget)
    members = schema.List(
        title=_(u"Responsible people"),
        value_type=schema.Choice(source=u'plone.app.vocabularies.Users'),
        required=False,
    )

    description = schema.Text(
        title=_(u'Description'),
        required=False,
        missing_value=u'',
    )

    baseline = schema.TextLine(
        title=_(u"Baseline value"),
        required=True,
    )

    baseline_date = schema.Datetime(title=_(u'Baseline date'),
                                    required=True,
                                    defaultFactory=todayValue)

    measuring_unit = schema.Choice(
        title=_(u"Measuring unit"),
        source=utils.settings_measuring_unit,
        required=True,
    )

    # measuring_frequency = schema.Choice(
    #     title=_(u"Monitoring and reporting frequency"),
    #     source=utils.settings_measuring_frequency,
    #     required=True,
    # )

    means = schema.Text(
        title=_(u"Means of verification"),
        required=False,
    )
コード例 #13
0
class IImprovementArea(form.Schema):
    """  Improvement Area type
    """
    form.mode(title='input')
    title = schema.Choice(
        title=_(u"Title"),
        source=utils.area_title,
        required=True,
    )

    form.mode(description='input')
    description = schema.Text(
        title=_(u'Description'),
        required=False,
        missing_value=u'',
    )

    image = namedfile.NamedBlobImage(
        title=_(u'Image'),
        description=_(u"Image used to describe the Area. If no file chosen, a defult one will be used."),
        required=False,
    )

    directives.mode(title_es='hidden')
    title_es = schema.TextLine(
        title=_(u"Title Spanish"),
        required=False,
    )

    directives.mode(title_fr='hidden')
    title_fr = schema.TextLine(
        title=_(u"Title French"),
        required=False,
    )
コード例 #14
0
ファイル: itemarea.py プロジェクト: UPCnet/gwopa.core
class IItemArea(model.Schema):
    """  Improvement Area Values
    """
    title = schema.TextLine(
        title=_(u"Title English"),
        required=True,
    )

    title_es = schema.TextLine(
        title=_(u"Title Spanish"),
        required=True,
    )

    title_fr = schema.TextLine(
        title=_(u"Title French"),
        required=True,
    )

    description = schema.Text(
        title=_(u'Summary'),
        required=False,
        missing_value=u'',
    )

    image = namedfile.NamedBlobImage(
        title=_(u'Image'),
        description=_(u"Image used to describe the Working Area"),
        required=False,
    )
コード例 #15
0
ファイル: program.py プロジェクト: UPCnet/gwopa.core
class IProgram(model.Schema):
    """  Project type
    """
    title = schema.TextLine(
        title=_(u"Title"),
        required=True,
    )

    description = schema.Text(
        title=_(u'Summary'),
        required=False,
        missing_value=u'',
    )

    image = namedfile.NamedBlobImage(
        title=_(u'Image'),
        required=False,
    )

    country = schema.List(
        title=_(u"Country"),
        description=_(
            u"Choose countries from list that represents this country."),
        value_type=schema.Choice(source=utils.countries),
        required=True,
    )

    contact = schema.TextLine(title=_(u'Contact email'),
                              required=False,
                              missing_value=u'',
                              constraint=isEmail)
コード例 #16
0
class IPartnershipPractice(form.Schema):
    """  Partnership Practice type
    """
    title = schema.TextLine(
        title=_(u"Title English"),
        required=True,
    )

    title_es = schema.TextLine(
        title=_(u"Title Spanish"),
        required=False,
    )

    title_fr = schema.TextLine(
        title=_(u"Title French"),
        required=False,
    )

    description = schema.TextLine(
        title=_(u"Description English"),
        required=True,
        missing_value=u'',
    )

    description_es = schema.TextLine(
        title=_(u"Description Spanish"),
        required=False,
        missing_value=u'',
    )

    description_fr = schema.TextLine(
        title=_(u"Description French"),
        required=False,
        missing_value=u'',
    )
コード例 #17
0
class IContribDonor(model.Schema):
    """  Donor contributor
    """
    form.mode(IEditForm, title='display')
    title = schema.TextLine(
        title=_(u"Name"),
        required=True,
    )

    incash = schema.Decimal(
        title=_(u'In-cash'),
        required=False,
    )

    directives.mode(currency_incash='display')
    currency_incash = schema.TextLine(title=_(u""), )

    inkind = schema.Decimal(
        title=_(u'In-kind'),
        required=False,
    )

    directives.mode(currency_inkind='display')
    currency_inkind = schema.TextLine(title=_(u""), )
コード例 #18
0
ファイル: output.py プロジェクト: UPCnet/gwopa.core
class IOutput(model.Schema):
    """  Output
    """
    title = schema.TextLine(
        title=_(u"Numeration - Title"),
        description=_(u"(e.g. 1.1 - Trained Staff)"),
        required=True,
    )

    description = schema.Text(
        title=_(u'Description'),
        required=False,
        missing_value=u'',
    )

    directives.mode(project_dates='display')
    project_dates = schema.Text(title=_(u''), )

    measuring_unit = schema.Choice(
        title=_(u"Measuring unit"),
        source=utils.settings_measuring_unit,
        required=True,
    )

    end = schema.Datetime(title=_(u'Completion date'),
                          required=True,
                          defaultFactory=todayValue)

    means = schema.Text(
        title=_(u"Means of verification"),
        required=False,
    )

    # risks = schema.Text(
    #     title=_(u"Risks / Assumptions"),
    #     required=False,
    # )

    directives.widget('members', SelectWidget)
    members = schema.List(
        title=_(u"Responsible people"),
        value_type=schema.Choice(source=u'plone.app.vocabularies.Users'),
        required=False,
    )
コード例 #19
0
ファイル: utils.py プロジェクト: UPCnet/gwopa.core
def listTypeOrganizations(context):
    types = []
    types.append(
        SimpleVocabulary.createTerm(u'Regional WOP Platform',
                                    'Regional WOP Platform',
                                    _(u'Regional WOP Platform')))
    types.append(
        SimpleVocabulary.createTerm(u'WOP Program', 'WOP Program',
                                    _(u'WOP Program')))
    types.append(
        SimpleVocabulary.createTerm(u'Water Operator', 'Water Operator',
                                    _(u'Water Operator')))
    types.append(SimpleVocabulary.createTerm(u'Donor', 'Donor', _(u'Donor')))
    types.append(
        SimpleVocabulary.createTerm(u'Non-participating users',
                                    'Non-participating users',
                                    _(u'Non-participating users')))
    types.append(SimpleVocabulary.createTerm(u'Others', 'Others',
                                             _(u'Others')))
    return SimpleVocabulary(types)
コード例 #20
0
def getOverallStatus(self):
    status = []
    status.append(SimpleVocabulary.createTerm(u'roadblock', 'roadblock', _(u'Roadblock')))
    status.append(SimpleVocabulary.createTerm(u'potential', 'potential', _(u'Potential Risks/Delays')))
    status.append(SimpleVocabulary.createTerm(u'ontrack', 'ontrack', _(u'On Track')))
    return SimpleVocabulary(status)
コード例 #21
0
ファイル: dashboard-areas.py プロジェクト: UPCnet/gwopa.core
    def getOutcomeCC(self):
        items = api.content.find(portal_type=['OutcomeCC'],
                                 context=self.context)
        results = []
        KEY = "GWOPA_TARGET_YEAR_" + str(self.year)
        for item in items:
            members = []
            obj = item.getObject()
            annotations = IAnnotations(item.getObject())
            base_value = ''
            base_date = ''
            description = ''
            objective = ''
            objective_date = ''
            target_value_planned = _(u"Not defined")
            specifics = ''
            monitoring = ''
            if KEY in annotations.keys():
                if annotations[KEY] != '' or annotations[
                        KEY] is not None or annotations[KEY] != 'None':
                    base_value = annotations[KEY]['generic'][0]['baseline']
                    base_date = annotations[KEY]['generic'][0]['baseline_date']
                    description = annotations[KEY]['generic'][0]['description']
                    objective = annotations[KEY]['generic'][0]['objective']
                    objective_date = annotations[KEY]['generic'][0][
                        'objective_date']
                    target_value_planned = annotations[KEY]['planned']
                    specifics = annotations[KEY]['specifics']
                    monitoring = annotations[KEY]['monitoring']

            if obj.members:
                users = obj.members
                if isinstance(users, (str, )):
                    for member in users.split(','):
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                else:
                    for member in users:
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))

            if obj.aq_parent.portal_type == 'ImprovementArea':
                area = obj.aq_parent.title
            else:
                area = obj.aq_parent.aq_parent.title
            results.append(
                dict(rid=item.getRID(),
                     area=area,
                     title=item.Title,
                     description=description,
                     base_date=base_date,
                     base_value=base_value,
                     objective=objective,
                     objective_date=objective_date,
                     target_value_planned=target_value_planned,
                     specifics=specifics,
                     monitoring=monitoring,
                     portal_type=item.portal_type,
                     responsible=members,
                     url='/'.join(obj.getPhysicalPath())))
        if len(results) != 0:
            return results[0]
        else:
            return False
コード例 #22
0
ファイル: indexers.py プロジェクト: UPCnet/gwopa.core
class UserPropertiesSoupCatalogFactory(object):
    """ The local user catalog (LUC) properties index factory. Almost all the
        properties have a field type "FullTextIndex" to allow wildcard queries
        on them. However, the FullTextIndex has a limitation its supported type
        of queries, so for certain operations is needed a FieldIndex for the
        username.
    """
    properties = [
        _(u'username'),
        _(u'fullname'),
        _(u'email'),
        _(u'description'),
        _(u'wop_platforms'),
        _(u'wop_programs'),
        _(u'wop_partners'),
        _(u'type_of_organization'),
        _(u'common_working_areas'),
        _(u'donor'),
        _(u'other'),
        _(u'country'),
        _(u'position'),
        _(u'phone'),
        _(u'home_page')]

    profile_properties = [
        'email',
        'description',
        'wop_platforms',
        'wop_programs',
        'wop_partners',
        'type_of_organization'
        'common_working_areas',
        'donor',
        'other',
        'country',
        'position',
        'phone',
        'home_page']

    directory_properties = ['email', 'phone', 'wop_platforms', 'wop_programs', 'wop_partners']

    directory_icons = {'email': 'fa fa-envelope',
                       'phone': 'fa fa-mobile',
                       'wop_platforms': 'fa fa-building-o',
                       'wop_programs': 'fa fa-building-o',
                       'wop_partners': 'fa fa-building-o',
                       }

    def __call__(self, context):
        catalog = Catalog()
        idindexer = NodeAttributeIndexer('id')
        catalog['id'] = CatalogFieldIndex(idindexer)

        userindexer = NodeAttributeIndexer('username')
        catalog['username'] = CatalogTextIndex(userindexer)

        fullname = NodeAttributeIndexer('fullname')
        catalog['fullname'] = CatalogTextIndex(fullname)

        email = NodeAttributeIndexer('email')
        catalog['email'] = CatalogTextIndex(email)

        wop_platforms = NodeAttributeIndexer('wop_platforms')
        catalog['wop_platforms'] = CatalogTextIndex(wop_platforms)

        wop_programs = NodeAttributeIndexer('wop_programs')
        catalog['wop_programs'] = CatalogTextIndex(wop_programs)

        wop_partners = NodeAttributeIndexer('wop_partners')
        catalog['wop_partners'] = CatalogTextIndex(wop_partners)

        country = NodeAttributeIndexer('country')
        catalog['country'] = CatalogTextIndex(country)

        position = NodeAttributeIndexer('position')
        catalog['position'] = CatalogTextIndex(position)

        type_of_organization = NodeAttributeIndexer('type_of_organization')
        catalog['type_of_organization'] = CatalogTextIndex(type_of_organization)

        common_working_areas = NodeAttributeIndexer('common_working_areas')
        catalog['common_working_areas'] = CatalogTextIndex(common_working_areas)

        donors = NodeAttributeIndexer('donors')
        catalog['donors'] = CatalogTextIndex(donors)

        other_info = NodeAttributeIndexer('other_info')
        catalog['other_info'] = CatalogTextIndex(other_info)

        return catalog
コード例 #23
0
ファイル: user_profile.py プロジェクト: UPCnet/gwopa.core
    def user_properties(self):
        member_data = api.user.get(username=self.username)
        profile__properties = [
            _(u'fullname'),
            _(u'email'),
            _(u'phone'),
            _(u'country'),
            _(u'position'),
            _(u'wop_programs'),
            _(u'wop_platforms'),
            _(u'wop_partners'),
            _(u'type_of_organization'),
            _(u'common_working_areas'),
            _(u'donor'),
            _(u'other')
        ]

        rendered_properties = []
        for prop in profile__properties:
            if prop != 'common_working_areas':
                rendered_properties.append(
                    dict(name=_(prop), value=member_data.getProperty(prop,
                                                                     '')))
            else:
                rendered_properties.append(
                    dict(name=_(prop),
                         value=utils.getTranslatedWorkingAreaFromID(
                             member_data.getProperty(prop, ''))))
        return rendered_properties
コード例 #24
0
class IReport(model.Schema):
    """  Report type
    """
    title = schema.TextLine(
        title=_(u"Title"),
        required=True,
    )

    form.mode(overall_project_status='hidden')
    overall_project_status = schema.Choice(
        title=_(u"Overall Project Status"),
        description=_(u"Select the overall Project status."),
        source=getOverallStatus,
        required=False,
    )

    form.mode(progress_stakeholders='hidden')
    progress_stakeholders = schema.Text(
        title=_(u'Progress stakeholders'),
        description=_(u"Insert a maximum of two paragraphs summarizing the progress during the reporting period that could be shared with the programs key stakeholders."),
        required=False,
        missing_value=u'',
    )

    form.mode(other_additional_challenges='hidden')
    other_additional_challenges = schema.Text(
        title=_(u'Other additional challenges'),
        description=_(u"Insert a maximum of two paragraphs summarizig the or other additional challenges/ lessons learned/ deviations to plans."),
        required=False,
        missing_value=u'',
    )

    form.mode(next_steps='hidden')
    next_steps = schema.Text(
        title=_(u'Next Steps'),
        required=False,
        missing_value=u'',
    )

    form.mode(IEditForm, project_year='hidden')
    project_year = schema.Choice(
        title=_(u"Project Year"),
        description=_(u"Choose project year to view in the report."),
        source=getProjectYears,
        required=True,
    )

    sections_reports = schema.List(
        title=_(u"Sections Report"),
        description=_(u"Choose sections to view in the report."),
        value_type=schema.Choice(
            source=listSectionsReport),
        default=['Project Overview', 'Summary', 'Activities and Outputs Progress', 'Outcomes - Utility Perfomance', 'Outcomes - Capacity', 'Next Steps', 'Budget'],
        required=True,
    )

    form.mode(save_data='hidden')
    save_data = JSONField(
        title=_(u"Data"),
        required=False,
    )

    form.mode(report_type='hidden')
    report_type = schema.Choice(
        title=_(u"Type"),
        source=getReportTypes,
        default=u'manual',
        required=False,
    )
コード例 #25
0
def getReportTypes(self):
    status = []
    status.append(SimpleVocabulary.createTerm(u'manual', 'manual', _(u'Manual')))
    status.append(SimpleVocabulary.createTerm(u'auto', 'auto', _(u'Auto')))
    return SimpleVocabulary(status)
コード例 #26
0
ファイル: monitoring.py プロジェクト: UPCnet/gwopa.core
    def outputsInside(self, item):
        """ Returns Outpus inside Activities  """
        portal_catalog = getToolByName(self, 'portal_catalog')
        folder_path = item['url']
        data_year = self.context.gwopa_year_phases[int(self.year) - 1]
        start = datetime.datetime.strptime(data_year['start_iso'], '%Y-%m-%d')
        end = datetime.datetime.strptime(data_year['end_iso'], '%Y-%m-%d')

        range_end = {'query': (start, end), 'range': 'min:max'}
        outputs1 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Output'],
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        range_end = {'query': (end), 'range': 'min'}
        outputs2 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Output'],
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        items = outputs1 + outputs2

        elements = []

        for item in items:
            if item.getObject() not in elements:
                elements.append(item.getObject())

        results = []
        KEY = "GWOPA_TARGET_YEAR_" + str(self.year)
        for item in elements:
            annotations = IAnnotations(item)
            if KEY in annotations.keys():
                if annotations[KEY] == '' or annotations[
                        KEY] is None or annotations[KEY] == 'None':
                    target_value_real = ''
                    target_value_planned = _(u"Not defined")
                    monitoring_info = ''
                else:
                    target_value_real = annotations[KEY]['real']
                    target_value_planned = annotations[KEY]['planned']
                    monitoring_info = annotations[KEY]['monitoring']
            else:
                target_value_real = ''
                target_value_planned = '-----'
                monitoring_info = ""
            if item.portal_type == 'Activity':
                unit = ''
            else:
                unit = getTranslatedMesuringUnitFromID(item.measuring_unit)
            if not item.start:
                start = '-----'
            else:
                start = item.start.strftime('%Y-%m')
            if not item.end:
                end = '-----'
            else:
                end = item.end.strftime('%Y-%m')
            if monitoring_info == '':
                consideration, explanation, limiting, obstacles, contributing, progress, updated, dictObstacles, dictContributing = '', '', '', '', '', '', '', '', ''
            else:
                consideration = monitoring_info[
                    'consideration'] if monitoring_info.get(
                        'consideration') is not None else ''
                explanation = monitoring_info[
                    'explanation'] if monitoring_info.get(
                        'explanation') is not None else ''
                obstacles = monitoring_info['obstacles'] if monitoring_info.get(
                    'obstacles') is not None else ''
                dictObstacles = json.dumps(
                    getDictTranslatedObstaclesFromList(
                        obstacles)) if obstacles != '' else ''
                contributing = monitoring_info[
                    'contributing'] if monitoring_info.get(
                        'contributing') is not None else ''
                dictContributing = json.dumps(
                    getDictTranslatedContributingFromList(
                        contributing)) if contributing != '' else ''
                limiting = monitoring_info['limiting'] if monitoring_info.get(
                    'limiting') is not None else ''
                progress = monitoring_info['progress'] if monitoring_info.get(
                    'progress') is not None else ''
                updated = monitoring_info['updated'] if monitoring_info.get(
                    'updated') is not None else ''

            results.append(
                dict(title=item.title,
                     path='/'.join(item.getPhysicalPath()),
                     id=item.id,
                     portal_type=item.portal_type,
                     start=start,
                     end=end,
                     unit=unit,
                     target_value_real=target_value_real,
                     target_value_planned=target_value_planned,
                     year=self.year,
                     next_update=data_year['end_iso'][0:7],
                     consideration=consideration,
                     explanation=explanation,
                     obstacles=obstacles,
                     dict_obstacles=dictObstacles,
                     contributing=contributing,
                     dict_contributing=dictContributing,
                     limiting=limiting,
                     progress=progress,
                     updated=updated,
                     url='/'.join(item.getPhysicalPath())))

        return sorted(results, key=itemgetter('title'), reverse=False)
コード例 #27
0
ファイル: planning.py プロジェクト: UPCnet/gwopa.core
    def listOutcomesKPI(self):
        items = api.content.find(portal_type=['OutcomeZONE'],
                                 context=self.context)
        results = []
        KEY = "GWOPA_TARGET_YEAR_" + str(self.year)
        for item in items:
            members = []
            members_id = []
            obj = item.getObject()
            annotations = IAnnotations(item.getObject())
            if KEY in annotations.keys():
                if annotations[KEY] == '' or annotations[
                        KEY] is None or annotations[KEY] == 'None':
                    target_value_planned = _(u"Not defined")
                    unit = ''
                else:
                    target_value_planned = annotations[KEY]['planned']
                    unit = obj.measuring_unit
            else:
                target_value_planned = _(u"Not defined")
                unit = ''

            if obj.members:
                users = obj.members
                if isinstance(users, (str, )):
                    for member in users.split(','):
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                            members_id.append(member)
                else:
                    for member in users:
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                            members_id.append(member)

            if obj.means:
                means = obj.means
            else:
                means = ''

            # if obj.risks:
            #     risks = obj.risks
            # else:
            #     risks = ''
            results.append(
                dict(
                    title=getTranslatedOutcomesFromTitle(item.Title),
                    description=item.Description,
                    base_date=obj.baseline_date.strftime('%Y-%m'),
                    base_date_edit=obj.baseline_date.strftime('%Y-%m-%d'),
                    base_value=obj.baseline,
                    zone=obj.zone,
                    unit=unit,
                    unit_text=getTranslatedMesuringUnitFromID(
                        obj.measuring_unit),
                    target_value_planned=target_value_planned,
                    portal_type=item.portal_type,
                    responsible=members,
                    responsible_id=members_id,
                    means=means,
                    # risks=risks,
                    url='/'.join(obj.getPhysicalPath())))

        return sorted(results, key=itemgetter('title'), reverse=False)
コード例 #28
0
ファイル: planning.py プロジェクト: UPCnet/gwopa.core
    def outputsInside(self, item):
        """  Returns Outpus inside Activities """
        portal_catalog = getToolByName(self, 'portal_catalog')
        folder_path = item['url']
        data_year = self.context.gwopa_year_phases[int(self.year) - 1]

        start = datetime.datetime.strptime(data_year['start_iso'], '%Y-%m-%d')
        end = datetime.datetime.strptime(data_year['end_iso'], '%Y-%m-%d')

        range_end = {'query': (start, end), 'range': 'min:max'}
        outputs1 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Output'],
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        range_end = {'query': (end), 'range': 'min'}
        outputs2 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Output'],
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        items = outputs1 + outputs2

        elements = []
        for item in items:
            if item.getObject() not in elements:
                elements.append(item.getObject())
        results = []
        KEY = "GWOPA_TARGET_YEAR_" + str(self.year)
        for item in elements:
            members = []
            members_id = []
            annotations = IAnnotations(item)
            target_value_planned = _(u"Not defined")
            if KEY in annotations.keys():
                if annotations[KEY] != '' or annotations[
                        KEY] is not None or annotations[KEY] != 'None':
                    target_value_planned = annotations[KEY]['planned']

            if item.members:
                users = item.members
                if isinstance(users, (str, )):
                    for member in users.split(','):
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                            members_id.append(member)
                else:
                    for member in users:
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                            members_id.append(member)

            if item.description:
                description = item.description
            else:
                description = ''

            if item.means:
                means = item.means
            else:
                means = ''

            # if item.risks:
            #     risks = item.risks
            # else:
            #     risks = ''

            results.append(
                dict(
                    title=item.title,
                    portal_type=item.portal_type,
                    start='----',
                    end=item.end.strftime('%Y-%m-%d'),
                    unit=item.measuring_unit,
                    unit_text=getTranslatedMesuringUnitFromID(
                        item.measuring_unit),
                    limit_start='----',
                    limit_end=item.end.strftime('%Y %m %d').replace(
                        ' 0', ' ').replace(' ', ','),
                    target_value_planned=target_value_planned,
                    responsible=members,
                    responsible_id=members_id,
                    description=description,
                    means=means,
                    # risks=risks,
                    url='/'.join(item.getPhysicalPath())))

        return sorted(results, key=itemgetter('title'), reverse=False)
コード例 #29
0
ファイル: planning.py プロジェクト: UPCnet/gwopa.core
    def activitiesInside(self, item):
        """ Returns Activities inside Working Area """
        portal_catalog = getToolByName(self, 'portal_catalog')
        folder_path = item['url']
        data_year = self.context.gwopa_year_phases[int(self.year) - 1]
        start = datetime.datetime.strptime(data_year['start_iso'], '%Y-%m-%d')
        end = datetime.datetime.strptime(data_year['end_iso'], '%Y-%m-%d')

        # Los de la fase [---]
        range_start = {'query': (start, end), 'range': 'min:max'}
        range_end = {'query': (start, end), 'range': 'min:max'}
        activities1 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Activity'],
            start=range_start,
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        # Los de fuera de la fase start y end ---][----
        range_start = {'query': (start), 'range': 'max'}
        range_end = {'query': (end), 'range': 'min'}
        activities2 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Activity'],
            start=range_start,
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        # Los que empiezan antes y acaban en fase ---]
        ranges = {'query': (start), 'range': 'max'}
        range_end = {'query': (start, end), 'range': 'min:max'}

        activities3 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Activity'],
            start=ranges,
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        # Los que empiezan aqui y acaban despues [----
        range_start = {'query': (start, end), 'range': 'min:max'}
        range_end = {'query': (end), 'range': 'min'}
        activities4 = portal_catalog.unrestrictedSearchResults(
            portal_type=['Activity'],
            start=range_start,
            end=range_end,
            path={
                'query': folder_path,
                'depth': 1
            })

        items = activities1 + activities2 + activities3 + activities4

        elements = []

        for item in items:
            if item.getObject() not in elements:
                elements.append(item.getObject())
        results = []
        KEY = "GWOPA_TARGET_YEAR_" + str(self.year)
        for item in elements:
            members = []
            annotations = IAnnotations(item)
            target_value_planned = _(u"Not defined")
            if KEY in annotations.keys():
                if annotations[KEY] != '' or annotations[
                        KEY] is not None or annotations[KEY] != 'None':
                    target_value_planned = annotations[KEY]['planned']

            if item.members:
                users = item.members
                if isinstance(users, (str, )):
                    for member in users.split(','):
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                else:
                    for member in users:
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))

            results.append(
                dict(title=item.title,
                     portal_type=item.portal_type,
                     start=item.start.strftime('%Y-%m-%d'),
                     end=item.end.strftime('%Y-%m-%d'),
                     limit_start=item.start.strftime('%Y %m %d').replace(
                         ' 0', ' ').replace(' ', ','),
                     limit_end=item.end.strftime('%Y %m %d').replace(
                         ' 0', ' ').replace(' ', ','),
                     target_value_planned='-----',
                     responsible=members,
                     url='/'.join(item.getPhysicalPath())))

        return sorted(results, key=itemgetter('title'), reverse=False)
コード例 #30
0
ファイル: monitoring.py プロジェクト: UPCnet/gwopa.core
    def listOutcomesKPI(self):
        items = api.content.find(portal_type=['OutcomeZONE'],
                                 context=self.context)
        results = []
        KEY = "GWOPA_TARGET_YEAR_" + str(self.year)
        data_year = self.context.gwopa_year_phases[int(self.year) - 1]
        for item in items:
            members = []
            obj = item.getObject()
            annotations = IAnnotations(obj)
            if KEY in annotations.keys():
                if annotations[KEY] == '' or annotations[
                        KEY] is None or annotations[KEY] == 'None':
                    target_value_real = ''
                    target_value_planned = _(u"Not defined")
                    monitoring_info = dict(
                        progress='',
                        explanation='',
                        obstacles='',
                        contributing='',
                        consideration='',
                        limiting='',
                        updated='',
                    )
                    monitoring_info = monitoring_info
                else:
                    target_value_real = annotations[KEY]['real']
                    target_value_planned = annotations[KEY]['planned']
                    monitoring_info = annotations[KEY]['monitoring']
            else:
                target_value_real = ''
                target_value_planned = '-----'
                monitoring_info = dict(
                    progress='',
                    explanation='',
                    obstacles='',
                    contributing='',
                    consideration='',
                    limiting='',
                    updated='',
                )
                monitoring_info = monitoring_info

            if obj.members:
                users = obj.members
                if isinstance(users, (str, )):
                    for member in users.split(','):
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))
                else:
                    for member in users:
                        user = api.user.get(username=member)
                        if user:
                            members.append(user.getProperty('fullname'))

            obstacles = monitoring_info[
                'obstacles'] if monitoring_info.has_key('obstacles') else ''
            contributing = monitoring_info[
                'contributing'] if monitoring_info.has_key(
                    'contributing') else ''
            dictObstacles = json.dumps(
                getDictTranslatedObstaclesFromList(
                    obstacles)) if obstacles != '' else ''
            dictContributing = json.dumps(
                getDictTranslatedContributingFromList(
                    contributing)) if contributing != '' else ''

            results.append(
                dict(
                    path=item.getPath(),
                    id=item.id,
                    year=self.year,
                    portal_type=item.portal_type,
                    start=item.start,
                    title=getTranslatedOutcomesFromTitle(item.Title),
                    description=item.Description,
                    base_value=obj.baseline,
                    base_date=obj.baseline_date.strftime('%Y-%m'),
                    zone=obj.zone,
                    unit=getTranslatedMesuringUnitFromID(obj.measuring_unit),
                    means=obj.means,
                    # risks=obj.risks,
                    responsible=members,
                    next_update=data_year['end_iso'][0:7],
                    target_value_real=target_value_real,
                    target_value_planned=target_value_planned,
                    consideration=monitoring_info['consideration']
                    if monitoring_info.has_key('consideration') else '',
                    explanation=monitoring_info['explanation']
                    if monitoring_info.has_key('explanation') else '',
                    obstacles=obstacles,
                    dict_obstacles=dictObstacles,
                    contributing=contributing,
                    dict_contributing=dictContributing,
                    limiting=monitoring_info['limiting']
                    if monitoring_info.has_key('limiting') else '',
                    progress=monitoring_info['progress']
                    if monitoring_info.has_key('progress') else '',
                    updated=monitoring_info['updated']
                    if monitoring_info.has_key('updated') else '',
                    url='/'.join(obj.getPhysicalPath())))

        return sorted(results, key=itemgetter('title'), reverse=False)