Example #1
0
def date_input_search_widget(table_id, field_id):
    form = DateFilterWidget(common.get_application(), common.get_request(),
                            table_id, field_id)
    html = '<div id="date_input_search_widget_%(table_id)s_%(field_id)s" style="display: none;">%(html)s</div>' \
           % {"table_id": table_id,
              "field_id": field_id,
              "html": form.render()}
    script = open("%s/templates/date-input-search-widget.js" % (_path)).read()
    return html, script % {"table_id": table_id, "field_id": field_id}
Example #2
0
 def get_sittings(self):
     #!+QUERIES(mb, nov-2011) to review the extra queries in `get_items`
     formatter = self.request.locale.dates.getFormatter("date", "full") 
     session = Session()
     query = session.query(domain.GroupSitting).filter(
         self.group_sittings_filter
     ).order_by(schema.group_sittings.c.start_date).options(
         eagerload("group"), 
         #eagerload("sitting_type"),
         eagerload("item_schedule")
     )
     if not self.end_date:
         query = query.limit(
             BungeniSettings(
                 common.get_application()
             ).max_sittings_in_business
         )
     sittings = query.all()
     day = u""
     day_list = []
     s_dict = {}
     for sitting in sittings:
         sday = formatter.format(sitting.start_date)
         if sday != day:
             s_list = []
             day = sday
             if s_dict:
                 day_list.append(s_dict)
             s_dict = {}
         if sitting.group.type == "parliament":
             _url = url.set_url_context("/business/sittings/obj-%i" % (
                  sitting.group_sitting_id))
         elif sitting.group.type == "committee":
             _url = url.set_url_context(
                 "/business/committees/obj-%i/sittings/obj-%i"
                 % (sitting.group.group_id, sitting.group_sitting_id))
         else:
             _url = "#"
         s_list.append({
             "start": sitting.start_date.strftime("%H:%M"),
             "end": sitting.end_date.strftime("%H:%M"),
             "type": sitting.group.type,
             "name": sitting.group.short_name,
             "url": _url, 
             "items": self.get_sitting_items(sitting),
             })
         s_dict["day"] = day
         s_dict["sittings"] = s_list
     else:
         if s_dict:
             day_list.append(s_dict)
     return day_list
Example #3
0
 def get_sittings(self):
     #!+QUERIES(mb, nov-2011) to review the extra queries in `get_items`
     formatter = self.request.locale.dates.getFormatter("date", "full")
     session = Session()
     query = session.query(domain.GroupSitting).filter(
         self.group_sittings_filter).order_by(
             schema.group_sittings.c.start_date).options(
                 eagerload("group"),
                 #eagerload("sitting_type"),
                 eagerload("item_schedule"))
     if not self.end_date:
         query = query.limit(
             BungeniSettings(
                 common.get_application()).max_sittings_in_business)
     sittings = query.all()
     day = u""
     day_list = []
     s_dict = {}
     for sitting in sittings:
         sday = formatter.format(sitting.start_date)
         if sday != day:
             s_list = []
             day = sday
             if s_dict:
                 day_list.append(s_dict)
             s_dict = {}
         if sitting.group.type == "parliament":
             _url = url.set_url_context("/business/sittings/obj-%i" %
                                        (sitting.group_sitting_id))
         elif sitting.group.type == "committee":
             _url = url.set_url_context(
                 "/business/committees/obj-%i/sittings/obj-%i" %
                 (sitting.group.group_id, sitting.group_sitting_id))
         else:
             _url = "#"
         s_list.append({
             "start": sitting.start_date.strftime("%H:%M"),
             "end": sitting.end_date.strftime("%H:%M"),
             "type": sitting.group.type,
             "name": sitting.group.short_name,
             "url": _url,
             "items": self.get_sitting_items(sitting),
         })
         s_dict["day"] = day
         s_dict["sittings"] = s_list
     else:
         if s_dict:
             day_list.append(s_dict)
     return day_list
 def __call__(self, context=None):
     app = common.get_application()
     terms = []
     roles = getUtilitiesFor(IRole, app)
     for name, role in roles:
         #Roles that must not be assigned to users in an office
         if name not in ["bungeni.Anonymous",
                         "bungeni.Authenticated",
                         "bungeni.Owner",
                         "zope.Manager",
                         "zope.Member",
                         "bungeni.MP",
                         "bungeni.Minister",
                         "bungeni.Admin",
                         ]:
             terms.append(vocabulary.SimpleTerm(name, name, name))
     return vocabulary.SimpleVocabulary(terms)
