Exemple #1
0
 def __call__(self, context):
     values = [{
         "MALE": _("MALE", u"Male")
     }, {
         "FEMALE": _("FEMALE", u"Female")
     }]
     return dict_list_2_vocabulary(values)
Exemple #2
0
 def __call__(self, context):
     values = [{
         "FOR": _("FOR", u"For")
     }, {
         "AGAINST": _("AGAINST", u"Against")
     }]
     return dict_list_2_vocabulary(values)
Exemple #3
0
    def send_mail(self, url):
        lang = api.portal.get_current_language()[:2]
        email = api.portal.get_registry_record(
            "ideabox.policy.browser.controlpanel.IIdeaBoxSettingsSchema.project_manager_email",
            default=None,
        )
        if email is None:
            logger.warn("missing email for project submission notification")
            return

        list_mail = email.split(";")

        body = translate(
            _(
                u"email_body_project_submission",
                default=u"""A new project has been created you can access it at the following url:
              ${url}
              """,
                mapping={u"url": url},
            ),
            target_language=lang,
        )
        for mail in list_mail:
            api.portal.send_email(
                recipient=mail,
                subject=translate(_(u"New project submission"), target_language=lang),
                body=body,
            )
Exemple #4
0
class ITimelineTile(Schema):
    """A tile that displays a listing of content items"""

    steps = schema.Text(
        title=_(u"Steps for timeline"),
        description=_(u"Title; Date; Link"),
        required=True,
    )
Exemple #5
0
class IdeaBoxSettingsEditForm(controlpanel.RegistryEditForm):

    schema = IIdeaBoxSettingsSchema
    label = _(u"Configuration for ideabox product")
    description = _(u"")

    def updateFields(self):
        super(IdeaBoxSettingsEditForm, self).updateFields()

    def updateWidgets(self):
        super(IdeaBoxSettingsEditForm, self).updateWidgets()
Exemple #6
0
class IIdeaBoxSettingsSchema(Interface):

    project_manager_email = schema.TextLine(
        title=_(u"Email address of the project manager"),
        description=
        _(u"If there are multiple email addresses, separate them with semicolons"
          ),
    )

    project_submission = schema.Bool(
        title=_(u"Enable / Disable project submission"), default=True)
Exemple #7
0
def add_taxonomies():
    current_lang = api.portal.get_current_language()[:2]

    data_theme = {
        "taxonomy": "theme",
        "field_title": translate(_("Theme"), target_language=current_lang),
        "field_description": "",
        "default_language": "fr",
        "filename": "taxonomy-settings-theme.xml",
    }

    data_district = {
        "taxonomy": "district",
        "field_title": translate(_("District"), target_language=current_lang),
        "field_description": "",
        "default_language": "fr",
        "filename": "taxonomy-settings-district.xml",
    }

    data_iam = {
        "taxonomy": "iam",
        "field_title": translate(_("I am"), target_language=current_lang),
        "field_description": "",
        "default_language": "fr",
        "filename": "taxonomy-settings-iam.xml",
    }

    portal = api.portal.get()
    sm = portal.getSiteManager()
    theme_item = "collective.taxonomy.theme"
    district_item = "collective.taxonomy.district"
    iam_item = "collective.taxonomy.iam"
    utility_theme = sm.queryUtility(ITaxonomy, name=theme_item)
    utility_district = sm.queryUtility(ITaxonomy, name=district_item)
    utility_iam = sm.queryUtility(ITaxonomy, name=iam_item)

    if utility_theme and utility_district and utility_iam:
        return

    create_taxonomy_object(data_theme, portal)
    create_taxonomy_object(data_district, portal)
    create_taxonomy_object(data_iam, portal)

    # remove taxonomy test
    item = "collective.taxonomy.test"
    utility = sm.queryUtility(ITaxonomy, name=item)
    if utility:
        utility.unregisterBehavior()
        sm.unregisterUtility(utility, ITaxonomy, name=item)
        sm.unregisterUtility(utility, IVocabularyFactory, name=item)
        sm.unregisterUtility(utility, ITranslationDomain, name=item)
