def publish(json, publication_id, actor_membership_id, request_from): action = g.req('action', allowed=['load', 'validate', 'save']) publication = Publication.get(publication_id) actor_membership = MemberCompanyPortal.get(actor_membership_id) publisher_membership = MemberCompanyPortal.get_by_portal_id_company_id( publication.portal_division.portal_id, publication.material.company_id) if action == 'load': return publish_dialog_load(publication, publisher_membership) else: publish_dialog_save(publication, json['publication'], status=Publication.STATUSES['PUBLISHED']) if action == 'validate': publication.detach() return publication.validate(True) else: publication.save() utils.db.execute_function("tag_publication_set_position('%s', ARRAY ['%s']);" % (publication.id, "', '".join([t.id for t in publication.tags]))) actor_membership.NOTIFY_MATERIAL_ACTION_BY_COMPANY_OR_PORTAL( action='PUBLISH', material_title=publication.material.title, company_or_portal='company' if request_from == 'company_material_details' else 'portal') if request_from == 'company_material_details': return actor_membership.material_or_publication_grid_row(publication.material) elif request_from == 'portal_publications': return publication.portal_publication_grid_row(actor_membership)
def article_actions_by_portal(cls, publication): from profapp.models.permissions import RIGHT_AT_COMPANY, RIGHT_AT_PORTAL from ..models.company import UserCompany from ..models.portal import MemberCompanyPortal from ..models.materials import Publication portal = publication.portal_division.portal employment = UserCompany.get_by_user_and_company_ids(company_id=portal.company_owner_id) membership = MemberCompanyPortal.get_by_portal_id_company_id( portal_id=portal.id, company_id=portal.company_owner_id) publish_rights = employment.rights[RIGHT_AT_COMPANY.ARTICLES_SUBMIT_OR_PUBLISH] and \ membership.rights[RIGHT_AT_PORTAL.PUBLICATION_PUBLISH] unpublish_rights = employment.rights[RIGHT_AT_COMPANY.ARTICLES_UNPUBLISH] and \ membership.rights[RIGHT_AT_PORTAL.PUBLICATION_UNPUBLISH] if publication.status == Publication.STATUSES['SUBMITTED']: ret = [ {'name': cls.ACTIONS['DELETE'], 'enabled': employment.rights[RIGHT_AT_COMPANY.ARTICLES_DELETE]}, ] elif publication.status == Publication.STATUSES['UNPUBLISHED']: ret = [ {'name': cls.ACTIONS['DELETE'], 'enabled': employment.rights[RIGHT_AT_COMPANY.ARTICLES_DELETE]}, {'name': cls.ACTIONS['PUBLISH'], 'enabled': publish_rights}, ] elif publication.status == Publication.STATUSES['PUBLISHED']: ret = [ {'name': cls.ACTIONS['UNPUBLISH'], 'enabled': unpublish_rights}, {'name': cls.ACTIONS['PUBLISH'], 'enabled': publish_rights and unpublish_rights}, ] elif publication.status == Publication.STATUSES['DELETED']: ret = [ {'name': cls.ACTIONS['UNDELETE'], 'enabled': unpublish_rights}, ] else: ret = [] for change in ret: change['message'] = '' return ret
def publish(json, publication_id, actor_membership_id, request_from): action = g.req('action', allowed=['load', 'validate', 'save']) publication = Publication.get(publication_id) actor_membership = MemberCompanyPortal.get(actor_membership_id) publisher_membership = MemberCompanyPortal.get_by_portal_id_company_id( publication.portal_division.portal_id, publication.material.company_id) if action == 'load': return publish_dialog_load(publication, publisher_membership) else: publish_dialog_save(publication, json['publication'], status=Publication.STATUSES['PUBLISHED']) if action == 'validate': publication.detach() return publication.validate(True) else: publication.save() utils.db.execute_function( "tag_publication_set_position('%s', ARRAY ['%s']);" % (publication.id, "', '".join([t.id for t in publication.tags]))) actor_membership.NOTIFY_MATERIAL_ACTION_BY_COMPANY_OR_PORTAL( action='PUBLISH', material_title=publication.material.title, company_or_portal='company' if request_from == 'company_material_details' else 'portal') if request_from == 'company_material_details': return actor_membership.material_or_publication_grid_row( publication.material) elif request_from == 'portal_publications': return publication.portal_publication_grid_row(actor_membership)
def get_publisher_membership(self): from profapp.models.portal import MemberCompanyPortal return MemberCompanyPortal.get_by_portal_id_company_id( company_id=self.material.company_id, portal_id=self.portal_division.portal_id)
def article_actions_by_portal(cls, publication): from profapp.models.permissions import RIGHT_AT_COMPANY, RIGHT_AT_PORTAL from ..models.company import UserCompany from ..models.portal import MemberCompanyPortal from ..models.materials import Publication portal = publication.portal_division.portal employment = UserCompany.get_by_user_and_company_ids( company_id=portal.company_owner_id) membership = MemberCompanyPortal.get_by_portal_id_company_id( portal_id=portal.id, company_id=portal.company_owner_id) publish_rights = employment.rights[RIGHT_AT_COMPANY.ARTICLES_SUBMIT_OR_PUBLISH] and \ membership.rights[RIGHT_AT_PORTAL.PUBLICATION_PUBLISH] unpublish_rights = employment.rights[RIGHT_AT_COMPANY.ARTICLES_UNPUBLISH] and \ membership.rights[RIGHT_AT_PORTAL.PUBLICATION_UNPUBLISH] if publication.status == Publication.STATUSES['SUBMITTED']: ret = [ { 'name': cls.ACTIONS['DELETE'], 'enabled': employment.rights[RIGHT_AT_COMPANY.ARTICLES_DELETE] }, ] elif publication.status == Publication.STATUSES['UNPUBLISHED']: ret = [ { 'name': cls.ACTIONS['DELETE'], 'enabled': employment.rights[RIGHT_AT_COMPANY.ARTICLES_DELETE] }, { 'name': cls.ACTIONS['PUBLISH'], 'enabled': publish_rights }, ] elif publication.status == Publication.STATUSES['PUBLISHED']: ret = [ { 'name': cls.ACTIONS['UNPUBLISH'], 'enabled': unpublish_rights }, { 'name': cls.ACTIONS['PUBLISH'], 'enabled': publish_rights and unpublish_rights }, ] elif publication.status == Publication.STATUSES['DELETED']: ret = [ { 'name': cls.ACTIONS['UNDELETE'], 'enabled': unpublish_rights }, ] else: ret = [] for change in ret: change['message'] = '' return ret