Example #5
0
 def __call__(self, context=None):
     app = common.get_application()
     terms = []
     roles = getUtilitiesFor(IRole, app)
     for name, role in roles:
         #Roles that must not be assigned to users in an office
         if name not in [
                 "bungeni.Anonymous",
                 "bungeni.Authenticated",
                 "bungeni.Owner",
                 "zope.Manager",
                 "zope.Member",
                 "bungeni.MP",
                 "bungeni.Minister",
                 "bungeni.Admin",
         ]:
             terms.append(vocabulary.SimpleTerm(name, name, name))
     return vocabulary.SimpleVocabulary(terms)
 def __call__(self, context=None):
     app = common.get_application()
     terms = []
     roles = getUtilitiesFor(IRole, app)
     print "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX START", 
     for name, role in roles:
         #Roles that must not be assigned to users in an office
         if name in ["bungeni.Anonymous",
                     "bungeni.Authenticated",
                     "bungeni.Owner",
                     "zope.Manager",
                     "zope.Member",
                     "bungeni.MP",
                     "bungeni.Minister",
                     "bungeni.Admin"]:
             continue
         print "XXXXXXXXXXXXXXXXXXXX", name, role
         if not ISubRoleAnnotations(role).is_sub_role:
             terms.append(vocabulary.SimpleTerm(name, name, name))
     return vocabulary.SimpleVocabulary(terms)
Example #7
0
def get_search_url():
    return SearchSettings(common.get_application()).search_uri
Example #8
0
    def workspace_search(self):
        """ Search in workspace section, based on views from bungeni.ui.viewlets.workspace
        """
        application = common.get_application()
        parliament = get_current_parliament(None)
        parliament.__parent__ = application
        principal = get_principal()
        roles = common.get_context_roles(parliament, principal)

        # minister role, filtering by states and object_type and ministry_id
        if not roles:
            user_id = get_db_user_id()
            government_id = get_current_parliament_governments(
                parliament)[0].group_id
            ministries = get_ministries_for_user_in_government(
                user_id, government_id)
            if ministries:
                states = workspace.MinistryArchiveViewlet.states + \
                         workspace.OralMinistryQuestionsViewlet.states + \
                         workspace.WrittenMinistryQuestionsViewlet.states + \
                         workspace.InProgressMinistryItemsViewlet.states
                states = set(states)

                ministry_ids = [m.group_id for m in ministries]

                # filter by object_type (questions only)
                type_query = self.searcher.query_field('object_type',
                                                       "Question")
                query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, type_query,))

                subqueries = []

                for state in states:
                    subqueries.append(
                        self.searcher.query_field('status', state))

                state_query = self.searcher.query_composite(
                    self.searcher.OP_OR, subqueries)
                query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                           (query, state_query,))

                #filter for ministries
                ministries_queries = []

                for mid in ministry_ids:
                    ministries_queries.append(
                        self.searcher.query_field('ministry_id', str(mid)))

                m_query = self.searcher.query_composite(
                    self.searcher.OP_OR, ministries_queries)
                query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                           (query, m_query,))

                try:
                    results = self.searcher.search(
                        query, 0, self.searcher.get_doccount())
                except:
                    results = []

                return list(results)

        # filtering by states and owner
        if 'bungeni.MP' in roles:
            states = workspace.MPItemActionRequiredViewlet.states + \
                     workspace.MPItemDraftViewlet.states + \
                     workspace.MPItemInProgressViewlet.states + \
                     workspace.ItemArchiveViewlet.states
            states = set(states)
            # filter by owner of PI
            owner_query = self.searcher.query_field('owner',
                                                    str(get_db_user_id()))
            query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, owner_query,))

            subqueries = []

            for state in states:
                subqueries.append(self.searcher.query_field('status', state))

            state_query = self.searcher.query_composite(
                self.searcher.OP_OR, subqueries)
            query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (query, state_query,))

            try:
                results = self.searcher.search(query, 0,
                                               self.searcher.get_doccount())
            except:
                results = []

            return list(results)

        # filtering by states
        if 'bungeni.Clerk' in roles:
            states = workspace.ClerkItemActionRequiredViewlet.states + \
                     workspace.ClerkItemsWorkingDraftViewlet.states + \
                     workspace.ClerkReviewedItemViewlet.states + \
                     workspace.ItemsApprovedViewlet.states + \
                     workspace.ItemsPendingScheduleViewlet.states + \
                     workspace.ItemsScheduledViewlet.states + \
                     workspace.AllItemArchiveViewlet.states

            states = set(states)

            subqueries = []

            for state in states:
                subqueries.append(self.searcher.query_field('status', state))

            state_query = self.searcher.query_composite(
                self.searcher.OP_OR, subqueries)
            query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, state_query,))

            try:
                results = self.searcher.search(query, 0,
                                               self.searcher.get_doccount())
            except:
                results = []

            return list(results)
        # no results
        return False
