Beispiel #1
0
    def get(self):
        p = self.request.get('p')
        q = self.request.get('q')
        c = self.request.get('c')
        forward = True if p not in ['prev'] else False
        cursor = Cursor(urlsafe=c)
        user_key = ndb.Key('User', long(self.user_id))

        if q:
            qry = Bom.query(
                Bom.owners == user_key,
                ndb.OR(Bom.public_id == q, Bom.name == q, Bom.tag_name == q))
        else:
            qry = Bom.query(Bom.owners == user_key)

        PAGE_SIZE = 5
        if forward:
            boms, next_cursor, more = qry.order(Bom.key).fetch_page(
                PAGE_SIZE, start_cursor=cursor)
            if next_cursor and more:
                self.view.next_cursor = next_cursor
            if c:
                self.view.prev_cursor = cursor.reversed()
        else:
            boms, next_cursor, more = qry.order(-Bom.key).fetch_page(
                PAGE_SIZE, start_cursor=cursor)
            boms = list(reversed(boms))
            if next_cursor and more:
                self.view.prev_cursor = next_cursor
            self.view.next_cursor = cursor.reversed()

        def pager_url(p, cursor):
            params = OrderedDict()
            if q:
                params['q'] = q
            if p in ['prev']:
                params['p'] = p
            if cursor:
                params['c'] = cursor.urlsafe()
            return self.uri_for('boms', **params)

        self.view.pager_url = pager_url
        self.view.q = q

        params = {
            "list_columns": [('name', 'BOM Name'), ('public_id', 'Public ID'),
                             ('public', 'public'),
                             ('change_time', 'Last Updated')],
            "boms":
            boms,
            "count":
            qry.count()
        }
        return self.render_template('boms.html', **params)
Beispiel #2
0
    def get(self):
        p = self.request.get('p')
        q = self.request.get('q')
        c = self.request.get('c')
        forward = True if p not in ['prev'] else False
        cursor = Cursor(urlsafe=c)

        if q:
            qry = Bom.query(ndb.OR(Bom.public_id == q,
                                          Bom.name == q,
                                          Bom.tag_name == q))
        else:
            qry = Bom.query()

        PAGE_SIZE = 5
        if forward:
            boms, next_cursor, more = qry.order(Bom.key).fetch_page(PAGE_SIZE, start_cursor=cursor)
            if next_cursor and more:
                self.view.next_cursor = next_cursor
            if c:
                self.view.prev_cursor = cursor.reversed()
        else:
            boms, next_cursor, more = qry.order(-Bom.key).fetch_page(PAGE_SIZE, start_cursor=cursor)
            boms = list(reversed(boms))
            if next_cursor and more:
                self.view.prev_cursor = next_cursor
            self.view.next_cursor = cursor.reversed()
 
        def pager_url(p, cursor):
            params = OrderedDict()
            if q:
                params['q'] = q
            if p in ['prev']:
                params['p'] = p
            if cursor:
                params['c'] = cursor.urlsafe()
            return self.uri_for('boms-admin', **params)

        self.view.pager_url = pager_url
        self.view.q = q
        
        params = {
            "list_columns": [('public_id', 'Public ID'),
                             ('name', 'BOM Name'), 
                             ('tag_name', 'Tag Name'),
                             ('public', 'public')],
            "boms" : boms,
            "count" : qry.count(),
        }

        # FIXME: admin_user should probably go into BaseHandler
        params['admin_user'] = googleusers.is_current_user_admin()

        return self.render_template('admin/boms.html', **params)
Beispiel #3
0
    def get(self):
        p = self.request.get('p')
        q = self.request.get('q')
        c = self.request.get('c')
        forward = True if p not in ['prev'] else False
        cursor = Cursor(urlsafe=c)
        user_key = ndb.Key('User', long(self.user_id))

        if q:
            qry = Bom.query(Bom.owners == user_key,
                            ndb.OR(Bom.public_id == q,
                            Bom.name == q,
                            Bom.tag_name == q))
        else:
            qry = Bom.query(Bom.owners == user_key)

        PAGE_SIZE = 5
        if forward:
            boms, next_cursor, more = qry.order(Bom.key).fetch_page(PAGE_SIZE, start_cursor=cursor)
            if next_cursor and more:
                self.view.next_cursor = next_cursor
            if c:
                self.view.prev_cursor = cursor.reversed()
        else:
            boms, next_cursor, more = qry.order(-Bom.key).fetch_page(PAGE_SIZE, start_cursor=cursor)
            boms = list(reversed(boms))
            if next_cursor and more:
                self.view.prev_cursor = next_cursor
            self.view.next_cursor = cursor.reversed()
 
        def pager_url(p, cursor):
            params = OrderedDict()
            if q:
                params['q'] = q
            if p in ['prev']:
                params['p'] = p
            if cursor:
                params['c'] = cursor.urlsafe()
            return self.uri_for('boms', **params)

        self.view.pager_url = pager_url
        self.view.q = q
        
        params = {
            "list_columns": [('name', 'BOM Name'), 
                             ('public_id', 'Public ID'),
                             ('public', 'public'),
                             ('change_time', 'Last Updated')],
            "boms" : boms,
            "count" : qry.count()
        }
        return self.render_template('boms.html', **params)
