Beispiel #1
0
 def view_email(self, filename, REQUEST=None, RESPONSE=None):
     """ Display a specfic saved email """
     email = get_bulk_email(self.getSite(), filename,
                            where_to_read=path_in_site(self.getMeeting()))
     return self.getFormsTool().getContent(
         {'here': self,
          'email': email,
          'meeting': self.getMeeting()},
         'naaya.content.meeting.email_view_email')
 def view_email(self, filename, REQUEST=None, RESPONSE=None):
     """ Display a specfic saved email """
     email = get_bulk_email(self.getSite(), filename,
                            where_to_read=path_in_site(
                                self.get_consultation()))
     return self.getFormsTool().getContent(
         {'here': self, 'email': email,
          'consultation': self.get_consultation()},
         'tb_consultation-view_email')
 def mail_in_queue(self, filename):
     """ Check if a specific message is still in queue """
     COMMON_KEYS = ['sender', 'recipients', 'subject', 'content', 'date']
     check_values = {}
     archived_email = get_bulk_email(self.getSite(), filename,
                                     where_to_read=path_in_site(
                                         self.get_consultation()))
     for key in COMMON_KEYS:
         check_values[key] = archived_email[key]
     return _mail_in_queue(self.getSite(), filename, check_values)
Beispiel #4
0
 def mail_in_queue(self, filename):
     """ Check if a specific message is still in queue """
     COMMON_KEYS = ['sender', 'recipients', 'subject', 'content', 'date']
     check_values = {}
     archived_email = get_bulk_email(self.getSite(),
                                     filename,
                                     where_to_read=path_in_site(
                                         self.get_consultation()))
     for key in COMMON_KEYS:
         check_values[key] = archived_email[key]
     return _mail_in_queue(self.getSite(), filename, check_values)
Beispiel #5
0
 def mail_in_queue(self, filename):
     """ Check if a specific message is still in queue """
     # removed recipients from COMMON_KEYS because of signup
     # recipients splitting
     COMMON_KEYS = ['sender', 'subject', 'content', 'date']
     check_values = {}
     archived_email = get_bulk_email(
         self.getSite(), filename,
         where_to_read=path_in_site(self.getMeeting()))
     for key in COMMON_KEYS:
         check_values[key] = archived_email[key]
     return _mail_in_queue(self.getSite(), filename, check_values)
Beispiel #6
0
 def view_email(self, filename, REQUEST=None, RESPONSE=None):
     """ Display a specfic saved email """
     email = get_bulk_email(self.getSite(),
                            filename,
                            where_to_read=path_in_site(
                                self.get_consultation()))
     return self.getFormsTool().getContent(
         {
             'here': self,
             'email': email,
             'consultation': self.get_consultation()
         }, 'tb_consultation-view_email')
    def admin_view_webex_email(self, filename, REQUEST=None, RESPONSE=None):
        """ Display a specfic saved webex request email """

        if REQUEST and REQUEST.method == 'POST':
            meeting_info = json.loads(REQUEST.form['webex'])
            # get the initial requester of the webex meeting
            requester_auth_user = str(meeting_info['auth_user'])
            del meeting_info['auth_user']

            # automatically add meeting using info from email
            # and some default data
            extra_args = {
                'geo_location.address':
                    'Kongens Nytorv 6, 1050 Copenhagen K, Denmark',
                'geo_location.lat': u'55.681365',
                'geo_location.lon': u'12.586484',
                'geo_type': u'symbol326',
                'sortorder': u'100',
                'releasedate': datetime.utcnow().strftime("%d/%m/%Y"),
                'max_participants': '25',
                'restrict_items': True,
                'submitted': 1
            }

            args = dict(meeting_info, **extra_args)

            try:
                ob_id = addNyMeeting(self.getSite().library,
                                     contributor=requester_auth_user,
                                     **args)
            except Exception:
                self.setSessionErrorsTrans("Error in adding a new meeting.")
                REQUEST.RESPONSE.redirect('%s/library' % self.absolute_url())
            else:
                self.setSessionInfoTrans('Successfully added meeting')

            REQUEST.RESPONSE.redirect('%s/library/%s' % (self.absolute_url(),
                                                         ob_id))
            return

        email = get_bulk_email(self, filename, where_to_read='sent-webex')
        return self.getFormsTool().getContent({'here': self, 'email': email},
                                              'site_admin_webex_mail_view')
