def find_image_files(self, fnames, suffix=None, pdir=None, art=False): if isinstance(fnames, str): fnames = [fnames] if suffix is None: suffix = graphic_types elif isinstance(suffix, str): suffix = [suffix] pdir = useful.relpath(pdir if pdir else self.art_dir if art else self.pic_dir) retfiles = list() for fname in fnames: for sfx in suffix: retfiles.extend(glob.glob(useful.relpath('.', pdir, fname + '.' + sfx))) # + glob.glob(os.path.join(pdir, fname.lower() + '.' + sfx))) return retfiles
def count_boxes(pif): boxes = pif.dbh.fetch_castings_by_box('', '') box_styles = set() pr_count = im_count = 0 for box in boxes: if 'alias.id' in box: box['id'] = box['alias.id'] else: box['id'] = box['casting.id'] if box['id'].startswith('M'): print box continue box_styles.add(box['id'] + '-' + box['box_type.box_type']) pr_count += 2 im_count += len(glob.glob(useful.relpath('.', config.IMG_DIR_BOX, 'x_' + box['id'] + '-' + box['box_type.box_type'] + box['box_type.pic_id'] + '*.jpg'))) for box in box_styles: if pif.render.find_image_path(box, pdir=config.IMG_DIR_BOX, prefix=mbdata.IMG_SIZ_SMALL): im_count += 1 if pif.render.find_image_path(box, pdir=config.IMG_DIR_BOX, prefix=mbdata.IMG_SIZ_PETITE): im_count += 1 if pif.render.find_image_path(box, pdir=config.IMG_DIR_BOX, prefix=mbdata.IMG_SIZ_MEDIUM): im_count += 1 pr_count += 1 return pr_count, im_count
def find_boxes(pif): series = pif.form.get_str('series') style = pif.form.get_str('style') if style == 'all': style = '' start = pif.form.get_int('start', 1) end = pif.form.get_int('end', start) boxes = dict() for box in pif.dbh.fetch_castings_by_box(series, style): box['id'] = box['alias.id'] if box.get('alias.id') else box['casting.id'] if (series and box['base_id.model_type'] != series) or \ (style and (style != box['box_type.box_type'][0])) or \ (int(box['id'][2:4]) < start) or \ ((end and int(box['id'][2:4]) > end) or (not end and int(box['id'][2:4]) != start)): continue pic_name = ('x_%s-%s%s' % (box['box_type.mod_id'], box['box_type.box_type'][0], box['box_type.pic_id'])).lower() is_pic = int(os.path.exists(useful.relpath('.', config.IMG_DIR_BOX, pic_name + '.jpg'))) sortid = box['id'][2:4] + box['id'][0:2] + box['id'][4:] + box['box_type.box_type'][0] front = ' / '.join( box_lookup('box_type', box['box_type.box_type']) + box_lookup('bottom', box['box_type.bottom']) + box_lookup('additional_text', box['box_type.additional_text']) + [box['box_type.notes']]) if sortid in boxes: boxes[sortid]['count'] += 1 boxes[sortid]['pics'] += is_pic if front not in boxes[sortid]['fronts']: boxes[sortid]['fronts'].append(front) continue box['count'] = 1 box['pics'] = is_pic box['fronts'] = [front] boxes[sortid] = box return boxes
def sets_main(pif): pif.render.print_html() if pif.form.has('page'): setfile = SetFile(useful.relpath(config.SRC_DIR, useful.make_alnum(pif.form.get_str('page')) + '.dat')) return do_set(pif, setfile, pif.form.get_str('set')) else: return select_set(pif)
def show_script(pif, tform): if tform.mss: do_var_masses(pif, tform) return if tform.pms: do_prod_masses(pif, tform) return if tform.rsuf: for fn, suf in tform.rsfx: root, ext = os.path.splitext(fn) if '-' in root: root = root[:root.find('-')] nfn = root + '-' + suf + ext print fn, root + '-' + suf + ext, '<br>' useful.file_mover(os.path.join(tform.tdir, fn), os.path.join(tform.tdir, nfn), mv=True, inc=True) return if tform.cred: for fn, cred in pif.form.get_list(start='cred.'): print fn, cred, '<br>' pif.dbh.write_photo_credit(cred, tform.tdir, fn, verbose=False) return rend = dict(tform.renl) print '<pre>' for ren in tform.renl: fn = ren[1] if '.' not in fn: fn += ren[0][ren[0].rfind('.'):] if not os.path.exists(fn): useful.file_mover(os.path.join(tform.tdir, ren[0]), os.path.join(tform.tdir, fn), mv=True, inc=True) else: print '#ren', os.path.join(tform.tdir, ren[0], os.path.join(tform.tdir, fn)) for lb in tform.libl: dest = lb[1] # we might have renamed this... if lb[0] in rend: lb[0] = rend[lb[0]] if not os.path.exists(useful.relpath('.', config.LIB_DIR, tform.pre, dest)): os.mkdir(useful.relpath('.', config.LIB_DIR, tform.pre, dest)) useful.file_mover(os.path.join(tform.tdir, lb[0]), useful.relpath('.', config.LIB_DIR, tform.pre, dest, lb[0]), mv=True, inc=True) for rm in tform.rml: if os.path.exists(os.path.join(tform.tdir, rm)): useful.file_mover(os.path.join(tform.tdir, rm), None, mv=True) for mv in tform.mvl: fsp = mv.split(' ') if os.path.exists(os.path.join(tform.tdir, fsp[0])): useful.file_mover(os.path.join(tform.tdir, fsp[0]), os.path.join(tform.tdir, fsp[1]), mv=True, inc=True) print '</pre>'
def show_script(pif, tform): if tform.mss: do_var_masses(pif, tform) return if tform.pms: do_prod_masses(pif, tform) return if tform.rsuf: for fn, suf in tform.rsfx: root, ext = os.path.splitext(fn) if '-' in root: root = root[:root.find('-')] nfn = root + '-' + suf + ext print fn, root + '-' + suf + ext, '<br>' useful.file_mover(os.path.join(tform.tdir, fn), os.path.join(tform.tdir, nfn), mv=True, inc=True) return if tform.cred: for fn, cred in pif.form.get_list(start='cred.'): print fn, cred, '<br>' pif.render.message('Credit added: ', pif.dbh.write_photo_credit(cred, tform.tdir, fn, verbose=False)) return rend = dict(tform.renl) print '<pre>' for ren in tform.renl: fn = ren[1] if '.' not in fn: fn += ren[0][ren[0].rfind('.'):] if not os.path.exists(fn): useful.file_mover(os.path.join(tform.tdir, ren[0]), os.path.join(tform.tdir, fn), mv=True, inc=True) else: print '#ren', os.path.join(tform.tdir, ren[0], os.path.join(tform.tdir, fn)) for lb in tform.libl: dest = lb[1] # we might have renamed this... if lb[0] in rend: lb[0] = rend[lb[0]] useful.make_dir(useful.relpath('.', config.LIB_DIR, tform.pre, dest), 0775) useful.file_mover(os.path.join(tform.tdir, lb[0]), useful.relpath('.', config.LIB_DIR, tform.pre, dest, lb[0]), mv=True, inc=True) for rm in tform.rml: if os.path.exists(os.path.join(tform.tdir, rm)): useful.file_mover(os.path.join(tform.tdir, rm), None, mv=True) for mv in tform.mvl: fsp = mv.split(' ') if os.path.exists(os.path.join(tform.tdir, fsp[0])): useful.file_mover(os.path.join(tform.tdir, fsp[0]), os.path.join(tform.tdir, fsp[1]), mv=True, inc=True) print '</pre>'
def get_pic_roots(mod_id, box_style): picroots = glob.glob( useful.relpath('.', config.IMG_DIR_BOX, ('[scm]_' + mod_id + '-' + box_style + '?.jpg').lower())) picroots = list( set([(mod_id + '-' + box_style).lower()] + [x[x.rfind('/') + 3:-4] for x in picroots])) picroots.sort() return picroots
def find_image_file(self, fnames, vars=None, nobase=False, prefix='', suffix=None, largest=None, preferred=None, pdir=None, art=False): self.comment('START find_image_file', fnames, 'vars', vars, 'nobase', nobase, 'prefix', prefix, 'suffix', suffix, 'largest', largest, 'preferred', prefix, 'pdir', pdir, 'art', art) if not fnames: self.comment('find_image_file ret', '') return ('', '') elif isinstance(fnames, str): fnames = [fnames] suffix = graphic_types if suffix is None else [suffix] if isinstance(suffix, str) else suffix if largest: # overrides previous setting of prefixes. prefix = list(reversed(mbdata.image_size_types)) if largest in prefix: prefix = prefix[prefix.index(largest):] elif isinstance(prefix, str): prefix = [prefix] pdir = useful.relpath(pdir if pdir else self.art_dir if art else self.pic_dir) pdirvar = useful.relpath(pdir, 'var') base = [] if nobase else [''] vars = base if not vars else [vars] + base if isinstance(vars, str) else vars + base self.comment("find_image_file", 'f:', fnames, 'v:', vars, 'p:', prefix, 's:', suffix, 'd:', pdir) fimg = fdir = '' for var in vars: for fname in fnames: fname = useful.clean_name(fname.replace('/', '_')) # if not fname: # continue if fname.find('.') >= 0: csuffix = [fname[fname.rfind('.') + 1:]] fname = fname[:fname.rfind('.')] else: csuffix = suffix for pfx in prefix + ['']: rdir, rimg = self.find_prefixed_image(fname, pdir, pdirvar, pfx, csuffix, var) if rimg: if not preferred or preferred == pfx: return rdir, rimg fdir, fimg = rdir, rimg self.comment('find_image_file ret', fdir, fimg) return fdir, fimg
def cars_main(pif): pif.render.print_html() db = CarsFile( useful.relpath(config.SRC_DIR, pif.form.get_str('page', 'cars') + '.dat')) print(pif.render.format_head()) render_cars(pif, db) print(pif.render.format_tail())
def blister(pif): pif.render.print_html() #global pagename #pagename = pif.form.get_str('page', 'blister') dblist = bfiles.SimpleFile(useful.relpath(config.SRC_DIR, pif.page_name + '.dat')) print pif.render.format_head() useful.header_done() print do_tree_page(pif, dblist) print pif.render.format_tail()
def blister(pif): pif.render.print_html() #global pagename #pagename = pif.form.get_str('page', 'blister') dblist = bfiles.SimpleFile( useful.relpath(config.SRC_DIR, pif.page_name + '.dat')) print pif.render.format_head() useful.header_done() print do_tree_page(pif, dblist) print pif.render.format_tail()
def main(pif): pif.render.print_html() print pif.render.format_head() useful.header_done() manf = MannoFile(useful.relpath(config.SRC_DIR, 'tomica.dat')) mans = manf.dictlist if pif.form.has('num'): print '<meta http-equiv="refresh" content="0;url=single.cgi?id=%s">' % pif.form.get_str('num') return else: run_file(pif, manf, year=pif.form.get_str('year')) #print pif.render.format_matrix(llineup) print pif.render.format_tail()
def grab_list(ll, fl): for url in fl: fn = url[url.rfind('/') + 1:] libdir = useful.relpath('.', config.LIB_MAN_DIR, ll['link_line.page_id'][7:].lower()) if not os.path.exists(libdir): errors.append((ll, url)) sfn = os.path.join(libdir, fn) dot = sfn.rfind('.') sfn = sfn[:dot] + sfn[dot:].lower() if os.path.exists(sfn): print sfn, 'already exists' else: img = grab_page(ll['pth'] + '/' + url) save(ll, sfn, img)
def main(pif): pif.render.print_html() print(pif.render.format_head()) useful.header_done() manf = MannoFile(useful.relpath(config.SRC_DIR, 'tomica.dat')) # mans = manf.dictlist if pif.form.has('num'): print('<meta http-equiv="refresh" content="0;url=single.cgi?id=%s">' % pif.form.get_str('num')) return else: run_file(pif, manf, year=pif.form.get_str('year')) # print(pif.render.format_matrix(llineup)) print(pif.render.format_tail())
def format_image_list(self, fn, alt='', wc='', prefix='', suffix='jpg', pdir=None): self.comment('format_image_list', fn, alt, wc, prefix, suffix, pdir) pdir = useful.relpath(pdir if pdir else self.pic_dir) if isinstance(suffix, str): suffix = [suffix] if isinstance(prefix, str): prefix = [prefix] imgs = list() for suf in suffix: for pref in prefix: orig = (pref + fn + '.' + suf) patt = (pref + fn + wc + '.' + suf) for fname in [orig] + useful.read_dir(patt, pdir): img = self.fmt_img_src(pdir + '/' + fname, alt) if img: imgs.append(img) return imgs
def find_boxes(pif): series = pif.form.get_str('series') style = pif.form.get_str('style') if style == 'all': style = '' start = pif.form.get_int('start', 1) end = pif.form.get_int('end', start) boxes = dict() for box in pif.dbh.fetch_castings_by_box(series, style): box['id'] = box['alias.id'] if box.get( 'alias.id') else box['casting.id'] if (series and box['base_id.model_type'] != series) or \ (style and (style != box['box_type.box_type'][0])) or \ (int(box['id'][2:4]) < start) or \ ((end and int(box['id'][2:4]) > end) or (not end and int(box['id'][2:4]) != start)): continue pic_name = ('x_%s-%s%s' % (box['box_type.mod_id'], box['box_type.box_type'][0], box['box_type.pic_id'])).lower() is_pic = int( os.path.exists( useful.relpath('.', config.IMG_DIR_BOX, pic_name + '.jpg'))) sortid = box['id'][2:4] + box['id'][0:2] + box['id'][4:] + box[ 'box_type.box_type'][0] front = ' / '.join( box_lookup('box_type', box['box_type.box_type']) + box_lookup('bottom', box['box_type.bottom']) + box_lookup('additional_text', box['box_type.additional_text']) + [box['box_type.notes']]) if sortid in boxes: boxes[sortid]['count'] += 1 boxes[sortid]['pics'] += is_pic if front not in boxes[sortid]['fronts']: boxes[sortid]['fronts'].append(front) continue box['count'] = 1 box['pics'] = is_pic box['fronts'] = [front] boxes[sortid] = box return boxes
def count_boxes(pif): boxes = pif.dbh.fetch_castings_by_box('', '') box_styles = set() pr_count = im_count = 0 for box in boxes: if 'alias.id' in box: box['id'] = box['alias.id'] else: box['id'] = box['casting.id'] if box['id'].startswith('M'): print box continue box_styles.add(box['id'] + '-' + box['box_type.box_type']) pr_count += 2 im_count += len( glob.glob( useful.relpath( '.', config.IMG_DIR_BOX, 'x_' + box['id'] + '-' + box['box_type.box_type'] + box['box_type.pic_id'] + '*.jpg'))) for box in box_styles: if pif.render.find_image_path(box, pdir=config.IMG_DIR_BOX, prefix=mbdata.IMG_SIZ_SMALL): im_count += 1 if pif.render.find_image_path(box, pdir=config.IMG_DIR_BOX, prefix=mbdata.IMG_SIZ_PETITE): im_count += 1 if pif.render.find_image_path(box, pdir=config.IMG_DIR_BOX, prefix=mbdata.IMG_SIZ_MEDIUM): im_count += 1 pr_count += 1 return pr_count, im_count
def read_dat(fn): dat = open(useful.relpath(config.SRC_DIR, fn + '.dat')).readlines() dat = filter(lambda x: x and not x.startswith('#'), [ln.strip() for ln in dat]) return main_fn(dat)
def show_single(pif): model = pif.dbh.fetch_casting(pif.form.get_id('id'), extras=True, verbose=True) if not model: raise useful.SimpleError("That ID wasn't found.") pif.render.print_html(status=404 if not model else 200) useful.write_comment('model', model) pic = pif.form.get_str('pic') pdir = pif.form.get_str('dir') if pdir.startswith('./'): pdir = pdir[2:] if not pdir.startswith('pic/') or '/' in pic: pdir = pic = '' ref = pif.form.get_id('ref') sub = pif.form.get_str('sub') reg = sub if sub else pic[4] if ( ref.startswith('year') and pic and len(pic) > 4 and pic[:4].isdigit()) else '' mod_id = model['id'] pif.render.hierarchy_append('/', 'Home') pif.render.hierarchy_append('/database.php', 'Database') pif.render.hierarchy_append('/cgi-bin/single.cgi', 'By ID') pif.render.hierarchy_append('/cgi-bin/single.cgi?id=%s' % mod_id, mod_id) pif.render.comment('id=', mod_id, 'man=', model) raw_variations = variations = [] if ref: sub = mbdata.get_region_tree(reg) + [''] raw_variations = pif.dbh.fetch_variation_by_select(mod_id, ref, sub) variations = reduce_variations(pif, mod_id, raw_variations) # years 1971 to 1981 needs to cleave W to U and R appearances = list() for appear in pif.dbh.depref('lineup_model', pif.dbh.fetch_casting_lineups(mod_id)): if (appear.get('region', '') == 'W' and int(appear.get('year', 0)) >= 1971 and int(appear.get('year', 0)) <= 1981): nappear = copy.deepcopy(appear) nappear['region'] = 'U' appear['region'] = 'R' appearances.append(nappear) appearances.append(appear) lm_pic_id = '' prod_title = '' if ref.startswith('year.'): for appear in appearances: if appear.get('page_id', '-') == ref and (appear.get( 'region', '-') in sub or sub == ['']): prod_title = appear['name'] lm_pic_id = appear['picture_id'] break if pif.form.has('useprev'): # pragma: no cover pic = use_previous_product_pic(pif, pif.form.get_int('useprev'), appear) appearances.sort(key=lambda x: x['year']) aliases = [x['alias.id'] for x in pif.dbh.fetch_aliases(mod_id, 'mack')] matrixes = pif.dbh.fetch_matrix_appearances(mod_id) matrixes.sort(key=lambda x: x['page_info.description'] + x['section.name']) for appear in matrixes: appear['title'] = [appear['section.name'], appear['page_info.description']] if appear['page_info.flags'] & 2 \ else [appear['page_info.title'], appear['page_info.description'], appear['section.name']] sections_recs = pif.dbh.fetch_sections(where="page_id like 'year.%'") sections = {} for section in sections_recs: if section['columns'] and not section['display_order']: sections.setdefault(section['page_id'][5:], []) sections[section['page_id'][5:]].append(section) boxstyles = pif.dbh.fetch_box_type_by_mod(model['id']) pif.render.title = '%(casting_type)s %(id)s: %(name)s' % model product_img = pif.render.format_image_sized(pic, pdir=pdir, largest=mbdata.IMG_SIZ_MEDIUM) product_img_credit = pif.dbh.fetch_photo_credit(pdir, pic, verbose=True) product_img_credit = product_img_credit[ 'photographer.name'] if product_img_credit else '' if product_img and pif.is_allowed('a'): # pragma: no cover img = img_re.search(product_img).group('u') url = 'imawidget.cgi?d=%s&f=%s' % tuple(img[3:].rsplit('/', 1)) product_img = pif.render.format_link(url, product_img) vscounts = pif.dbh.fetch_variation_select_counts(mod_id) model['imgid'] = [model['id']] descs = [] for s in model['descs']: if s.startswith('same as '): model['imgid'].append(s[8:]) if s in mbdata.arts: descs.append(pif.render.format_image_art(mbdata.arts[s])) elif s: descs.append("<i>%s</i>" % s) model['descs'] = descs model['img'] = pif.render.format_image_required( model['imgid'], made=model['made'], pdir=config.IMG_DIR_MAN, largest=mbdata.IMG_SIZ_MEDIUM if product_img else mbdata.IMG_SIZ_LARGE) model_img_credit = pif.dbh.fetch_photo_credit('.' + config.IMG_DIR_MAN, model['imgid'][0], verbose=True) model['credit'] = model_img_credit[ 'photographer.name'] if model_img_credit else '' if model['country']: model['country_flag'] = pif.render.format_image_flag(model['country']) model['country_name'] = mflags.FlagList()[model['country']] def make_make_link(make, name): if not make: return '' if not name: name = 'unlicensed' pic = pif.render.fmt_img(make, prefix='u', pdir=config.IMG_DIR_MAKE) if pic: name = pic + '<br>' + name return pif.render.format_link("makes.cgi?make=" + make, name) model['make_name'] = make_make_link(model.get('make', ''), model.get('vehicle_make.name', '')) def make_make(make): return { 'image': pif.render.fmt_img(make['vehicle_make.id'], prefix='u', pdir=config.IMG_DIR_MAKE), 'id': make['vehicle_make.id'], 'name': make['vehicle_make.name'], 'company_name': make['vehicle_make.company_name'], 'flags': make['vehicle_make.flags'] | make['casting_make.flags'], 'link': 'makes.cgi?make=%s' % make['vehicle_make.id'], } model['makes'] = [ make_make(x) for x in pif.dbh.fetch_casting_makes(mod_id) ] adds = [make_boxes(pif, mod_id, boxstyles, aliases)] if boxstyles else [] adds += models.make_adds(pif, mod_id) plants = make_plants(pif, mod_id, pif.dbh.fetch_variation_plant_counts(mod_id)) # ------- render ------------------------------------ pif.render.set_button_comment( pif, 'id=%s&pic=%s&dir=%s&ref=%s' % (mod_id, pic, pdir, ref)) context = { 'title': '%s %s: %s' % (mbdata.model_types[model['model_type']], mod_id, model['name']), 'note': '', 'type_id': '', 'icon_id': mod_id if os.path.exists( useful.relpath('.', config.IMG_DIR_ICON, 'i_' + mod_id.lower() + '.gif')) else '', 'vehicle_type': [mbdata.model_icons.get(x) for x in model['vehicle_type']], 'rowspan': '4', 'left_bar_content': show_left_bar_content(pif, model, ref, pic, pdir, lm_pic_id, raw_variations), 'model': model, 'variations': variations, 'prod_title': prod_title, 'product_image': product_img, 'product_img_credit': product_img_credit, 'mack_nums': get_mack_numbers(pif, mod_id, model['model_type'], aliases), 'product_pic': pic, 'appearances': show_lineup_appearances(pif, appearances), 'matrixes': show_series_appearances(pif, matrixes), 'code2s': show_code2_appearances(pif, mod_id, vscounts), 'packs': show_pack_appearances( pif, sorted(pif.dbh.fetch_pack_model_appearances(mod_id), key=lambda x: x['base_id.first_year'])), 'show_comparison_link': pif.dbh.fetch_casting_related_exists(mod_id, model['model_type'].lower()), 'external_links': show_external_links(pif, pif.dbh.fetch_links_single('single.' + mod_id)), 'relateds': make_relateds(pif, mod_id), 'compares': make_compares(pif, mod_id), 'adds_box': models.show_adds(pif, mod_id), 'adds': adds, 'plants': plants, # 'group': pif.render.find_image_path(mod_id, prefix='g', pdir=config.IMG_DIR_ADD) } return pif.render.format_template('single.html', **context)
def show_left_bar_content(pif, model, ref, pic, pdir, lm_pic_id, raw_variations): mod_id = model['id'] links = [] if pif.is_allowed('a'): # pragma: no cover links.append('<a href="vars.cgi?recalc=1&mod=%s">Recalculate</a>' % mod_id) links.append('<a href="%s">Casting</a>' % pif.dbh.get_editor_link('casting', {'id': mod_id})) links.append( '<a href="%s">AttrPics</a>' % pif.dbh.get_editor_link('attribute_picture', {'mod_id': mod_id})) links.append('<a href="mass.cgi?type=related&mod_id=%s">Relateds</a>' % mod_id) if ref.startswith('year.'): links.append('<a href="%s">Lineup Model</a>' % pif.dbh.get_editor_link('lineup_model', { 'year': ref[5:], 'mod_id': mod_id })) elif ref.startswith('matrix.'): links.append('<a href="%s">Matrix Model</a>' % pif.dbh.get_editor_link('matrix_model', { 'page_id': ref, 'mod_id': id })) elif ref.startswith('packs.'): links.append( '<a href="%s">Pack Model</a>' % pif.dbh.get_editor_link('pack_model', { 'pack_id': pif.form.get_str('sub'), 'mod_id': mod_id })) links.append('<a href="vars.cgi?list=1&mod=%s">Variations</a>' % mod_id) links.append('<a href="vars.cgi?vdet=1&mod=%s">Details</a>' % mod_id) links.append('<a href="vsearch.cgi?ask=1&id=%s">Search</a>' % mod_id) links.append('<a href="pics.cgi?m=%s">Pictures</a>' % mod_id.lower()) links.append('<a href="edlinks.cgi?page=single.%s">Links</a>' % mod_id) if os.path.exists( useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower())): if pif.is_allowed('v'): # pragma: no cover links.append('<a href="traverse.cgi?d=%s">Library</a>' % useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower())) if pif.is_allowed('a'): # pragma: no cover links.append('<a href="upload.cgi?d=%s&m=%s">Library Upload</a>' % (useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower()), mod_id.replace('/', '_').lower())) ostr = '' if pif.is_allowed('a'): # pragma: no cover #<i class="fas fa-star white"></i> #<i class="fas fa-star-half-o white"></i> #<i class="fas fa-star-o white"></i> prodstar = 'fa-star-o black' if pic: links.append('') prodstar = 'fa-star white' prod = pic prod += ' <a href="upload.cgi?d=%s&n=%s&c=%s&link=%s"><i class="fas fa-upload"></i></a>' % ( pdir.replace('pic', 'lib'), pic, pic, urllib.quote(pif.request_uri)) prodpic = pif.render.find_image_path(pic, pdir=pdir) if lm_pic_id: prod += ' <a href="%s&useprev=2"><i class="fas fa-step-backward red"></i></a>' % pif.request_uri elif prodpic: x, y = imglib.get_size(prodpic) if x > 400: prodstar = 'fa-star yellow' elif x == 400: prodstar = 'fa-star black' else: prodstar = 'fa-star red' prod += ' <a href="imawidget.cgi?act=1&d=./%s&f=%s&delete=1"><i class="fas fa-remove"></i></a>' % ( pdir, prodpic[prodpic.rfind('/') + 1:]) else: prod += ' <a href="%s&useprev=1"><i class="fas fa-step-backward"></i></a>' % pif.request_uri links.append(prod) links.append('') vfl = pif.dbh.fetch_variation_files(mod_id) for vf in vfl if vfl else [{ 'mod_id': mod_id, 'imported_from': 'importer' }]: links.append( '<a href="vedit.cgi?d=src/mbxf&m=%(mod_id)s&f=%(imported_from)s">%(imported_from)s</a>' % vf) var_pics, var_texts = show_list_var_pics(pif, mod_id) ostr += '<br>\n'.join(var_pics) + '<p>\n' fmt_bad, _, _ = pif.dbh.check_description_formatting(mod_id) ostr += '<i class="fas fa-times red"></i>' if fmt_bad else '<i class="fas fa-check green"></i>' ostr += '<br>' for i_vt in range(1, len(var_texts)): vt = var_texts[i_vt] ostr += '<i title="%s" class="fas fa-star%s"></i>\n' % ( mbdata.model_texts[i_vt - 1], '-o gray' if not model['format_' + mbdata.desc_attributes[i_vt - 1]] else (' green' if vt == var_texts[0] else (' red' if not vt else ' yellow'))) ostr += '<p>\n' ostr += '<i class="fas %s"></i><p>\n' % prodstar var_ids = [x['v.var'] for x in raw_variations] var_ids.sort() for var in var_ids: ostr += '<a href="vars.cgi?mod=%s&var=%s&edit=1">%s</a>\n' % ( mod_id, var, var) if var: for sz in mbdata.image_size_types: if os.path.exists( useful.relpath( '.', config.IMG_DIR_VAR, sz + '_' + mod_id + '-' + var + '.jpg').lower()): ostr += sz.upper() + ' ' ostr += '<a href="vars.cgi?mod=%s&var=%s"><i class="fas fa-edit"></i></a>\n' % ( mod_id, var) ostr += pif.render.format_link( 'upload.cgi?d=%s&m=%s&v=%s&l=1&c=%s+variation+%s' % (useful.relpath('.', config.LIB_MAN_DIR, mod_id.lower()), mod_id, var, mod_id, var), '<i class="fas fa-upload"></i>') + '\n' ostr += pif.render.format_link( 'traverse.cgi?g=1&d=%s&man=%s&var=%s' % (useful.relpath('.', config.LIB_MAN_DIR, mod_id.lower()), mod_id, var), '<i class="fas fa-bars"></i>') + '\n' ostr += '<br>\n' ostr = '<br>\n'.join(links) + '<p>\n' + ostr return ostr
def action(self, pif, tdir=None, fn=None): log_action = False if not fn: fn = self.fn if not tdir: tdir = self.tdir ret = {'fn': fn, 'dir': tdir, 'act': True} from_path = os.path.join(tdir, fn) to_dir = to_name = '' if self.delete: useful.file_delete(from_path) elif self.archive: useful.file_mover(from_path, os.path.join(tdir, 'archive', fn), mv=True) ret['fn'] = '' elif self.fixed: useful.file_mover(from_path, os.path.join(tdir, 'fixed', fn), mv=True) ret['fn'] = '' elif self.rename: if not self.nname: useful.warn('What? (rename, no name)') else: to_dir = tdir to_name = self.nname elif self.lib: if not self.man: useful.warn('What? (lib, no man)') elif not os.path.exists( useful.relpath('.' + config.LIB_MAN_DIR, self.man)): # man2 = pif.dbh.fetch_alias(self.man) # if not man2: useful.warn('bad destination') # else: # useful.file_mover(from_path, os.path.join('.' + config.LIB_MAN_DIR, man2['ref_id'].lower(), fn), mv=self.mv, ov=self.ov) else: to_dir = useful.relpath('.' + config.LIB_MAN_DIR, self.man) to_name = self.nname elif self.mvbin: if not os.path.exists(os.path.join('lib', self.cat)): useful.warn('bad destination') else: to_dir = os.path.join('lib', self.cat) to_name = self.nname elif self.selcat: if not (self.man or self.nname) or not self.dest: useful.warn('What? (selcat, no name or dest)') else: ddir = self.dest dnam = self.man if self.man else self.nname if self.pref: dnam = self.pref + '_' + dnam if self.ptype == 't': ddir = '.' + config.IMG_DIR_ADD if self.suff: dnam += '-' + self.suff if dnam: to_name = dnam.lower() + '.jpg' to_dir = ddir log_action = True elif self.select: inc = self.inc if not self.man: #self.man = tdir[tdir.rfind('/') + 1:] useful.warn('Huh? (select, no man)') else: ddir = '.' + config.IMG_DIR_MAN dnam = self.man if self.var: ddir = '.' + config.IMG_DIR_VAR dnam = dnam + '-' + self.var if self.pref: dnam = self.pref + '_' + dnam elif self.pref: if self.pref != 'n': dnam = self.pref + '_' + dnam if self.ptype == 't': ddir = '.' + config.IMG_DIR_ADD if self.suff: dnam += '-' + self.suff self.inc = True else: useful.warn("What? (select, no var or pref)") dnam = '' if dnam: to_name = dnam.lower() + '.jpg' to_dir = ddir log_action = True else: ret['act'] = False if to_dir: useful.file_mover(from_path, os.path.join(to_dir, to_name), mv=self.mv, ov=self.ov, inc=self.inc) ret['fn'] = to_name ret['dir'] = to_dir if log_action: title = pif.form.get_str('title', to_name) url = 'http://www.bamca.org/' + os.path.join(to_dir, to_name) link = 'http://www.bamca.org/' + self.link useful.write_message( 'Post to Tumblr: ', tumblr.tumblr(pif).create_photo(caption=to_name, source=url, link=link)) pif.dbh.write_photo_credit(pif.form.get_str('credit'), to_dir, to_name) return ret
def fix_files(page_id): dn = useful.relpath('.', config.LIB_MAN_DIR, page_id[7:].lower()) os.system('sudo chown bamca:www %s' % dn) os.system('sudo chmod 775 %s' % dn) os.system('sudo chown bamca:www %s/*.*' % dn) os.system('sudo chmod 664 %s/*.*' % dn)
def get_pic_roots(mod_id, box_style): picroots = glob.glob(useful.relpath('.', config.IMG_DIR_BOX, ('[scm]_' + mod_id + '-' + box_style + '?.jpg').lower())) picroots = list(set([(mod_id + '-' + box_style).lower()] + [x[x.rfind('/') + 3:-4] for x in picroots])) picroots.sort() return picroots
def action(self, pif, tdir=None, fn=None): log_action = False if not fn: fn = self.fn if not tdir: tdir = self.tdir ret = {'fn': fn, 'dir': tdir, 'act': True} from_path = os.path.join(tdir, fn) to_dir = to_name = '' if self.delete: useful.file_delete(from_path) elif self.trash: useful.file_mover(from_path, os.path.join( '.' + config.TRASH_DIR, from_path[from_path.rfind('/') + 1:]), mv=True, inc=True, trash=False) elif self.archive: useful.file_mover(from_path, os.path.join(tdir, 'archive', fn), mv=True) ret['fn'] = '' elif self.spam: path = '../spam' if os.path.exists(os.path.join( tdir, '..', 'spam')) else 'spam' useful.file_mover(from_path, os.path.join(tdir, path, fn), mv=True) ret['fn'] = '' elif self.fixed: useful.file_mover(from_path, os.path.join(tdir, 'fixed', fn), mv=True) ret['fn'] = '' elif self.rename: if not self.nname: useful.warn('What? (rename, no name)') else: to_dir = tdir to_name = self.nname elif self.lib: if not self.man: useful.warn('What? (lib, no man)') elif not os.path.exists( useful.relpath('.' + config.LIB_MAN_DIR, self.man)): # man2 = pif.dbh.fetch_alias(self.man) # if not man2: useful.warn('bad destination') # else: # useful.file_mover(from_path, os.path.join('.' + config.LIB_MAN_DIR, man2['ref_id'].lower(), fn), # mv=self.mv, ov=self.ov) else: to_dir = useful.relpath('.' + config.LIB_MAN_DIR, self.man) to_name = self.nname elif self.mvbin: if not os.path.exists(os.path.join('lib', self.cat)): useful.warn('bad destination') else: to_dir = os.path.join('lib', self.cat) to_name = self.nname elif self.selcat: if not (self.man or self.nname) or not self.dest: useful.warn('What? (selcat, no name or dest)') else: ddir = self.dest dnam = self.man if self.man else self.nname if self.pref: dnam = self.pref + '_' + dnam if self.ptype == 't': ddir = '.' + config.IMG_DIR_ADD if self.suff: dnam += '-' + self.suff if dnam: to_name = dnam.lower() + '.jpg' to_dir = ddir log_action = True elif self.select: # inc = self.inc if not self.man: # self.man = tdir[tdir.rfind('/') + 1:] useful.warn('Huh? (select, no man)') else: ddir = '.' + config.IMG_DIR_MAN dnam = self.man if self.var: ddir = '.' + config.IMG_DIR_VAR dnam = dnam + '-' + self.var if self.pref: dnam = self.pref + '_' + dnam elif self.pref: if self.pref != 'n': dnam = self.pref + '_' + dnam if self.ptype == 't': ddir = '.' + config.IMG_DIR_ADD if self.suff: dnam += '-' + self.suff self.inc = True else: useful.warn("What? (select, no var or pref)") dnam = '' if dnam: to_name = dnam.lower() + '.jpg' to_dir = ddir log_action = True else: ret['act'] = False if to_dir: cred = pif.form.get_str('credit') if cred: photog = pif.dbh.fetch_photographer(cred) if not photog or not photog.flags & config.FLAG_PHOTOGRAPHER_PRIVATE: cred = '' useful.file_mover(from_path, os.path.join(to_dir, to_name), mv=self.mv, ov=self.ov, inc=self.inc) ret['fn'] = to_name ret['dir'] = to_dir if log_action and self.tumblr: title = pif.form.get_str('title', to_name) url = pif.secure_prod + os.path.join(to_dir, to_name) link = pif.secure_prod + self.link title = to_name if cred: title += ' credited to ' + photog.name pif.render.message( 'Post to Tumblr: ', tumblr.Tumblr(pif).create_photo(caption=title, source=url, link=link)) pif.render.message( 'Credit added: ', pif.dbh.write_photo_credit(cred, to_dir, to_name)) return ret
def fmt_img_file_check(self, pdir, fn): self.comment("fmt_img_check", pdir, fn) return fn if useful.is_good(useful.relpath('.', pdir, fn), v=self.verbose) else ''
def clean_dir(page_id): ln = useful.relpath('.', config.LIB_DIR, '0files') dn = useful.relpath('.', config.LIB_MAN_DIR, page_id.lower()) print "attempting to clean", page_id do_top_dir(ln, dn)
def action(self, pif, tdir=None, fn=None): log_action = False if not fn: fn = self.fn if not tdir: tdir = self.tdir ret = {'fn': fn, 'dir': tdir, 'act': True} from_path = os.path.join(tdir, fn) to_dir = to_name = '' if self.delete: useful.file_delete(from_path) elif self.trash: useful.file_mover(from_path, os.path.join('.' + config.TRASH_DIR, from_path[from_path.rfind('/') + 1:]), mv=True, inc=True, trash=False) elif self.archive: useful.file_mover(from_path, os.path.join(tdir, 'archive', fn), mv=True) ret['fn'] = '' elif self.spam: path = '../spam' if os.path.exists(os.path.join(tdir, '..', 'spam')) else 'spam' useful.file_mover(from_path, os.path.join(tdir, path, fn), mv=True) ret['fn'] = '' elif self.fixed: useful.file_mover(from_path, os.path.join(tdir, 'fixed', fn), mv=True) ret['fn'] = '' elif self.rename: if not self.nname: useful.warn('What? (rename, no name)') else: to_dir = tdir to_name = self.nname elif self.lib: if not self.man: useful.warn('What? (lib, no man)') elif not os.path.exists(useful.relpath('.' + config.LIB_MAN_DIR, self.man)): # man2 = pif.dbh.fetch_alias(self.man) # if not man2: useful.warn('bad destination') # else: # useful.file_mover(from_path, os.path.join('.' + config.LIB_MAN_DIR, man2['ref_id'].lower(), fn), mv=self.mv, ov=self.ov) else: to_dir = useful.relpath('.' + config.LIB_MAN_DIR, self.man) to_name = self.nname elif self.mvbin: if not os.path.exists(os.path.join('lib', self.cat)): useful.warn('bad destination') else: to_dir = os.path.join('lib', self.cat) to_name = self.nname elif self.selcat: if not (self.man or self.nname) or not self.dest: useful.warn('What? (selcat, no name or dest)') else: ddir = self.dest dnam = self.man if self.man else self.nname if self.pref: dnam = self.pref + '_' + dnam if self.ptype == 't': ddir = '.' + config.IMG_DIR_ADD if self.suff: dnam += '-' + self.suff if dnam: to_name = dnam.lower() + '.jpg' to_dir = ddir log_action = True elif self.select: inc = self.inc if not self.man: #self.man = tdir[tdir.rfind('/') + 1:] useful.warn('Huh? (select, no man)') else: ddir = '.' + config.IMG_DIR_MAN dnam = self.man if self.var: ddir = '.' + config.IMG_DIR_VAR dnam = dnam + '-' + self.var if self.pref: dnam = self.pref + '_' + dnam elif self.pref: if self.pref != 'n': dnam = self.pref + '_' + dnam if self.ptype == 't': ddir = '.' + config.IMG_DIR_ADD if self.suff: dnam += '-' + self.suff self.inc = True else: useful.warn("What? (select, no var or pref)") dnam = '' if dnam: to_name = dnam.lower() + '.jpg' to_dir = ddir log_action = True else: ret['act'] = False if to_dir: cred = pif.form.get_str('credit') if cred: photog = pif.dbh.fetch_photographer(cred) if not photog or not photog.flags & config.FLAG_PHOTOGRAPHER_PRIVATE: cred = '' useful.file_mover(from_path, os.path.join(to_dir, to_name), mv=self.mv, ov=self.ov, inc=self.inc) ret['fn'] = to_name ret['dir'] = to_dir if log_action and self.tumblr: title = pif.form.get_str('title', to_name) url = pif.secure_prod + os.path.join(to_dir, to_name) link = pif.secure_prod + self.link title = to_name if cred: title += ' credited to ' + photog.name pif.render.message('Post to Tumblr: ', tumblr.tumblr(pif).create_photo(caption=title, source=url, link=link)) pif.render.message('Credit added: ', pif.dbh.write_photo_credit(cred, to_dir, to_name)) return ret
def show_single(pif): model = pif.dbh.fetch_casting(pif.form.get_id('id'), extras=True, verbose=True) if not model: raise useful.SimpleError("That ID wasn't found.") pif.render.print_html(status=404 if not model else 200) #useful.write_comment('model', model) pic = pif.form.get_str('pic') pdir = pif.form.get_str('dir') if pdir.startswith('./'): pdir = pdir[2:] if not pdir.startswith('pic/') or '/' in pic: pdir = pic = '' ref = pif.form.get_id('ref') sec = pif.form.get_str('sec') ran = pif.form.get_str('ran') reg = sec if sec else pic[4] if (ref.startswith('year') and pic and len(pic) > 4 and pic[:4].isdigit()) else '' reg_list = mbdata.get_region_tree(reg) + [''] mod_id = model['id'] pif.render.hierarchy_append('/', 'Home') pif.render.hierarchy_append('/database.php', 'Database') pif.render.hierarchy_append('/cgi-bin/single.cgi', 'By ID') pif.render.hierarchy_append('/cgi-bin/single.cgi?id=%s' % mod_id, mod_id) pif.render.comment('id=', mod_id, 'man=', model) raw_variations = variations = [] if ref: raw_variations = pif.dbh.fetch_variation_by_select(mod_id, ref, sec_id=reg_list, ran_id=ran) variations = reduce_variations(pif, mod_id, raw_variations) base_names = pif.dbh.fetch_variation_base_names(mod_id) # years 1971 to 1981 needs to cleave W to U and R appearances = list() for appear in pif.dbh.depref('lineup_model', pif.dbh.fetch_casting_lineups(mod_id)): if (appear.get('region', '') == 'W' and int(appear.get('year', 0)) >= 1971 and int(appear.get('year', 0)) <= 1981): nappear = copy.deepcopy(appear) nappear['region'] = 'U' appear['region'] = 'R' appearances.append(nappear) appearances.append(appear) lm_pic_id = '' prod_title = '' if ref.startswith('year.'): for appear in appearances: if appear.get('page_id', '-') == ref and (appear.get('region', '-') in reg_list or reg_list == ['']): prod_title = appear['name'] lm_pic_id = appear['picture_id'] break if pif.form.has('useprev'): # pragma: no cover pic = use_previous_product_pic(pif, pif.form.get_int('useprev'), appear) appearances.sort(key=lambda x: x['year']) aliases = pif.dbh.fetch_aliases(mod_id, 'mack') sections_recs = pif.dbh.fetch_sections(where="page_id like 'year.%'") sections = {} for section in sections_recs: if section['columns'] and not section['display_order']: sections.setdefault(section['page_id'][5:], []) sections[section['page_id'][5:]].append(section) boxstyles = pif.dbh.fetch_box_type_by_mod(model['id']) pif.render.title = '%(casting_type)s %(id)s: %(name)s' % model product_img = pif.render.format_image_sized(pic, pdir=pdir, largest=mbdata.IMG_SIZ_MEDIUM) product_img_credit = pif.dbh.fetch_photo_credit(pdir, pic, verbose=True) product_img_credit = product_img_credit['photographer.name'] if product_img_credit else '' if product_img and pif.is_allowed('a'): # pragma: no cover img = img_re.search(product_img).group('u') url = 'imawidget.cgi?d=%s&f=%s' % tuple(img[3:].rsplit('/', 1)) product_img = pif.render.format_link(url, product_img) vscounts = pif.dbh.fetch_variation_select_counts(mod_id) model['imgid'] = [model['id']] descs = [] for s in model['descs']: if s.startswith('same as '): model['imgid'].append(s[8:]) if s in mbdata.arts: descs.append(pif.render.format_image_icon('c_' + mbdata.arts[s])) elif s: descs.append("<i>%s</i>" % s) model['descs'] = descs model['img'] = pif.render.format_image_required(model['imgid'], made=model['made'], pdir=config.IMG_DIR_MAN, largest=mbdata.IMG_SIZ_MEDIUM if product_img else mbdata.IMG_SIZ_LARGE) model_img_credit = pif.dbh.fetch_photo_credit('.' + config.IMG_DIR_MAN, model['imgid'][0], verbose=True) model['credit'] = model_img_credit['photographer.name'] if model_img_credit else '' if model['country']: model['country_flag'] = pif.render.format_image_flag(model['country']) model['country_name'] = mflags.FlagList()[model['country']] def make_make_link(make, name): if not make: return '' if not name: name = 'unlicensed' pic = pif.render.fmt_img(make, prefix='u', pdir=config.IMG_DIR_MAKE) if pic: name = pic + '<br>' + name return pif.render.format_link("makes.cgi?make=" + make, name) model['make_name'] = make_make_link(model.get('make', ''), model.get('vehicle_make.name', '')) def make_make(make): return { 'image': pif.render.fmt_img(make['vehicle_make.id'], prefix='u', pdir=config.IMG_DIR_MAKE), 'id': make['vehicle_make.id'], 'name': make['vehicle_make.name'], 'company_name': make['vehicle_make.company_name'], 'flags': make['vehicle_make.flags'] | make['casting_make.flags'], 'link': 'makes.cgi?make=%s' % make['vehicle_make.id'], } model['makes'] = [make_make(x) for x in pif.dbh.fetch_casting_makes(mod_id)] adds = [make_boxes(pif, mod_id, boxstyles, [x['alias.id'] for x in pif.dbh.fetch_aliases(mod_id, 'mack')])] if boxstyles else [] adds += models.make_adds(pif, mod_id) plants = make_plants(pif, mod_id, pif.dbh.fetch_variation_plant_counts(mod_id)) relateds = pif.dbh.fetch_casting_relateds(mod_id) mack_nums = get_mack_numbers(pif, mod_id, model['model_type'], aliases) # ------- render ------------------------------------ pif.render.set_button_comment(pif, 'id=%s&pic=%s&dir=%s&ref=%s' % (mod_id, pic, pdir, ref)) context = { 'title': '%s %s: %s' % (mbdata.model_types[model['model_type']], mod_id, model['name']), 'note': '', 'type_id': '', 'icon_id': mod_id if os.path.exists(useful.relpath('.', config.IMG_DIR_MAN_ICON, 'i_' + mod_id.lower() + '.gif')) else '', 'vehicle_type': [mbdata.model_icons.get(x) for x in model['vehicle_type']], 'rowspan': '4', 'left_bar_content': show_left_bar_content(pif, model, ref, pic, pdir, lm_pic_id, raw_variations), 'model': model, 'variations': variations, 'prod_title': prod_title, 'product_image': product_img, 'product_img_credit': product_img_credit, 'mack_nums': mack_nums, 'product_pic': pic, 'appearances': show_lineup_appearances(pif, appearances), 'matrixes': show_series_appearances(pif, pif.dbh.fetch_matrix_appearances(mod_id), relateds), 'code2s': show_code2_appearances(pif, mod_id, vscounts), 'packs': show_pack_appearances(pif, sorted(pif.dbh.fetch_pack_model_appearances(mod_id), key=lambda x: x['base_id.first_year'])), 'show_comparison_link': pif.dbh.fetch_casting_related_exists(mod_id, model['model_type'].lower()), 'external_links': show_external_links(pif, pif.dbh.fetch_links_single('single.' + mod_id)), 'relateds': make_relateds(pif, mod_id, [x for x in relateds if x['casting_related.section_id'] == 'single']), 'compares': make_compares(pif, mod_id, [x for x in relateds if x['casting_related.section_id'] in ['sf', 'rw', 'tr']]), 'adds_box': models.show_adds(pif, mod_id), 'adds': adds, 'plants': plants, 'base_names': base_names, 'info_cols': int(bool(model.get('makes'))) + int(bool(mack_nums)) + int(bool(model['scale'])) + int(bool(model['country'])) + int(bool(model['first_year'])), # 'group': pif.render.find_image_path(mod_id, prefix='g', pdir=config.IMG_DIR_ADD) } return pif.render.format_template('single.html', **context)
def show_left_bar_content(pif, model, ref, pic, pdir, lm_pic_id, raw_variations): mod_id = model['id'] links = [] if pif.is_allowed('a'): # pragma: no cover links.append('<a href="vars.cgi?recalc=1&mod=%s">Recalculate</a>' % mod_id) links.append('<a href="%s">Casting</a>' % pif.dbh.get_editor_link('casting', {'id': mod_id})) links.append('<a href="%s">AttrPics</a>' % pif.dbh.get_editor_link('attribute_picture', {'mod_id': mod_id})) links.append('<a href="mass.cgi?type=related&mod_id=%s">Relateds</a>' % mod_id) links.append('<a href="mass.cgi?type=alias&mod_id=%s">Aliases</a>' % mod_id) links.append('<a href="vars.cgi?edt=1&mod=%s">Variations</a>' % mod_id) links.append('<a href="vars.cgi?adl=1&mod=%s">Attr Edit</a>' % mod_id) links.append('<a href="vars.cgi?vdt=1&mod=%s">Details</a>' % mod_id) links.append('<a href="vsearch.cgi?ask=1&id=%s">Search</a>' % mod_id) links.append('<a href="pics.cgi?m=%s">Pics</a> <a href="vars.cgi?lrg=1&mod=%s&pic1=1&hc=1&picown=1&ci=1&c1=1&c2=1">Creds</a>' % (mod_id.lower(), mod_id)) links.append('<a href="edlinks.cgi?page_id=single.%s">Links</a>' % mod_id) if os.path.exists(useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower())): if pif.is_allowed('v'): # pragma: no cover links.append('<a href="traverse.cgi?d=%s">Library</a>' % useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower())) if pif.is_allowed('a'): # pragma: no cover links.append('<a href="upload.cgi?d=%s&m=%s">Library Upload</a>' % (useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower()), mod_id.replace('/', '_').lower())) links.append('<a href="/cgi-bin/traverse.cgi?p=%s&d=%s&mr=1<y=mss&til=1&credit=DT" target="_blank">Tilley List</a>' % (imglib.get_tilley_file().get(mod_id.lower(), [''])[0] + '*', useful.relpath('.', config.LIB_MAN_DIR, mod_id.replace('/', '_').lower()))) ref_link = ostr = '' if pif.is_allowed('a'): # pragma: no cover prodstar = 'far fa-star black' if ref.startswith('year.'): ref_link = pif.dbh.get_editor_link('lineup_model', {'year': ref[5:], 'mod_id': mod_id}) elif ref.startswith('matrix.'): ref_link = pif.dbh.get_editor_link('matrix_model', {'page_id': ref, 'mod_id': id}) elif ref.startswith('packs.'): ref_link = pif.dbh.get_editor_link('pack_model', {'pack_id': pif.form.get_str('sec'), 'mod_id': mod_id}) if pic: links.append('') prodstar = 'fas fa-star white' prod = pic prod += ' <a href="upload.cgi?d=%s&n=%s&c=%s&link=%s"><i class="fas fa-upload"></i></a>' % (pdir.replace('pic', 'lib'), pic, pic, useful.url_quote(pif.request_uri)) prodpic = pif.render.find_image_path(pic, pdir=pdir, largest="m") if lm_pic_id: prod = '<i class="%s"></i>\n' % prodstar + prod prod += ' <a href="%s&useprev=2"><i class="fas fa-step-backward red"></i></a>' % pif.request_uri elif prodpic: x, y = imglib.get_size(prodpic) if x > 400: prodstar = 'fas fa-star yellow' elif x == 400: prodstar = 'fas fa-star black' else: prodstar = 'fas fa-star red' prod = '<i class="%s"></i>\n' % prodstar + prod prod += ' <a href="imawidget.cgi?act=1&d=./%s&f=%s&trash=1"><i class="fas fa-times"></i></a>' % (pdir, prodpic[prodpic.rfind('/') + 1:]) if ref_link: prod += pif.render.format_link(ref_link, ' <i class="fas fa-edit"></i>') else: prod = '<i class="%s"></i>\n' % prodstar + prod if ref_link: prod += pif.render.format_link(ref_link, ' <i class="fas fa-edit"></i>') prod += ' <a href="%s&useprev=1"><i class="fas fa-step-backward"></i></a>' % pif.request_uri links.append(prod) links.append('') vfl = pif.dbh.fetch_variation_files(mod_id) for vf in vfl if vfl else [{'mod_id': mod_id, 'imported_from': 'importer'}]: links.append('<a href="vedit.cgi?d=src/mbxf&m=%(mod_id)s&f=%(imported_from)s">%(imported_from)s</a>' % vf) var_pics, var_texts = show_list_var_pics(pif, mod_id) ostr += '<br>\n'.join(var_pics) + '<p>\n' fmt_bad, _, _ = pif.dbh.check_description_formatting(mod_id) ostr += '<i class="fas fa-times red"></i>' if fmt_bad else '<i class="fas fa-check green"></i>' ostr += '<br>' for i_vt in range(1, len(var_texts)): vt = var_texts[i_vt] ostr += '<i title="%s" class="%s"></i>\n' % (mbdata.model_texts[i_vt - 1], 'far fa-star gray' if not model['format_' + mbdata.desc_attributes[i_vt - 1]] else ('fas fa-star green' if vt == var_texts[0] else ('fas fa-star red' if not vt else 'fas fa-star yellow'))) ostr += '<p>\n' var_ids = [x['v.var'] for x in raw_variations] var_ids.sort() for var in var_ids: ostr += '<a href="vars.cgi?mod=%s&var=%s&edt=1">%s</a>\n' % (mod_id, var, var) if var: for sz in mbdata.image_size_types: if os.path.exists(useful.relpath('.', config.IMG_DIR_VAR, sz + '_' + mod_id + '-' + var + '.jpg').lower()): ostr += sz.upper() + ' ' ostr += '<a href="vars.cgi?mod=%s&var=%s&edt=1"><i class="fas fa-edit"></i></a>\n' % (mod_id, var) ostr += pif.render.format_link('upload.cgi?d=%s&m=%s&v=%s&l=1&c=%s+variation+%s' % (useful.relpath('.', config.LIB_MAN_DIR, mod_id.lower()), mod_id, var, mod_id, var), '<i class="fas fa-upload"></i>') + '\n' ostr += pif.render.format_link('traverse.cgi?g=1&d=%s&man=%s&var=%s' % (useful.relpath('.', config.LIB_MAN_DIR, mod_id.lower()), mod_id, var), '<i class="fas fa-bars"></i>') + '\n' ostr += '<br>\n' for attr in pif.dbh.fetch_attributes(mod_id): ostr += attr['attribute.attribute_name'] + '<br>\n' ostr = '<br>\n'.join(links) + '<p>\n' + ostr return ostr
def blister_things(pif): dblist = bfiles.SimpleFile(useful.relpath(config.SRC_DIR, 'blister.dat')) for llist in dblist: if llist[0] == 'm': if llist[1].endswith('p'): print llist[3]
def clean_dir(page_id): ln = useful.relpath('.', config.LIB_DIR, '0files') dn = useful.relpath('.', config.LIB_MAN_DIR, page_id.lower()) print("attempting to clean", page_id) do_top_dir(ln, dn)
def __init__(self, fname=useful.relpath(config.SRC_DIR, "cars.dat")): self.sec = [] self.ent = [] self.secname = '' bfiles.ArgFile.__init__(self, fname)