Example #1
0
 def search(self):
 
     #names
     self.set('entity', self.request.params.get('entity',''))
     self.set('escaped_entity', self.request.params.get('entity','').replace('"','\\"').replace("'","\\'"))
     self.set('firstname', self.request.params.get('firstname',''))
     self.set('escaped_firstname', self.request.params.get('firstname','').replace('"','\\"').replace("'","\\'"))
     self.set('keywords', self.request.params.get('keywords',''))
     self.set('escaped_keywords', self.request.params.get('keywords','').replace('"','\\"').replace("'","\\'"))
     self.set('mode', self.request.params.get('mode',False))
     
     #dates
     self.set('start_date', int(self.request.params.get('start_date', 0)))
     self.set('end_date', int(self.request.params.get('end_date', datetime.datetime.today().year)))
     sd = DBSession.query(Cases).filter(Cases.year > 1800).order_by('year asc').first()
     if sd:
         self.set('earliest_recorded_date', sd.year)
     else: 
         self.set('earliest_recorded_date', 1800)
     ed = DBSession.query(Cases).filter(Cases.year < datetime.datetime.today().year).order_by('year desc').first()
     if ed:
         self.set('last_recorded_date', ed.year)
     else: 
         self.set('last_recorded_date', datetime.datetime.today().year)
     
     #types
     actiontypes = [ int(at) for at in self.request.params.getall('actiontypes') ]
     self.set('actiontypes', actiontypes)
     self.set('actiontypes_list', ActionTypes.loadAll(order='actiontype asc'))
     
     #counties
     counties = [ int(at) for at in self.request.params.getall('counties') ]
     self.set('counties', counties)
     self.set('counties_list', Counties.loadAll(order='county asc'))
     
     #roles
     roles = [ int(r) for r in self.request.params.getall('roles') ]
     self.set('roles', roles)
     self.set('roles_list', Roles.loadAll(order='role asc'))
     
     #archives
     archives = [ int(l) for l in self.request.params.getall('archives') ]
     self.set('archives', archives)
     self.set('archives_list', Archives.loadAll(order='name asc'))
     
     #courts
     courts = [ int(l) for l in self.request.params.getall('courts') ]
     self.set('courts', courts)
     self.set('courts_list', Courts.loadAll(order='court asc'))
     
     return self.response
Example #2
0
    def make_facets(self,query):
        facets = []
        
        # ActionTypes Facets
        if Validators.bool( Config.get('enable_facet_casetypes', purify=True) ):
            actiontypes = ActionTypes.loadAll(order='actiontype asc');
            _types = {'name' : 'actiontypes' , 'clean_name': 'Case Types', 'data' :[]};
            for at in actiontypes:
                subquery = query.filter(Cases.actiontype==at.id)
                _types['data'].append({'facet':at.actiontype, 'id': at.id, 'count':self.fast_count(subquery)})
            facets.append(_types)
        
        
        # County Facets
        if Validators.bool( Config.get('enable_facet_counties', purify=True) ):
            counties = Counties.loadAll(order='county asc');
            _counties = {'name' : 'counties' , 'clean_name': 'Counties', 'data' :[]};
            for county in counties:
                subquery = query.filter(Cases.county==county.id)
                _counties['data'].append({'facet':county.county, 'id': county.id, 'count':self.fast_count(subquery)})
            facets.append(_counties)
        
        # Roles Facets
        if Validators.bool( Config.get('enable_facet_roles', purify=True) ):
            roles = Roles.loadAll(order='role asc');
            _roles = {'name' : 'roles' , 'clean_name': 'Roles', 'data' :[]};
            for role in roles:
                subquery = query.filter(Entities.role==role.id)
                _roles['data'].append({'facet':role.role, 'id': role.id, 'count':self.fast_count(subquery)})
            facets.append(_roles)

        # Courts Facets
        if Validators.bool( Config.get('enable_facet_courts', purify=True) ):
            courts = Courts.loadAll(order='court asc');
            _court = {'name' : 'courts' , 'clean_name': 'Courts', 'data' :[]};
            for court in courts:
                subquery = query.filter(Cases.court==court.id)
                _court['data'].append({'facet':court.court, 'id': court.id, 'count':self.fast_count(subquery)})
            facets.append(_court)
        
        # Archive Facets
        if Validators.bool( Config.get('enable_facet_archives', purify=True) ):
            archives = Archives.loadAll(order='name asc');
            _archives = {'name' : 'archives' , 'clean_name': 'Archives', 'data' :[]};
            for archive in archives:
                subquery = query.filter(Cases.archive==archive.id)
                _archives['data'].append({'facet':archive.name, 'id': archive.id, 'count':self.fast_count(subquery)})
            facets.append(_archives)

        return facets
Example #3
0
    def manage_importer(self):

        # Do one look up for speed
        self.roles = Results2Dict(Roles.loadAll())
        self.counties = Results2Dict(Counties.loadAll())
        self.courts = Results2Dict(Courts.loadAll())
        self.callnumbers = Results2Dict(CallNumbers.loadAll())
        self.containers = Results2Dict(Containers.loadAll(order="container asc"))
        self.actiontypes = Results2Dict(ActionTypes.loadAll())
        self.suffixs = Results2Dict(Suffixs.loadAll())
        self.prefixs = Results2Dict(Prefixs.loadAll())

        if "submit" in self.request.params:
            # case_override = json.loads(self.request.params.get('case.override','{}'))
            # entity_override = json.loads(self.request.params.get('entity.override','{}'))

            entities = self.request.POST["entities"].file
            entities_fields = self.request.params.get("entity.fields").split(",")
            cases = self.request.POST["cases"].file
            case_fields = self.request.params.get("case.fields").split(",")

            archive_id = self.request.params.get("archive", 0)

            print "CREATING CASES --------------"
            cases_id_map = self.createCases_returnMap(cases, case_fields, archive_id)

            print "CREATING ENTITIES ----------------"
            fix = self.request.params.get("firstname.fix", "0") == "1"
            self.createEntitiesCleanup(entities, entities_fields, cases_id_map, fix)
            # else:
            #    self.createEntities(entities,entities_fields,cases_id_map)

        self.set("archives", Archives.loadAll(order="name asc"))
        self.set("containers", self.containers)
        self.set("callnumbers", self.callnumbers)
        return self.response
Example #4
0
 def create_invoice(self):
     records = self.request.params.getall('records')
     
     if records:
         fullname = self.request.params.get('customer.name','')
         email = self.request.params.get('customer.email','')
         address = self.request.params.get('customer.address','')
         address2 = self.request.params.get('customer.address2','')
         phone = self.request.params.get('customer.phone','')
         agreement = Validators.bool(self.request.params.get('customer.agreement',0))
         checkout = self.request.params.getall('customer.checkout')
         deliver_digitally = False
         deliver_physically = False
         
         # Delivery Options
         for option in checkout:
             if option == 'digitally':
                 deliver_digitally = True
             if option == 'physically':
                 deliver_physically = True
                 
         # Prep Orders
         orders = []
         total_price = 0.0
         location_emails = {} # to notify any locations a request has been made
         for record in records:
             c = Cases.load(id=int(record))
             e = Entities.load(case_id=int(record))
             r = Roles.load(id=e.role)
             l = Archives.load(id=c.archive)
             
             location_emails[l.email] = l.email
             total_price += float(r.price)
             
             orders.append({'case':int(c.id), 'price' : r.price, 'location':int(l.id)})
             
         invoice = Invoices(fullname=fullname, email=email, address=address, county_state_zip=address2, phone=phone, records=orders, 
                            agreement_accepted=agreement, deliver_digitally=deliver_digitally, deliver_physically=deliver_physically,
                            total_price='${:,.2f}'.format(total_price))
         invoice.insert(self.request)
         invoice = Invoices.load(order='id desc')
         
         #Email Client
         starting_status = Statuses.load(order='priority asc')
         Emailer.send(self.request,
                      [email],
                      starting_status.email_subject,
                      starting_status.email_message,
                      link=self.request.application_url + '/invoice/' + invoice.hash
                      )
                      
         #Email Archives Involved
         Emailer.send(self.request,
                      list(location_emails),
                      'Order request has been placed',
                      'A new order request has been placed',
                      link=self.request.application_url + '/login?goto=' + self.request.application_url + '/manage/orders'
                      )
                      
                      
         response = HTTPFound(location=route_url('invoice', self.request, hash=invoice.hash))
         response.delete_cookie('basket')
         return response
         
     else:
         return self.response
    def manage_records(self):
        case_id = self.request.matchdict['case_id']
        if case_id != 'new':
            case_id = int(case_id)
        
        
        # Add last entry for new entries
        self.set('lastentry',case_id)
        lastcase = Cases.load(order='id desc')
        if lastcase:
            self.set('lastentry',lastcase.id)
        
        # Handle Saving
        if 'edit.Form.submit.save' in self.request.params or 'edit.Form.submit.savenext' in self.request.params:
            self._save(case_id)
            if 'edit.Form.submit.savenext' in self.request.params:
                return HTTPFound(location=route_url('manage_records', self.request, case_id='new'))
            return HTTPFound(location=route_url('manage_records', self.request, case_id=case_id))
        
        # Handle Loading Information on screen
        if case_id == 'new' or case_id == 0:
            case = None
        else:
            case = DBSession.query(Cases,Counties,ActionTypes,Archives).filter(Cases.id == case_id) \
                                                                      .filter(Cases.actiontype == ActionTypes.id) \
                                                                      .filter(Cases.county == Counties.id) \
                                                                      .filter(Cases.archive == Archives.id) \
                                                                      .first()

        entities = []
        if case_id != 'new':
            entities = DBSession.query(Entities,Roles).filter(Entities.case_id == case_id) \
                                                        .filter(Entities.role == Roles.id) \
                                                        .order_by('entity asc').all()
        
        self.set('case',case)
        self.set('year',self._get_year)
        self.set('case_id',case_id)
        self.set('entities',entities)
        self.set('actiontypes',ActionTypes.loadAll(order="actiontype asc"))
        self.set('containers',Containers.loadAll(order="container asc"))
        self.set('courts',Courts.loadAll(order="court asc"))
        self.set('call_numbers',CallNumbers.loadAll(order="call_number asc"))
        self.set('archives',Archives.loadAll(order="name asc"))
        self.set('roles',Roles.loadAll(order="role asc"))
        self.set('counties',Counties.loadAll(order="county asc"))
        self.set('prefixs',Prefixs.loadAll(order="prefix asc"))
        self.set('suffixs',Suffixs.loadAll(order="suffix asc"))
        
        
        
        
        #${request.application_url}/manage/data/Entities/delete/${entity.Entities.id}?back=${request.url}
        delete_url = ''
        if case:
            entity_base_url = self.request.application_url + '/manage/data/Entities/delete/'
            case_base_url = self.request.application_url + '/manage/data/Cases/delete/'
            delete_url = case_base_url + str(case.Cases.id) + '?back='
            for e in entities:
                delete_url += entity_base_url + str(e.Entities.id)  + '?back='
            delete_url += self.request.application_url + '/manage/cases' # Back to base
        self.set('delete_url', delete_url)
        
        
        
        
        
        return self.response