Beispiel #8
0
class GroupwareSite(NySite):
    """ """
    implements(IGWSite)
    meta_type = METATYPE_GROUPWARESITE
    # icon = 'misc_/GroupwareSite/site.gif'

    manage_options = (NySite.manage_options)

    product_paths = NySite.product_paths + [Globals.package_home(globals())]
    security = ClassSecurityInfo()
    display_subobject_count = "on"
    portal_is_archived = False
    content_versioning_enabled = False

    def __init__(self, *args, **kwargs):
        """ """
        NySite.__dict__['__init__'](self, *args, **kwargs)
        self.display_subobject_count = "on"
        self.set_bundle(groupware_bundle)
        self.portal_is_archived = False  # The semantics of this flag is
        # that you can't request membership of the IG any longer.

    security.declarePrivate('loadDefaultData')

    def loadDefaultData(self):
        """ """
        # set default 'Naaya' configuration
        NySite.__dict__['createPortalTools'](self)
        NySite.__dict__['loadDefaultData'](self)

        # remove Naaya default content
        layout_tool = self.getLayoutTool()
        naaya_skins = [
            skin.getId() for skin in layout_tool.objectValues('Naaya Skin')
        ]
        logos = [image.getId() for image in layout_tool.objectValues('Image')]
        layout_tool.manage_delObjects(naaya_skins + logos)
        self.getPortletsTool().manage_delObjects(
            ['menunav_links', 'topnav_links'])
        self.manage_delObjects('info')

        # load groupware skel
        self.loadSkeleton(Globals.package_home(globals()))

        if rdf_calendar_available:
            manage_addRDFCalendar(self,
                                  id="portal_rdfcalendar",
                                  title="Events calendar")
            rdfcalendar_ob = self._getOb('portal_rdfcalendar')

            # adding range index to catalog
            class Empty(object):
                pass

            extra = Empty()  # Extra has to be an object.. see DateRangeIndex
            extra.since_field = 'start_date'
            extra.until_field = 'end_date'
            self.getCatalogTool().addIndex('resource_interval',
                                           'DateRangeIndex',
                                           extra=extra)

            # adding local_events Script (Python)
            manage_addPythonScript(rdfcalendar_ob, 'local_events')
            local_events_ob = rdfcalendar_ob._getOb('local_events')
            local_events_ob._params = 'year=None, month=None, day=None'
            local_events_ob.write(
                open(
                    os.path.dirname(__file__) + '/skel/others/local_events.py',
                    'r').read())

        self.getPortletsTool().assign_portlet('library', 'right',
                                              'portlet_latestuploads_rdf',
                                              True)

        # set default main topics
        self.getPropertiesTool().manageMainTopics(['about', 'library'])

        # add meta on brains for group local roles
        self.getCatalogTool().addColumn('ny_ldap_group_roles')

    def get_user_access(self, user=None):
        """
        Returns one of 'admin', 'member', 'viewer' or 'restricted' for logged
        in user, if not explicitly specified.

        """
        if user is None:
            user = self.REQUEST.get('AUTHENTICATED_USER', None)
        if user is not None:
            if user.has_permission(PERMISSION_PUBLISH_OBJECTS, self):
                return 'admin'
            elif user.allowed(self, ['Contributor']):
                return 'member'
            elif user.has_permission(view, self):
                return 'viewer'
        return 'restricted'

    def get_gw_root(self):
        return self.aq_parent.absolute_url()

    def get_gw_site_root(self):
        return self.aq_parent

    @property
    def portal_is_restricted(self):
        view_perm = getattr(self, '_View_Permission', [])
        return isinstance(view_perm, tuple) and ('Anonymous' not in view_perm)

    security.declarePrivate('toggle_portal_restricted')

    def toggle_portal_restricted(self, status):
        permission = getattr(self, '_View_Permission', [])

        if status:
            new_permission = [x for x in permission if x != 'Anonymous']
            if 'Contributor' not in new_permission:
                new_permission.append('Contributor')
            self._View_Permission = tuple(new_permission)
        else:
            new_permission = list(permission)
            new_permission.append('Anonymous')
            self._View_Permission = new_permission

    security.declareProtected(PERMISSION_PUBLISH_OBJECTS, 'admin_properties')

    def admin_properties(self, REQUEST=None, **kwargs):
        """ """
        if REQUEST is not None:
            kwargs.update(REQUEST.form)
        self.portal_is_archived = kwargs.get('portal_is_archived', False)
        self.toggle_portal_restricted(kwargs.get('portal_is_restricted', None))
        super(GroupwareSite, self).admin_properties(REQUEST=REQUEST, **kwargs)

    security.declareProtected(PERMISSION_PUBLISH_OBJECTS, 'admin_email')

    def admin_email(self,
                    mail_server_name='',
                    mail_server_port='',
                    administrator_email='',
                    mail_address_from='',
                    notify_on_errors_email='',
                    REQUEST=None):
        """ """
        self.getEmailTool().manageSettings(mail_server_name, mail_server_port,
                                           administrator_email,
                                           mail_address_from,
                                           notify_on_errors_email)
        if REQUEST:
            self.setSessionInfoTrans(MESSAGE_SAVEDCHANGES,
                                     date=self.utGetTodayDate())
            REQUEST.RESPONSE.redirect('%s/admin_email_html' %
                                      self.absolute_url())

    security.declareProtected(PERMISSION_REQUEST_WEBEX,
                              'admin_saved_webex_emails')

    def admin_saved_webex_emails(self, REQUEST=None, RESPONSE=None):
        """ Display all saved saved emails """
        emails = get_bulk_emails(self, where_to_read='sent-webex')
        return self.getFormsTool().getContent({
            'here': self,
            'emails': emails
        }, 'site_admin_webex_mail_listing')

    security.declareProtected(PERMISSION_REQUEST_WEBEX,
                              'admin_view_webex_email')

    def admin_view_webex_email(self, filename, REQUEST=None, RESPONSE=None):
        """ Display a specfic saved webex request email """

        if REQUEST and REQUEST.method == 'POST':
            meeting_info = json.loads(REQUEST.form['webex'])
            # get the initial requester of the webex meeting
            requester_auth_user = str(meeting_info['auth_user'])
            del meeting_info['auth_user']

            # automatically add meeting using info from email
            # and some default data
            extra_args = {
                'geo_location.address':
                'Kongens Nytorv 6, 1050 Copenhagen K, Denmark',
                'geo_location.lat': u'55.681365',
                'geo_location.lon': u'12.586484',
                'geo_type': u'symbol326',
                'sortorder': u'100',
                'releasedate': datetime.utcnow().strftime("%d/%m/%Y"),
                'max_participants': '25',
                'restrict_items': True,
                'submitted': 1
            }

            args = dict(meeting_info, **extra_args)

            try:
                ob_id = addNyMeeting(self.getSite().library,
                                     contributor=requester_auth_user,
                                     **args)
            except Exception, e:
                self.setSessionErrorsTrans("Error in adding a new meeting.")
                REQUEST.RESPONSE.redirect('%s/library' % self.absolute_url())
            else:
                self.setSessionInfoTrans('Successfully added meeting')

            REQUEST.RESPONSE.redirect('%s/library/%s' %
                                      (self.absolute_url(), ob_id))
            return

        email = get_bulk_email(self, filename, where_to_read='sent-webex')
        return self.getFormsTool().getContent({
            'here': self,
            'email': email
        }, 'site_admin_webex_mail_view')