Exemple #8
0
def add_taxonomies():
    current_lang = api.portal.get_current_language()[:2]

    data_theme = {
        "taxonomy": "theme",
        "field_title": translate(_("Theme"), target_language=current_lang),
        "field_description": "",
        "default_language": "fr",
        "filename": "taxonomy-settings-theme.xml",
    }

    data_district = {
        "taxonomy": "district",
        "field_title": translate(_("District"), target_language=current_lang),
        "field_description": "",
        "default_language": "fr",
        "filename": "taxonomy-settings-district.xml",
    }

    data_iam = {
        "taxonomy": "iam",
        "field_title": translate(_("I am"), target_language=current_lang),
        "field_description": "",
        "default_language": "fr",
        "filename": "taxonomy-settings-iam.xml",
    }

    portal = api.portal.get()
    sm = portal.getSiteManager()
    theme_item = "collective.taxonomy.theme"
    district_item = "collective.taxonomy.district"
    iam_item = "collective.taxonomy.iam"
    utility_theme = sm.queryUtility(ITaxonomy, name=theme_item)
    utility_district = sm.queryUtility(ITaxonomy, name=district_item)
    utility_iam = sm.queryUtility(ITaxonomy, name=iam_item)

    if utility_theme and utility_district and utility_iam:
        return

    create_taxonomy_object(data_theme, portal)
    create_taxonomy_object(data_district, portal)
    create_taxonomy_object(data_iam, portal)

    # remove taxonomy test
    item = "collective.taxonomy.test"
    utility = sm.queryUtility(ITaxonomy, name=item)
    if utility:
        utility.unregisterBehavior()
        sm.unregisterUtility(utility, ITaxonomy, name=item)
        sm.unregisterUtility(utility, IVocabularyFactory, name=item)
        sm.unregisterUtility(utility, ITranslationDomain, name=item)
Exemple #9
0
 def get_summary(self):
     return (
         {
             "title": "study_in_progress",
             "count": self.count("study_in_progress"),
             "description": _(u"diagnose and analysis"),
         },
         {
             "title": "in_progress",
             "count": self.count("in_progress"),
             "description": _(u"Setting up"),
         },
         {"title": "realized", "count": self.count("realized"), "description": None},
     )
Exemple #10
0
class IProjectsTile(Schema):
    """A tile that displays a listing of content items"""

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

    limit = schema.Int(
        title=_(u"Limit"),
        description=_(u"Limit projects"),
        required=False,
        default=6,
        min=1,
        max=15,
    )
Exemple #11
0
 def update_user(self, user, data):
     updates = {}
     new_properties = {
         "last_name":
         data["last_name"]
         or translate(_(u"Anonymous"), context=self.request),
         "first_name":
         data["first_name"],
         "gender":
         data["gender"],
         "birthdate":
         data["birthdate"],
         "zip_code":
         data["zip_code"],
         "iam":
         data["iam"],
         "address":
         data["address"],
     }
     for field, new_value in new_properties.items():
         if not new_value:
             continue
         if user.getProperty(field) != new_value:
             updates[field] = new_value
     user.setMemberProperties(mapping=updates)
Exemple #12
0
    def create_user(self, data):
        if data["mail"]:
            existing_user = api.user.get(userid=data["mail"].lower())
            if existing_user:
                self.update_user(existing_user, data)
                return existing_user
        properties = dict(
            last_name=data["last_name"]
            or translate(_(u"Anonymous"), context=self.request),
            first_name=data["first_name"],
            gender=data["gender"],
            birthdate=data["birthdate"],
            zip_code=data["zip_code"],
            iam=data["iam"],
            address=data["address"],
        )
        if not data["mail"]:
            normalizer = getUtility(IIDNormalizer)
            mail = "{0}_{1}@liege2025.be".format(
                normalizer.normalize(data["last_name"])[:15],
                hashlib.md5(str(time.time())).hexdigest()[:10],
            )
        else:
            mail = data["mail"]

        return api.user.create(
            email=mail.lower(),
            password="******".format(password_generator.generate()),
            properties=properties,
        )
    def create_user(self, data):
        if data["mail"]:
            existing_user = api.user.get(userid=data["mail"].lower())
            if existing_user:
                self.update_user(existing_user, data)
                return existing_user
        properties = dict(
            last_name=data["last_name"]
            or translate(_(u"Anonymous"), context=self.request),
            first_name=data["first_name"],
            gender=data["gender"],
            birthdate=data["birthdate"],
            zip_code=data["zip_code"],
            iam=data["iam"],
            address=data["address"],
        )
        if not data["mail"]:
            normalizer = getUtility(IIDNormalizer)
            mail = "{0}_{1}_{2}@liege2025.be".format(
                normalizer.normalize(data["title"]),
                data["last_name"],
                hashlib.md5(str(time.time())).hexdigest()[:4],
            )
        else:
            mail = data["mail"]

        return api.user.create(
            email=mail.lower(),
            password="******".format(password_generator.generate()),
            properties=properties,
        )