Beispiel #4
0
 def get(self, public_id):
     params = {}
     bom = Bom.query(Bom.public_id == public_id).get()
     if bom:
         parts = Part.query(ancestor=bom.key).order(-Part.create_time).fetch()
         rawparts = []
         for part in parts:
             raw = []
             quantity_units = ''
             if part.quantity_units:
                 quantity_units = ', units='+part.quantity_units
             raw.append(part.name+quantity_units+'   '+part.part_group+'\n')
             for note in part.note_list:
                 raw.append('   * '+note+'\n')
             for designator in part.designator_list:
                 raw.append('   # '+designator+'\n')
             for i in range(len(part.manufacturer_names)):
                 raw.append('   @ '+part.manufacturer_names[i]+
                            '   '+part.manufacturer_partnums[i]+
                            '\n')
             for i in range(len(part.supplier_names)):
                 raw.append('   $ '+part.supplier_names[i]+
                            '   '+part.supplier_ordernums[i])
                 package_count = part.supplier_packagecounts[i]
                 if package_count != 1:
                     if (package_count % 1) == 0:
                         package_count = '%0.0f' % package_count
                     else:
                         package_count = '%0.3f' % package_count
                     raw.append('   '+package_count)
                 raw.append('   '+part.supplier_currencies[i])
                 if part.supplier_countries[i]:
                     raw.append('   '+part.supplier_currencies[i])
                 raw.append(' %0.2f' % part.supplier_prices[i])
                 if part.supplier_urls[i]:
                     raw.append('   '+part.supplier_urls[i])                    
                 raw.append('\n')
             for i in range(len(part.subsystem_names)):
                 quantities = part.subsystem_quantities[i]
                 if (quantities % 1) == 0:
                     quantities = '%0.0f' % quantities
                 else:
                     quantities = '%0.2f' % quantities
                 raw.append('   '+quantities+
                            '   '+part.subsystem_names[i]+
                            '   '+part.subsystem_specificuses[i]+
                            '\n')
             rawparts.append({'id':part.key.id(), 'raw':''.join(raw)[:-1]})
         params = {
             "is_owner" : ndb.Key('User', long(self.user_id or 0)) in bom.owners,
             "public_id": public_id,
             "currency": "USD",
             "bom" : bom,
             "rawparts" : rawparts
         }
         # prime form
         # self.form.process(obj=bom)
         return self.render_template('bom_edit.html', **params)
     else:
         self.abort(404)
Beispiel #5
0
 def get(self, public_id):
     params = {}
     bom = Bom.query(Bom.public_id == public_id).get()
     if bom:
         parts = Part.query(ancestor=bom.key).order(Part.name).fetch()
         raw = []
         for part in parts:
             quantity_units = ''
             if part.quantity_units:
                 quantity_units = ', units='+part.quantity_units
             raw.append(part.name+quantity_units+'   '+part.part_group+'\n')
             for note in part.note_list:
                 raw.append('   * '+note+'\n')
             for designator in part.designator_list:
                 raw.append('   # '+designator+'\n')
             for i in range(len(part.manufacturer_names)):
                 raw.append('   @ '+part.manufacturer_names[i]+
                            '   '+part.manufacturer_partnums[i]+
                            '\n')
             for i in range(len(part.supplier_names)):
                 raw.append('   $ '+part.supplier_names[i]+
                            '   '+part.supplier_ordernums[i])
                 package_count = part.supplier_packagecounts[i]
                 if package_count != 1:
                     if (package_count % 1) == 0:
                         package_count = '%0.0f' % package_count
                     else:
                         package_count = '%0.3f' % package_count
                     raw.append('   '+package_count)
                 raw.append('   '+part.supplier_currencies[i])
                 if part.supplier_countries[i]:
                     raw.append('   '+part.supplier_currencies[i])
                 raw.append(' %0.2f' % part.supplier_prices[i])
                 if part.supplier_urls[i]:
                     raw.append('   '+part.supplier_urls[i])                    
                 raw.append('\n')
             for i in range(len(part.subsystem_names)):
                 quantities = part.subsystem_quantities[i]
                 if (quantities % 1) == 0:
                     quantities = '%0.0f' % quantities
                 else:
                     quantities = '%0.2f' % quantities
                 raw.append('   '+quantities+
                            '   '+part.subsystem_names[i]+
                            '   '+part.subsystem_specificuses[i]+
                            '\n')
             raw.append('\n')
         params['raw'] = ''.join(raw)
         return self.render_template('bom_raw.html', **params)
     else:
         self.abort(404)
Beispiel #6
0
 def get(self, public_id, currency):
     params = {}
     bom = Bom.query(Bom.public_id == public_id).get()
     if bom:
         params = {
             "is_owner" : ndb.Key('User', long(self.user_id or 0)) in bom.owners,
             "public_id": public_id,
             "currency": "USD",
             "bom" : bom,
             "by_supplier" : bom.get_parts_by_supplier(currency)
         }
         return self.render_template('bom_order.html', **params)
     else:
         self.abort(404)