Example #9
0
def get_search_url():
    return SearchSettings(common.get_application()).search_uri
Example #10
0
 def settings(self):
     return EmailSettings(get_application())
 def settings(self):
     return EmailSettings(get_application())
Example #12
0
    def workspace_search(self):
        """ Search in workspace section, based on views from bungeni.ui.viewlets.workspace
        """
        application = common.get_application()
        parliament = get_current_parliament(None)
        parliament.__parent__ = application
        principal = get_principal()
        roles = common.get_context_roles(parliament, principal)

        # minister role, filtering by states and object_type and ministry_id
        if not roles:
            user_id = get_db_user_id()
            government_id = get_current_parliament_governments(parliament)[0].group_id
            ministries = get_ministries_for_user_in_government(user_id, government_id)
            if ministries:
                states = workspace.MinistryArchiveViewlet.states + \
                         workspace.OralMinistryQuestionsViewlet.states + \
                         workspace.WrittenMinistryQuestionsViewlet.states + \
                         workspace.InProgressMinistryItemsViewlet.states
                states = set(states)
                
                ministry_ids = [m.group_id for m in ministries]
                
                # filter by object_type (questions only)
                type_query = self.searcher.query_field('object_type', "Question")
                query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, type_query,))
                
                subqueries = []

                for state in states:
                    subqueries.append(self.searcher.query_field('status', state))
                    
                state_query = self.searcher.query_composite(self.searcher.OP_OR, subqueries)
                query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                           (query, state_query,))
                
                #filter for ministries
                ministries_queries = []
                
                for mid in ministry_ids:
                    ministries_queries.append(self.searcher.query_field('ministry_id', str(mid)))
                    
                m_query = self.searcher.query_composite(self.searcher.OP_OR, ministries_queries)
                query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                           (query, m_query,))
                
                try:
                    results = self.searcher.search(query, 0, self.searcher.get_doccount())
                except:
                    results = []
                
                return list(results)
        
        # filtering by states and owner
        if 'bungeni.MP' in roles:
            states = workspace.MPItemActionRequiredViewlet.states + \
                     workspace.MPItemDraftViewlet.states + \
                     workspace.MPItemInProgressViewlet.states + \
                     workspace.ItemArchiveViewlet.states
            states = set(states)
            # filter by owner of PI
            owner_query = self.searcher.query_field('owner', str(get_db_user_id()))
            query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, owner_query,))
            
            subqueries = []

            for state in states:
                subqueries.append(self.searcher.query_field('status', state))
                
            state_query = self.searcher.query_composite(self.searcher.OP_OR, subqueries)
            query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (query, state_query,))
            
            try:
                results = self.searcher.search(query, 0,
                self.searcher.get_doccount())
            except:
                results = []
                
            return list(results)
            
        # filtering by states
        if 'bungeni.Clerk' in roles:
            states = workspace.ClerkItemActionRequiredViewlet.states + \
                     workspace.ClerkItemsWorkingDraftViewlet.states + \
                     workspace.ClerkReviewedItemViewlet.states + \
                     workspace.ItemsApprovedViewlet.states + \
                     workspace.ItemsPendingScheduleViewlet.states + \
                     workspace.ItemsScheduledViewlet.states + \
                     workspace.AllItemArchiveViewlet.states
                     
            states = set(states)
            
            subqueries = []

            for state in states:
                subqueries.append(self.searcher.query_field('status', state))
                
            state_query = self.searcher.query_composite(self.searcher.OP_OR, subqueries)
            query = self.searcher.query_composite(self.searcher.OP_AND, \
                                                       (self.query, state_query,))
            
            try:
                results = self.searcher.search(query, 0,
                self.searcher.get_doccount())
            except:
                results = []
                
            return list(results)
        # no results
        return False