def load_mine(json): page = json.get('gr_data')['paginationOptions']['pageNumber'] if json.get('gr_data') else 1 pageSize = json.get('gr_data')['paginationOptions']['pageSize'] if json.get('gr_data') else 25 search_text = json.get('gr_data')['search_text'] if json.get('gr_data') else None params = {'user_id': g.user_dict['id']} if json.get('gr_data'): params['sort'] = {} params['filter'] = {} if json.get('gr_data')['sort']: for n in json.get('gr_data')['sort']: params['sort'][n] = json.get('gr_data')['sort'][n] if json.get('gr_data')['filter']: for b in json.get('gr_data')['filter']: if json.get('gr_data')['filter'][b] != '-- all --': params['filter'][b] = json.get('gr_data')['filter'][b] subquery = ArticleCompany.subquery_user_articles(search_text=search_text,**params) articles, pages, current_page = pagination(subquery, page=page, items_per_page=pageSize) add_param = {'value': '1', 'label': '-- all --'} statuses = Article.list_for_grid_tables(ARTICLE_STATUS_IN_COMPANY.all, add_param, False) company_list_for_grid = Article.list_for_grid_tables(ArticleCompany.get_companies_where_user_send_article(g.user_dict['id']), add_param, True) articles_drid_data = Article.getListGridDataArticles(articles.all()) grid_filters = {'company': company_list_for_grid,'status': statuses} return {'grid_data': articles_drid_data, 'grid_filters': grid_filters, 'total': subquery.count()}
def load_mine(json): current_page = json.get('pages')['current_page'] if json.get('pages') else 1 chosen_company_id = json.get('chosen_company')['id'] if json.get('chosen_company') else 0 params = {'search_text': json.get('search_text'), 'user_id': g.user_dict['id']} original_chosen_status = None article_status = json.get('chosen_status') if chosen_company_id: params['company_id'] = chosen_company_id if article_status and article_status != 'All': params['status'] = original_chosen_status = article_status subquery = ArticleCompany.subquery_user_articles(**params) articles, pages, current_page = pagination(subquery, page=current_page, items_per_page=10) all, companies = ArticleCompany.get_companies_where_user_send_article(g.user_dict['id']) statuses = {status: status for status in ARTICLE_STATUS_IN_COMPANY.all} statuses['All'] = 'All' return {'articles': [{'article': a.get_client_side_dict(), 'company_count': len(a.get_client_side_dict()['submitted_versions']) + 1} for a in articles], 'companies': companies, 'search_text': json.get('search_text') or '', 'original_search_text': json.get('search_text') or '', 'chosen_company': json.get('chosen_company') or all, 'pages': {'total': pages, 'current_page': current_page, 'page_buttons': Config.PAGINATION_BUTTONS}, 'chosen_status': json.get('chosen_status') or statuses['All'], 'original_chosen_status': original_chosen_status, 'statuses': statuses}
def material_details(material_id): company = Company.get(ArticleCompany.get(material_id).company.id) return render_template( 'company/material_details.html', article=ArticleCompany.get(material_id).get_client_side_dict( more_fields='company|long'), company=company, user_rights_in_company=UserCompany.get(company_id=company.id).rights)
def resubmit_to_company(json, article_company_id): a = ArticleCompany.get(article_company_id) if not a.status == ARTICLE_STATUS_IN_COMPANY.declined: raise Exception('article should have %s to be resubmited' % ARTICLE_STATUS_IN_COMPANY.declined) a.status = ARTICLE_STATUS_IN_COMPANY.submitted return {'article': a.save().get_client_side_dict()}
def load_form_update(json, article_company_id): action = g.req('action', allowed=['load', 'save', 'validate']) article = ArticleCompany.get(article_company_id) if action == 'load': article = article.get_client_side_dict() article.update(ratio=Config.IMAGE_EDITOR_RATIO) image_id = article.get('image_file_id') if image_id: try: article['image_file_id'], coordinates = ImageCroped. \ get_coordinates_and_original_img(image_id) article.update(coordinates) except NoResultFound: pass return article else: article.attr({key: val for key, val in json.items() if key in ['keywords', 'title', 'short', 'long']}) if action == 'save': image_id = json.get('image_file_id') coordinates = json.get('coordinates') if image_id: if db(ImageCroped, original_image_id=image_id).count(): update_croped_image(image_id, coordinates) else: article.image_file_id = crop_image(image_id, coordinates) article.save() article = article.get_client_side_dict() # print(article['image_file_id']) return article else: # return {'errors': {}, 'warnings': {}, 'notices': {}} article.detach() return article.validate('update')
def article_show_form(material_id=None, publication_id=None, company_id=None): company = Company.get(company_id if company_id else ( ArticlePortalDivision.get(publication_id) if publication_id else ArticleCompany.get(material_id)).company.id) return render_template('article/form.html', material_id=material_id, company_id=company_id, publication_id=publication_id, company=company)
def submit_publish(json, article_action): action = g.req('action', allowed=['load', 'validate', 'save']) company = Company.get(json['company']['id']) if article_action == 'SUBMIT': material = ArticleCompany.get(json['material']['id']) publication = ArticlePortalDivision(title=material.title, subtitle=material.subtitle, keywords=material.keywords, short=material.short, long=material.long, article_company_id=material.id) more_data_to_ret = { 'material': {'id': material.id}, 'can_material_also_be_published': MemberCompanyPortal.get(portal_id=json['portal']['id'], company_id=json['company']['id']) .has_rights(MemberCompanyPortal.RIGHT_AT_PORTAL.PUBLICATION_PUBLISH) } else: publication = ArticlePortalDivision.get(json['publication']['id']) more_data_to_ret = {} if action == 'load': ret = { 'publication': publication.get_client_side_dict(), 'company': company.get_client_side_dict(), 'portal': Portal.get(json['portal']['id']).get_client_side_dict() } ret['portal']['divisions'] = PRBase.get_ordered_dict([d for d in ret['portal']['divisions'] if (d['portal_division_type_id'] in ['events', 'news'])]) return PRBase.merge_dicts(ret, more_data_to_ret) else: publication.attr(g.filter_json(json['publication'], 'portal_division_id')) publication.publishing_tm = PRBase.parse_timestamp(json['publication'].get('publishing_tm')) publication.event_tm = PRBase.parse_timestamp(json['publication'].get('event_tm')) if 'also_publish' in json and json['also_publish']: publication.status = ArticlePortalDivision.STATUSES['PUBLISHED'] else: if article_action in [ArticlePortalDivision.ACTIONS['PUBLISH'], ArticlePortalDivision.ACTIONS['REPUBLISH']]: publication.status = ArticlePortalDivision.STATUSES['PUBLISHED'] elif article_action in [ArticlePortalDivision.ACTIONS['UNPUBLISH'], ArticlePortalDivision.ACTIONS[ 'UNDELETE']]: publication.status = ArticlePortalDivision.STATUSES['UNPUBLISHED'] elif article_action in [ArticlePortalDivision.ACTIONS['DELETE']]: publication.status = ArticlePortalDivision.STATUSES['DELETED'] if action == 'validate': publication.detach() return publication.validate(True if article_action == 'SUBMIT' else False) else: if article_action == 'SUBMIT': publication.long = material.clone_for_portal_images_and_replace_urls(publication.portal_division_id, publication) publication.save() return get_portal_dict_for_material(publication.portal, company, publication=publication)
def article_show_form(material_id=None, publication_id=None, company_id=None): company = Company.get( company_id if company_id else ( ArticlePortalDivision.get(publication_id) if publication_id else ArticleCompany.get(material_id) ).company.id ) return render_template( "article/form.html", material_id=material_id, company_id=company_id, publication_id=publication_id, company=company, )
def material_details_load(json, material_id): material = ArticleCompany.get(material_id) company = material.company return { 'material': material.get_client_side_dict(more_fields='long'), 'actions': material.actions(company), 'company': company.get_client_side_dict(), 'portals': { 'grid_data': [get_portal_dict_for_material(portal, company, material) for portal in company.get_portals_where_company_is_member()], 'grid_filters': { 'publication.status': Grid.filter_for_status(ArticlePortalDivision.STATUSES) } } }
def material_details_load(json, material_id): material = ArticleCompany.get(material_id) company = material.company return { 'material': material.get_client_side_dict(more_fields='long'), 'actions': material.actions(company), 'company': company.get_client_side_dict(), 'portals': { 'grid_data': [ get_portal_dict_for_material(portal, company, material) for portal in company.get_portals_where_company_is_member() ], 'grid_filters': { 'publication.status': Grid.filter_for_status(ArticlePortalDivision.STATUSES) } } }
def material_details_load(json, material_id): article = ArticleCompany.get(material_id) portals = [ p.get_client_side_dict(fields="id, name, divisions.id|name|portal_division_type_id, own_company.name") for p in Company.get(article.company_id).get_portals_where_company_is_member() ] for p in portals: p["divisions"] = PRBase.get_ordered_dict( [ d for d in p["divisions"] if (d["portal_division_type_id"] == "events" or d["portal_division_type_id"] == "news") ] ) p["publication"] = None p["actions"] = ["publish"] publication = ( db(ArticlePortalDivision) .filter(ArticlePortalDivision.portal_division_id.in_([div_id for div_id, div in p["divisions"].items()])) .first() ) if publication: p["publication"] = publication.get_client_side_dict( "title,status,visibility,portal_division_id,publishing_tm" ) p["publication"]["division"] = p["divisions"][p["publication"]["portal_division_id"]] p["publication"]["counts"] = "0/0/0/0" p["actions"] = ["unpublish"] return { "material": article.get_client_side_dict(more_fields="long"), "company": Company.get(article.company_id).get_client_side_dict(), "rights_user_in_company": list(g.user.user_rights_in_company(article.company_id)), "portals": {"grid_data": portals, "grid_filters": {}, "total": 2} # 'user_rights': ['publish', 'unpublish', 'edit'], # TODO: uncomment the string below and delete above # TODO: when all works with rights are finished # 'user_rights': user_rights, # 'joined_portals': joined_portals }
def load_form_create(json, article_company_id=None, mine_version_article_company_id=None, article_portal_division_id=None): action = g.req('action', allowed=['load', 'validate', 'save']) def portal_division_dict(article, tags=None): if (not hasattr(article, 'portal_division_id')) or (article.portal_division_id is None): return {'positioned_articles': []} else: filter = article.position_unique_filter() return {'positioned_articles': [pda.get_client_side_dict(fields='id|position|title') for pda in db(ArticlePortalDivision).filter(filter). order_by(expression.desc(ArticlePortalDivision.position)).all()], 'availableTags': tags } available_tag_names = None if article_company_id: # companys version. always updating existing articleVersion = ArticleCompany.get(article_company_id) elif mine_version_article_company_id: # updating personal version articleVersion = ArticleCompany.get(mine_version_article_company_id) elif article_portal_division_id: # updating portal version articleVersion = ArticlePortalDivision.get(article_portal_division_id) portal_division_id = articleVersion.portal_division_id article_tag_names = articleVersion.tags available_tags = PortalDivision.get(portal_division_id).portal_division_tags available_tag_names = list(map(lambda x: getattr(x, 'name', ''), available_tags)) else: # creating personal version articleVersion = ArticleCompany(editor=g.user, article=Article(author_user_id=g.user.id)) if action == 'load': article_dict = articleVersion.get_client_side_dict(more_fields='long|company') if article_portal_division_id: article_dict = dict(list(article_dict.items()) + [('tags', article_tag_names)]) image_dict = {'ratio': Config.IMAGE_EDITOR_RATIO, 'coordinates': None, 'image_file_id': article_dict['image_file_id'], 'no_image_url': g.fileUrl(FOLDER_AND_FILE.no_article_image()) } # article_dict['long'] = '<table><tr><td><em>cell</em> 1</td><td><strong>cell<strong> 2</td></tr></table>' # TODO: VK by OZ: this code should be moved to model try: if article_dict.get('image_file_id'): image_dict['image_file_id'], image_dict['coordinates'] = ImageCroped. \ get_coordinates_and_original_img(article_dict.get('image_file_id')) else: image_dict['image_file_id'] = None except Exception as e: pass return {'article': article_dict, 'image': image_dict, 'portal_division': portal_division_dict(articleVersion, available_tag_names)} else: parameters = g.filter_json(json, 'article.title|short|long|keywords, image.*') articleVersion.attr(parameters['article']) if action == 'validate': articleVersion.detach() return articleVersion.validate(article_company_id is None) else: image_id = parameters['image'].get('image_file_id') # TODO: VK by OZ: this code dont work if ArticlePortalDivision updated if image_id: articleVersion.image_file_id = crop_image(image_id, parameters['image']['coordinates']) else: articleVersion.image_file_id = None if type(articleVersion) == ArticlePortalDivision: tag_names = json['article']['tags'] articleVersion.manage_article_tags(tag_names) a = articleVersion.save() if article_portal_division_id: articleVersion.insert_after(json['portal_division']['insert_after'], articleVersion.position_unique_filter()) return {'article': articleVersion.save().get_client_side_dict(more_fields='long'), 'image': json['image'], 'portal_division': portal_division_dict(articleVersion)}
def material_details(material_id): company = Company.get(ArticleCompany.get(material_id).company.id) return render_template('company/material_details.html', article=ArticleCompany.get(material_id).get_client_side_dict(more_fields='company|long'), company=company, user_rights_in_company=UserCompany.get(company_id=company.id).rights)
def load_form_update(json, article_company_id): return ArticleCompany.get(article_company_id).get_client_side_dict()
def load_form_create(json, company_id=None, material_id=None, publication_id=None): action = g.req('action', allowed=['load', 'validate', 'save']) def portal_division_dict(article, tags=None): if (not hasattr(article, 'portal_division_id')) or ( article.portal_division_id is None): return {'positioned_articles': []} else: filter = article.position_unique_filter() return { 'positioned_articles': [ pda.get_client_side_dict(fields='id|position|title') for pda in db(ArticlePortalDivision).filter(filter).order_by( expression.desc(ArticlePortalDivision.position)).all() ], 'availableTags': tags } available_tag_names = None if company_id: # creating material version articleVersion = ArticleCompany( company_id=company_id, editor=g.user, article=Article(author_user_id=g.user.id)) elif material_id: # companys version. always updating existing articleVersion = ArticleCompany.get(material_id) elif publication_id: # updating portal version articleVersion = ArticlePortalDivision.get(publication_id) portal_division_id = articleVersion.portal_division_id article_tag_names = articleVersion.tags available_tags = PortalDivision.get( portal_division_id).portal_division_tags available_tag_names = list( map(lambda x: getattr(x, 'name', ''), available_tags)) if action == 'load': article_dict = articleVersion.get_client_side_dict( more_fields='long|company') if publication_id: article_dict = dict( list(article_dict.items()) + [('tags', article_tag_names)]) image_dict = { 'ratio': Config.IMAGE_EDITOR_RATIO, 'coordinates': None, 'image_file_id': article_dict['image_file_id'], 'no_image_url': g.fileUrl(FOLDER_AND_FILE.no_article_image()) } # article_dict['long'] = '<table><tr><td><em>cell</em> 1</td><td><strong>cell<strong> 2</td></tr></table>' # TODO: VK by OZ: this code should be moved to model try: if article_dict.get('image_file_id'): image_dict['image_file_id'], image_dict['coordinates'] = ImageCroped. \ get_coordinates_and_original_img(article_dict.get('image_file_id')) else: image_dict['image_file_id'] = None except Exception as e: pass return { 'article': article_dict, 'image': image_dict, 'portal_division': portal_division_dict(articleVersion, available_tag_names) } else: parameters = g.filter_json( json, 'article.title|subtitle|short|long|keywords, image.*') articleVersion.attr(parameters['article']) if action == 'validate': articleVersion.detach() return articleVersion.validate(articleVersion.id is not None) else: image_id = parameters['image'].get('image_file_id') # TODO: VK by OZ: this code dont work if ArticlePortalDivision updated if image_id: articleVersion.image_file_id = crop_image( image_id, parameters['image']['coordinates']) else: articleVersion.image_file_id = None if type(articleVersion) == ArticlePortalDivision: tag_names = json['article']['tags'] articleVersion.manage_article_tags(tag_names) articleVersion.save() if publication_id: articleVersion.insert_after( json['portal_division']['insert_after'], articleVersion.position_unique_filter()) return { 'article': articleVersion.save().get_client_side_dict(more_fields='long'), 'image': json['image'], 'portal_division': portal_division_dict(articleVersion) }
def load_form_create(json, company_id=None, material_id=None, publication_id=None): action = g.req("action", allowed=["load", "validate", "save"]) def portal_division_dict(article, tags=None): if (not hasattr(article, "portal_division_id")) or (article.portal_division_id is None): return {"positioned_articles": []} else: filter = article.position_unique_filter() return { "positioned_articles": [ pda.get_client_side_dict(fields="id|position|title") for pda in db(ArticlePortalDivision) .filter(filter) .order_by(expression.desc(ArticlePortalDivision.position)) .all() ], "availableTags": tags, } available_tag_names = None if company_id: # creating material version articleVersion = ArticleCompany(company_id=company_id, editor=g.user, article=Article(author_user_id=g.user.id)) elif material_id: # companys version. always updating existing articleVersion = ArticleCompany.get(material_id) elif publication_id: # updating portal version articleVersion = ArticlePortalDivision.get(publication_id) portal_division_id = articleVersion.portal_division_id article_tag_names = articleVersion.tags available_tags = PortalDivision.get(portal_division_id).portal_division_tags available_tag_names = list(map(lambda x: getattr(x, "name", ""), available_tags)) if action == "load": article_dict = articleVersion.get_client_side_dict(more_fields="long|company") if publication_id: article_dict = dict(list(article_dict.items()) + [("tags", article_tag_names)]) image_dict = { "ratio": Config.IMAGE_EDITOR_RATIO, "coordinates": None, "image_file_id": article_dict["image_file_id"], "no_image_url": g.fileUrl(FOLDER_AND_FILE.no_article_image()), } # article_dict['long'] = '<table><tr><td><em>cell</em> 1</td><td><strong>cell<strong> 2</td></tr></table>' # TODO: VK by OZ: this code should be moved to model try: if article_dict.get("image_file_id"): image_dict["image_file_id"], image_dict["coordinates"] = ImageCroped.get_coordinates_and_original_img( article_dict.get("image_file_id") ) else: image_dict["image_file_id"] = None except Exception as e: pass return { "article": article_dict, "image": image_dict, "portal_division": portal_division_dict(articleVersion, available_tag_names), } else: parameters = g.filter_json(json, "article.title|subtitle|short|long|keywords, image.*") articleVersion.attr(parameters["article"]) if action == "validate": articleVersion.detach() return articleVersion.validate(articleVersion.id is not None) else: image_id = parameters["image"].get("image_file_id") # TODO: VK by OZ: this code dont work if ArticlePortalDivision updated if image_id: articleVersion.image_file_id = crop_image(image_id, parameters["image"]["coordinates"]) else: articleVersion.image_file_id = None if type(articleVersion) == ArticlePortalDivision: tag_names = json["article"]["tags"] articleVersion.manage_article_tags(tag_names) articleVersion.save() if publication_id: articleVersion.insert_after( json["portal_division"]["insert_after"], articleVersion.position_unique_filter() ) return { "article": articleVersion.save().get_client_side_dict(more_fields="long"), "image": json["image"], "portal_division": portal_division_dict(articleVersion), }
def submit_publish(json, article_action): action = g.req('action', allowed=['load', 'validate', 'save']) company = Company.get(json['company']['id']) if article_action == 'SUBMIT': material = ArticleCompany.get(json['material']['id']) publication = ArticlePortalDivision(title=material.title, subtitle=material.subtitle, keywords=material.keywords, short=material.short, long=material.long, article_company_id=material.id) more_data_to_ret = { 'material': { 'id': material.id }, 'can_material_also_be_published': MemberCompanyPortal.get( portal_id=json['portal']['id'], company_id=json['company']['id']).has_rights( MemberCompanyPortal.RIGHT_AT_PORTAL.PUBLICATION_PUBLISH) } else: publication = ArticlePortalDivision.get(json['publication']['id']) more_data_to_ret = {} if action == 'load': ret = { 'publication': publication.get_client_side_dict(), 'company': company.get_client_side_dict(), 'portal': Portal.get(json['portal']['id']).get_client_side_dict() } ret['portal']['divisions'] = PRBase.get_ordered_dict([ d for d in ret['portal']['divisions'] if (d['portal_division_type_id'] in ['events', 'news']) ]) return PRBase.merge_dicts(ret, more_data_to_ret) else: publication.attr( g.filter_json(json['publication'], 'portal_division_id')) publication.publishing_tm = PRBase.parse_timestamp( json['publication'].get('publishing_tm')) publication.event_tm = PRBase.parse_timestamp( json['publication'].get('event_tm')) if 'also_publish' in json and json['also_publish']: publication.status = ArticlePortalDivision.STATUSES['PUBLISHED'] else: if article_action in [ ArticlePortalDivision.ACTIONS['PUBLISH'], ArticlePortalDivision.ACTIONS['REPUBLISH'] ]: publication.status = ArticlePortalDivision.STATUSES[ 'PUBLISHED'] elif article_action in [ ArticlePortalDivision.ACTIONS['UNPUBLISH'], ArticlePortalDivision.ACTIONS['UNDELETE'] ]: publication.status = ArticlePortalDivision.STATUSES[ 'UNPUBLISHED'] elif article_action in [ArticlePortalDivision.ACTIONS['DELETE']]: publication.status = ArticlePortalDivision.STATUSES['DELETED'] if action == 'validate': publication.detach() return publication.validate(True if article_action == 'SUBMIT' else False) else: if article_action == 'SUBMIT': publication.long = material.clone_for_portal_images_and_replace_urls( publication.portal_division_id, publication) publication.save() return get_portal_dict_for_material(publication.portal, company, publication=publication)
def load_form_create(json, company_id=None, material_id=None, publication_id=None): action = g.req('action', allowed=['load', 'validate', 'save']) def portal_division_dict(article, tags=None): if (not hasattr(article, 'portal_division_id')) or (article.portal_division_id is None): return {'positioned_articles': []} else: filter = article.position_unique_filter() return {'positioned_articles': [pda.get_client_side_dict(fields='id|position|title') for pda in db(ArticlePortalDivision).filter(filter). order_by(expression.desc(ArticlePortalDivision.position)).all()], 'availableTags': tags } available_tag_names = None if company_id: # creating material version articleVersion = ArticleCompany(company_id=company_id, editor=g.user, article=Article(author_user_id=g.user.id)) elif material_id: # companys version. always updating existing articleVersion = ArticleCompany.get(material_id) elif publication_id: # updating portal version articleVersion = ArticlePortalDivision.get(publication_id) portal_division_id = articleVersion.portal_division_id article_tag_names = articleVersion.tags available_tags = PortalDivision.get(portal_division_id).portal_division_tags available_tag_names = list(map(lambda x: getattr(x, 'name', ''), available_tags)) if action == 'load': article_dict = articleVersion.get_client_side_dict(more_fields='long|company') article_dict['image'] = articleVersion.get_image_client_side_dict() if publication_id: article_dict = dict(list(article_dict.items()) + [('tags', article_tag_names)]) return {'article': article_dict, 'portal_division': portal_division_dict(articleVersion, available_tag_names)} else: parameters = g.filter_json(json, 'article.title|subtitle|short|long|keywords') articleVersion.attr(parameters['article']) if action == 'validate': articleVersion.detach() return articleVersion.validate(articleVersion.id is not None) else: if type(articleVersion) == ArticlePortalDivision: tag_names = json['article']['tags'] articleVersion.manage_article_tags(tag_names) article_dict = articleVersion.set_image_client_side_dict( json['article']['image']).save().get_client_side_dict(more_fields='long|company') if publication_id: articleVersion.insert_after(json['portal_division']['insert_after'], articleVersion.position_unique_filter()) article_dict['image'] = articleVersion.get_image_client_side_dict() return {'article': article_dict, 'portal_division': portal_division_dict(articleVersion)}
def load_form_create(json, company_id=None, material_id=None, publication_id=None): action = g.req('action', allowed=['load', 'validate', 'save']) def portal_division_dict(article, tags=None): if (not hasattr(article, 'portal_division_id')) or ( article.portal_division_id is None): return {'positioned_articles': []} else: filter = article.position_unique_filter() return { 'positioned_articles': [ pda.get_client_side_dict(fields='id|position|title') for pda in db(ArticlePortalDivision).filter(filter).order_by( expression.desc(ArticlePortalDivision.position)).all() ], 'availableTags': tags } available_tag_names = None if company_id: # creating material version articleVersion = ArticleCompany( company_id=company_id, editor=g.user, article=Article(author_user_id=g.user.id)) elif material_id: # companys version. always updating existing articleVersion = ArticleCompany.get(material_id) elif publication_id: # updating portal version articleVersion = ArticlePortalDivision.get(publication_id) portal_division_id = articleVersion.portal_division_id article_tag_names = articleVersion.tags available_tags = PortalDivision.get( portal_division_id).portal_division_tags available_tag_names = list( map(lambda x: getattr(x, 'name', ''), available_tags)) if action == 'load': article_dict = articleVersion.get_client_side_dict( more_fields='long|company') article_dict['image'] = articleVersion.get_image_client_side_dict() if publication_id: article_dict = dict( list(article_dict.items()) + [('tags', article_tag_names)]) return { 'article': article_dict, 'portal_division': portal_division_dict(articleVersion, available_tag_names) } else: parameters = g.filter_json( json, 'article.title|subtitle|short|long|keywords') articleVersion.attr(parameters['article']) if action == 'validate': articleVersion.detach() return articleVersion.validate(articleVersion.id is not None) else: if type(articleVersion) == ArticlePortalDivision: tag_names = json['article']['tags'] articleVersion.manage_article_tags(tag_names) article_dict = articleVersion.set_image_client_side_dict( json['article']['image']).save().get_client_side_dict( more_fields='long|company') if publication_id: articleVersion.insert_after( json['portal_division']['insert_after'], articleVersion.position_unique_filter()) article_dict['image'] = articleVersion.get_image_client_side_dict() return { 'article': article_dict, 'portal_division': portal_division_dict(articleVersion) }
def material_details(material_id): return render_template( "company/material_details.html", article=ArticleCompany.get(material_id).get_client_side_dict(more_fields="company|long"), company=Company.get(ArticleCompany.get(material_id).company.id), )