Beispiel #7
0
 def get(self, public_id):
     params = {}
     bom = Bom.query(Bom.public_id == public_id).get()
     if bom:
         parts = Part.query(ancestor=bom.key).order(Part.name).fetch()
         raw = []
         for part in parts:
             quantity_units = ''
             if part.quantity_units:
                 quantity_units = ', units=' + part.quantity_units
             raw.append(part.name + quantity_units + '   ' +
                        part.part_group + '\n')
             for note in part.note_list:
                 raw.append('   * ' + note + '\n')
             for designator in part.designator_list:
                 raw.append('   # ' + designator + '\n')
             for i in range(len(part.manufacturer_names)):
                 raw.append('   @ ' + part.manufacturer_names[i] + '   ' +
                            part.manufacturer_partnums[i] + '\n')
             for i in range(len(part.supplier_names)):
                 raw.append('   $ ' + part.supplier_names[i] + '   ' +
                            part.supplier_ordernums[i])
                 package_count = part.supplier_packagecounts[i]
                 if package_count != 1:
                     if (package_count % 1) == 0:
                         package_count = '%0.0f' % package_count
                     else:
                         package_count = '%0.3f' % package_count
                     raw.append('   ' + package_count)
                 raw.append('   ' + part.supplier_currencies[i])
                 if part.supplier_countries[i]:
                     raw.append('   ' + part.supplier_currencies[i])
                 raw.append(' %0.2f' % part.supplier_prices[i])
                 if part.supplier_urls[i]:
                     raw.append('   ' + part.supplier_urls[i])
                 raw.append('\n')
             for i in range(len(part.subsystem_names)):
                 quantities = part.subsystem_quantities[i]
                 if (quantities % 1) == 0:
                     quantities = '%0.0f' % quantities
                 else:
                     quantities = '%0.2f' % quantities
                 raw.append('   ' + quantities + '   ' +
                            part.subsystem_names[i] + '   ' +
                            part.subsystem_specificuses[i] + '\n')
             raw.append('\n')
         params['raw'] = ''.join(raw)
         return self.render_template('bom_raw.html', **params)
     else:
         self.abort(404)
Beispiel #8
0
 def get(self, public_id, currency):
     params = {}
     bom = Bom.query(Bom.public_id == public_id).get()
     if bom:
         params = {
             "is_owner": ndb.Key('User', long(self.user_id or 0))
             in bom.owners,
             "public_id": public_id,
             "currency": "USD",
             "bom": bom,
             "by_supplier": bom.get_parts_by_supplier(currency)
         }
         return self.render_template('bom_order.html', **params)
     else:
         self.abort(404)
Beispiel #9
0
 def get(self, public_id):
     params = {}
     bom = Bom.query(Bom.public_id == public_id).get()
     if bom:
         parts = Part.query(
             ancestor=bom.key).order(-Part.create_time).fetch()
         rawparts = []
         for part in parts:
             raw = []
             quantity_units = ''
             if part.quantity_units:
                 quantity_units = ', units=' + part.quantity_units
             raw.append(part.name + quantity_units + '   ' +
                        part.part_group + '\n')
             for note in part.note_list:
                 raw.append('   * ' + note + '\n')
             for designator in part.designator_list:
                 raw.append('   # ' + designator + '\n')
             for i in range(len(part.manufacturer_names)):
                 raw.append('   @ ' + part.manufacturer_names[i] + '   ' +
                            part.manufacturer_partnums[i] + '\n')
             for i in range(len(part.supplier_names)):
                 raw.append('   $ ' + part.supplier_names[i] + '   ' +
                            part.supplier_ordernums[i])
                 package_count = part.supplier_packagecounts[i]
                 if package_count != 1:
                     if (package_count % 1) == 0:
                         package_count = '%0.0f' % package_count
                     else:
                         package_count = '%0.3f' % package_count
                     raw.append('   ' + package_count)
                 raw.append('   ' + part.supplier_currencies[i])
                 if part.supplier_countries[i]:
                     raw.append('   ' + part.supplier_currencies[i])
                 raw.append(' %0.2f' % part.supplier_prices[i])
                 if part.supplier_urls[i]:
                     raw.append('   ' + part.supplier_urls[i])
                 raw.append('\n')
             for i in range(len(part.subsystem_names)):
                 quantities = part.subsystem_quantities[i]
                 if (quantities % 1) == 0:
                     quantities = '%0.0f' % quantities
                 else:
                     quantities = '%0.2f' % quantities
                 raw.append('   ' + quantities + '   ' +
                            part.subsystem_names[i] + '   ' +
                            part.subsystem_specificuses[i] + '\n')
             rawparts.append({
                 'id': part.key.id(),
                 'raw': ''.join(raw)[:-1]
             })
         params = {
             "is_owner": ndb.Key('User', long(self.user_id or 0))
             in bom.owners,
             "public_id": public_id,
             "currency": "USD",
             "bom": bom,
             "rawparts": rawparts
         }
         # prime form
         # self.form.process(obj=bom)
         return self.render_template('bom_edit.html', **params)
     else:
         self.abort(404)