Exemple #14
0
class IVoteEncoding(IEnhancedUserDataSchema):
    mail = schema.Email(title=_(u"Email"), required=False)

    form.widget(vote=RadioFieldWidget)
    vote = schema.Choice(title=_(u"Vote"),
                         required=True,
                         vocabulary=u"ideabox.vocabularies.vote")

    form.widget(project=MultiSelect2FieldWidget)
    project = schema.List(
        title=_(u"Project(s)"),
        value_type=schema.Choice(
            title=_(u"Project"),
            vocabulary=u"ideabox.vocabularies.projects",
        ),
        required=True,
    )
Exemple #15
0
 def get_summary(self):
     return (
         {
             "title": "study_in_progress",
             "count": self.count("study_in_progress"),
             "description": _(u"diagnose and analysis"),
         },
         {
             "title": "in_progress",
             "count": self.count("in_progress"),
             "description": _(u"Setting up"),
         },
         {
             "title": "realized",
             "count": self.count("realized"),
             "description": None
         },
     )
Exemple #16
0
    def handleApply(self, action):
        data, errors = self.extractData()
        if errors:
            self.status = self.formErrorsMessage
            return

        self.send_request(data)
        messages = IStatusMessage(self.request)
        messages.add(_(u"The votes have been encoded correctly"), type=u"info")
Exemple #17
0
class PositiveRatingRenderer(ExtendedRenderer):
    name = _(u"Positive rating ")

    def render_value(self, obj):
        annotations = IAnnotations(obj)
        vote = annotations.get("cioppino.twothumbs.yays")
        if vote:
            return len(annotations["cioppino.twothumbs.yays"])
        return 0
Exemple #18
0
class NegativeVotersListRenderer(ExtendedRenderer):
    name = _(u"Voters opposed")

    def render_value(self, obj):
        annotations = IAnnotations(obj)
        voters = []
        vote = annotations.get("cioppino.twothumbs.nays")
        if vote:
            for voter in annotations["cioppino.twothumbs.nays"]:
                voters.append(voter)
        return ",".join(voters)
Exemple #19
0
class IProject(model.Schema):
    """IProject"""

    title = schema.TextLine(title=DXMF(u"label_title", default=u"Title"),
                            required=True)

    form.widget(project_theme=MultiSelect2FieldWidget)
    project_theme = schema.List(
        title=_(u"Domain(s) concerned"),
        value_type=schema.Choice(title=_(u"Domain(s) concerned"),
                                 vocabulary=u"collective.taxonomy.theme"),
        required=True,
    )

    form.widget(project_district=MultiSelect2FieldWidget)
    project_district = schema.List(
        title=_(u"District(s) concerned"),
        value_type=schema.Choice(
            title=_(u"District(s) concerned"),
            vocabulary=u"collective.taxonomy.district",
        ),
        required=True,
    )

    body = RichText(title=_(u"Content"), required=True)
    form.widget("body", RichTextFieldWidget)
    model.primary("body")

    form.mode(original_author="hidden")
    original_author = schema.TextLine(title=_(u"Original author"),
                                      required=False)
Exemple #20
0
class UserVotesRenderer(ExtendedRenderer):
    name = _(u"Votes")

    def render_value(self, obj):
        projects = []
        userid = obj.getProperty("id")
        portal = api.portal.get()["projets"]
        for project in api.content.find(context=portal, portal_type="Project"):
            annotations = IAnnotations(project.getObject())
            vote = annotations.get("cioppino.twothumbs.yays")
            if vote:
                if userid in annotations["cioppino.twothumbs.yays"]:
                    projects.append(project.Title)
        return projects
Exemple #21
0
class WorkflowHistoryForm(Form):
    implements(IWorkflowForm)
    ignoreContext = True

    _states = (
        "deposited",
        "project_analysis",
        "vote",
        "result_analysis",
        "selected",
        "rejected",
        "study_in_progress",
        "in_progress",
        "realized",
    )

    @property
    def workflow(self):
        return self.context.workflow_history.values()[0]

    def update(self):
        current_state = api.content.get_state(obj=self.context)
        states = self._states[:self._states.index(current_state) + 1]
        for idx, state in enumerate(states):
            self.fields += Fields(
                InterfaceClass(
                    "IWorkflowHistory{0}",
                    attrs={
                        state: schema.Date(title=translate(state,
                                                           domain="plone"),
                                           required=True)
                        for l in self.workflow
                        if l.get("review_state") == state
                    },
                ))
        super(WorkflowHistoryForm, self).update()

    @button.buttonAndHandler(_(u"Save"), name="save")
    def handleApply(self, action):
        data, errors = self.extractData()
        workflow_history = self.context.workflow_history
        for line in workflow_history.values()[0]:
            state = line.get("review_state")
            if state in data:
                line["time"] = DateTime(
                    datetime.combine(data[state], datetime.min.time()))
        self.context.workflow_history = PersistentMapping(
            workflow_history.items())
        self.request.response.redirect(self.context.absolute_url())
Exemple #22
0
class UserBirthdateRenderer(UserPropertyRenderer):
    name = _(u"Birthdate")
    prop = "birthdate"

    def render_collection_entry(self, obj, value):
        return value.strftime("%d/%m/%Y")

    def render_style(self, obj, base_style):
        base_style.num_format_str = "dd/mm/yyyy"
        return base_style

    def render_value(self, obj):
        value = super(UserBirthdateRenderer, self).render_value(obj)
        if value:
            return self.render_collection_entry(obj, value)
Exemple #23
0
class UserGenderRenderer(UserPropertyRenderer):
    name = _(u"Gender")
    prop = "gender"

    def render_value(self, obj):
        value = super(UserGenderRenderer, self).render_value(obj)
        if value:
            factory = getUtility(IVocabularyFactory, "ideabox.vocabularies.gender")
            vocabulary = factory(self.context)
            try:
                return translate(
                    vocabulary.getTerm(obj.getProperty("gender")).title,
                    target_language=api.portal.get_current_language(),
                )
            except KeyError:
                return
Exemple #24
0
class UserIamRenderer(UserPropertyRenderer):
    name = _(u"I am")
    prop = "iam"

    def render_value(self, obj):
        value = super(UserIamRenderer, self).render_value(obj)
        if value:
            factory = getUtility(IVocabularyFactory, "collective.taxonomy.iam")
            vocabulary = factory(self.context)
            try:
                return translate(
                    vocabulary.getTerm(obj.getProperty("iam")).title,
                    target_language=api.portal.get_current_language(),
                )
            except KeyError:
                return
 def update_user(self, user, data):
     updates = {}
     new_properties = {
         "last_name": data["last_name"]
         or translate(_(u"Anonymous"), context=self.request),
         "first_name": data["first_name"],
         "gender": data["gender"],
         "birthdate": data["birthdate"],
         "zip_code": data["zip_code"],
         "iam": data["iam"],
         "address": data["address"],
     }
     for field, new_value in new_properties.items():
         if not new_value:
             continue
         if user.getProperty(field) != new_value:
             updates[field] = new_value
     user.setMemberProperties(mapping=updates)
Exemple #26
0
class IEnhancedUserDataSchema(model.Schema):

    last_name = schema.TextLine(title=_(u"Last name or institution"),
                                required=True)

    first_name = schema.TextLine(title=_(u"First name"), required=False)

    address = schema.Text(title=_(u"Address"), required=False)

    gender = schema.Choice(title=_(u"Gender"),
                           required=True,
                           vocabulary=u"ideabox.vocabularies.gender")

    birthdate = schema.Date(title=_(u"Birthdate"), required=True)

    zip_code = schema.Choice(title=_(u"Zip code"),
                             required=True,
                             vocabulary=u"ideabox.vocabularies.zip_code")

    iam = schema.Choice(title=_(u"I am"),
                        required=True,
                        vocabulary=u"collective.taxonomy.iam")
Exemple #27
0
class UserAddressRenderer(UserPropertyRenderer):
    name = _(u"Address")
    prop = "address"
Exemple #28
0
class UserFirstNameRenderer(UserPropertyRenderer):
    name = _(u"First name")
    prop = "first_name"
Exemple #29
0
class UserLastNameRenderer(UserPropertyRenderer):
    name = _(u"Last name")
    prop = "last_name"
Exemple #30
0
 def title(self):
     return _("Projects in progression")
Exemple #31
0
 def title(self):
     return _("The 7 main themes")
Exemple #32
0
 def title(self):
     return _("The 7 main themes")
Exemple #33
0
 def title(self):
     return _("Projects in progression")
Exemple #34
0
class UserZipCodeRenderer(UserPropertyRenderer):
    name = _(u"Zip code")
    prop = "zip_code"
Exemple #35
0
class UserIdRenderer(UserPropertyRenderer):
    name = _(u"User ID")
    prop = "id"
Exemple #36
0
 def __call__(self, context):
     values = [{"MALE": _("MALE", u"Male")}, {"FEMALE": _("FEMALE", u"Female")}]
     return dict_list_2_vocabulary(values)
Exemple #37
0
 def title(self):
     return self.data.get("title") or _(u"Projects")