Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from common.api.base import BinaryResponseHandler, StatusCodeErrorHandler
- from common.api.exceptions import NotAuthenticated
- from ...providers.invenias import settings
- from ...providers.invenias.base import InveniasBaseDetailResource as BaseDetailResource
- from ...providers.invenias.base import InveniasBaseResource as BaseResource
- from ...providers.invenias.base import TokenHeaderMixin
- RESOURCE_LIST = []
- def register(resource):
- RESOURCE_LIST.append(resource)
- return resource
- @register
- class Authentication(BaseResource):
- """
- Invenias uses OAuth 2.0 to authenticate users against their application(s).
- The authentication API is as follows: https://publicapi.invenias.com/token
- And the following data must be posted:
- POST:
- - grant_type: This will either be “password” or “refresh_token”
- - username: The username (email) used to log in to Invenias
- - password: The password for the associated username
- - client_id: The API Key for the application, generated within MyInvenias
- """
- name = 'token'
- call_name = 'auth'
- version = None
- allowed_methods = ['post']
- max_retries = 3
- def request(self, method, headers=None, retry=0, *args, **data):
- try:
- return super(Authentication, self).request(method, headers=headers, *args, **data)
- except NotAuthenticated as ex:
- return self.retry_request(retry, ex, method, headers, *args, **data)
- def retry_request(self, retry, ex, method, headers, *args, **data):
- self._validate_retry(ex, retry)
- return self.request(method, headers, retry + 1, *args, **data)
- @classmethod
- def _validate_retry(cls, ex, retry):
- if retry > cls.max_retries:
- raise ex
- @register
- class Advertisements(TokenHeaderMixin, BaseResource):
- """
- GET:
- Returns a list of all Advertisement records.
- POST:
- Creates new Advertisement
- """
- name = 'Advertisements'
- call_name = 'advertisements'
- allowed_methods = ['get', 'post']
- @register
- class Advertisement(BaseDetailResource):
- """
- GET:
- Returns an Advertisement record.
- POST:
- Creates new Advertisement
- """
- name = 'Advertisements({})'
- call_name = 'advertisement'
- detail_key = 'advertisement_id'
- allowed_methods = ['patch', 'delete', 'get', 'post']
- @register
- class Categories(TokenHeaderMixin, BaseResource):
- """
- GET:
- Returns a list of all Categories records.
- POST:
- Creates new Category
- """
- name = 'Categories'
- call_name = 'categories'
- allowed_methods = ['get', 'post']
- @register
- class Category(BaseDetailResource):
- """
- GET:
- Returns a single Category record.
- POST:
- Creates new Category
- """
- name = 'Categories({})'
- call_name = 'category'
- detail_key = 'category_id'
- allowed_methods = ['patch', 'delete', 'get', 'post']
- @register
- class People(TokenHeaderMixin, BaseResource):
- """
- GET:
- Returns a list of all people records.
- POST:
- Creates new person
- """
- name = 'People'
- call_name = 'people'
- allowed_methods = ['get', 'post']
- @register
- class Person(BaseDetailResource):
- """
- PATCH:
- Update or delete person
- DELETE:
- Deletes person
- """
- name = 'People({})'
- detail_key = 'person_id'
- call_name = 'person'
- allowed_methods = ['patch', 'delete', 'get', 'post']
- @register
- class Position(BaseDetailResource):
- """
- GET:
- list of permanent package for the position
- """
- name = 'Positions({})'
- detail_key = 'position_id'
- call_name = 'position'
- allowed_methods = ['get']
- @register
- class PositionPermanentPackages(BaseDetailResource):
- """
- GET:
- list of permanent package for the position
- """
- name = 'Positions({})/PermanentPackages'
- detail_key = 'position_id'
- call_name = 'position_permanent_packages'
- allowed_methods = ['get']
- @register
- class PositionNonExecPackages(BaseDetailResource):
- """
- GET:
- list of non exec package for the position
- """
- name = 'Positions({})/NonExecPackages'
- detail_key = 'position_id'
- call_name = 'position_non_exec_packages'
- allowed_methods = ['get']
- @register
- class User(BaseDetailResource):
- """
- GET:
- Returns user details
- """
- name = 'Users({})'
- detail_key = 'user_id'
- call_name = 'user'
- allowed_methods = ['get']
- @register
- class SentCurriculumVitaes(TokenHeaderMixin, BaseResource):
- """
- GET:
- Returns a list of all send cv actions.
- POST:
- Creates new CurriculumVitaes
- """
- name = 'SentCurriculumVitaes'
- call_name = 'sent_curriculum_vitaes'
- allowed_methods = ['get', 'post']
- @register
- class SentCurriculumVitaesPeople(BaseDetailResource):
- """
- PATCH:
- Updates SentCurriculumVitaes action
- """
- name = 'SentCurriculumVitaes({})/People'
- detail_key = 'sent_cv_id'
- call_name = 'sent_curriculum_vitaes_people'
- @register
- class PersonDocuments(BaseDetailResource):
- name = 'People({})/Documents'
- detail_key = 'person_id'
- call_name = 'person_documents'
- allowed_methods = ['get', 'post']
- @register
- class PersonCategories(BaseDetailResource):
- name = 'People({})/Categories'
- detail_key = 'person_id'
- call_name = 'person_categories'
- @register
- class PersonEducation(BaseDetailResource):
- name = 'People({})/Education'
- detail_key = 'person_id'
- call_name = 'person_education'
- @register
- class PersonPermanentPackages(BaseDetailResource):
- name = 'People({})/PermanentPackages'
- detail_key = 'person_id'
- call_name = 'person_permanent_packages'
- @register
- class PersonNonExecPackages(BaseDetailResource):
- name = 'People({})/NonExecPackages'
- detail_key = 'person_id'
- call_name = 'person_non_exec_packages'
- @register
- class PersonPositions(BaseDetailResource):
- name = 'People({})/Positions'
- detail_key = 'person_id'
- call_name = 'person_positions'
- @register
- class PersonDefaultPosition(BaseDetailResource):
- name = 'People({})/DefaultPosition'
- detail_key = 'person_id'
- call_name = 'person_default_position'
- @register
- class PositionCompany(BaseDetailResource):
- name = 'Positions({})/Company'
- detail_key = 'position_id'
- call_name = 'position_company'
- @register
- class PersonSentCurriculumVitaes(BaseDetailResource):
- name = 'People({})/SentCurriculumVitaes'
- detail_key = 'person_id'
- call_name = 'person_sent_cv'
- @register
- class Document(BaseDetailResource):
- name = 'Documents({})'
- detail_key = 'document_id'
- call_name = 'document'
- allowed_methods = ['get', 'post', 'delete']
- @register
- class Documents(TokenHeaderMixin, BaseResource):
- name = 'Documents'
- call_name = 'documents'
- allowed_methods = ['get', 'post', 'delete']
- @register
- class DocumentVersions(TokenHeaderMixin, BaseResource):
- name = 'DocumentVersions'
- call_name = 'document_versions'
- @register
- class DocumentFile(BaseDetailResource):
- name = 'binaryFiles({})'
- detail_key = 'version_id'
- call_name = 'binary_document'
- response_handler = BinaryResponseHandler
- error_handler = StatusCodeErrorHandler
- allowed_methods = ['get', 'post']
- @register
- class CurriculumVitaesUpdate(BaseDetailResource):
- """
- PATCH:
- Updates SentCurriculumVitaes action
- """
- name = 'SentCurriculumVitaes({})'
- detail_key = 'action_id'
- call_name = 'curriculum_vitaes_update'
- allowed_methods = ['patch']
- @register
- class CurriculumVitaesRemove(BaseDetailResource):
- """
- DELETE:
- Deletes SentCurriculumVitaes
- """
- name = 'SentCurriculumVitaes({})'
- detail_key = 'curriculum_vitae_id'
- call_name = 'curriculum_vitaes_remove'
- allowed_methods = ['delete']
- @register
- class LookupListEntries(TokenHeaderMixin, BaseResource):
- """
- GET:
- Returns a list of all LookupListEntries
- POST:
- Created new lookup entry
- """
- name = 'LookupListEntries'
- call_name = 'lookup_list_entries'
- allowed_methods = ['get', 'post']
- @register
- class LookupLists(TokenHeaderMixin, BaseResource):
- name = 'LookupLists'
- call_name = 'lookup_list'
- allowed_methods = ['get']
- @register
- class LookupEntry(BaseDetailResource):
- """
- GET:
- Returns lookup entry
- """
- name = 'LookupListEntries({})'
- detail_key = 'entry_id'
- call_name = 'lookup_entry'
- @register
- class NoteFields(TokenHeaderMixin, BaseResource):
- name = 'NoteFields'
- call_name = 'notes'
- allowed_methods = ['get']
- @register
- class Note(BaseDetailResource):
- name = 'NoteFields({})'
- detail_key = 'note_id'
- call_name = 'note'
- @register
- class Categories(TokenHeaderMixin, BaseResource):
- name = 'CategoryLists'
- call_name = 'categories'
- allowed_methods = ['get']
- @register
- class CategoriesEntries(TokenHeaderMixin, BaseResource):
- name = 'CategoryListEntries'
- call_name = 'category_lists_entries'
- allowed_methods = ['get', 'post']
- @register
- class CategoryListEntries(BaseDetailResource):
- name = 'CategoryListEntries({})'
- detail_key = 'category_list_entries_id'
- call_name = 'category_list_entry'
- allowed_methods = ['get', 'delete', 'patch']
- @register
- class CategoryList(BaseDetailResource):
- name = 'CategoryLists({})'
- detail_key = 'category_list_id'
- call_name = 'category_list'
- @register
- class Programme(BaseDetailResource):
- name = 'Programmes({})'
- detail_key = 'programme_id'
- call_name = 'programme'
- allowed_methods = ['get', 'post']
- @register
- class ProgrammePerson(BaseDetailResource):
- name = 'ProgrammeToPersonRelations({})'
- detail_key = 'relation_id'
- call_name = 'programme_person'
- allowed_methods = ['get', 'post', 'delete']
- @register
- class ProgrammesList(TokenHeaderMixin, BaseResource):
- name = 'Programmes'
- call_name = 'programmes_list'
- allowed_methods = ['get', 'post']
- @register
- class Assignment(BaseDetailResource):
- name = 'Assignments({})'
- detail_key = 'assignment_id'
- call_name = 'assignment'
- allowed_methods = ['get', 'post']
- @register
- class Assignments(TokenHeaderMixin, BaseResource):
- name = 'Assignments'
- call_name = 'assignments'
- allowed_methods = ['get', 'post']
- @register
- class Currency(BaseDetailResource):
- name = 'Currencies({})'
- detail_key = 'currency_id'
- call_name = 'currency'
- @register
- class PermanentPackageField(BaseDetailResource):
- name = 'PermanentPackageFields({})'
- detail_key = 'field_id'
- call_name = 'permanent_package_field'
- @register
- class NonExecPackageField(BaseDetailResource):
- name = 'NonExecPackageFields({})'
- detail_key = 'field_id'
- call_name = 'non_exec_package_field'
- @register
- class Placements(TokenHeaderMixin, BaseResource):
- name = 'Placements'
- call_name = 'placements'
- @register
- class Placement(BaseDetailResource):
- name = 'Placements({})'
- call_name = 'placement'
- detail_key = 'placement_id'
- class Invenias:
- """
- Controls API Resources,
- creates token storage and instance of each resource with the token storage
- @DynamicAttrs
- """
- def __init__(self, username=None, password=None, client_id=None):
- token_storage = settings.TOKEN_STORAGE_CLASS(username=username, password=password, client_id=client_id)
- for api_view in RESOURCE_LIST:
- setattr(self, api_view.call_name, api_view(token_storage=token_storage))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement