Пример #1
0
 def check_profile(self, *args, **kwargs):
     role = company_member_role(self.vacancy.company.contract_address,
                                self.request.user.contract_address)
     if role:
         messages.error(self.request, MESSAGES['company_member'])
         return HttpResponseRedirect(self.get_redirect_url(*args, **kwargs))
     return self.subscribe(*args, **kwargs)
Пример #2
0
 def dispatch(self, request, *args, **kwargs):
     pipeline = get_object_or_404(Pipeline,
                                  pk=request.POST.get('pipeline', None))
     user_role = company_member_role(
         pipeline.vacancy.company.contract_address,
         request.user.contract_address)
     assert user_role == 'owner', "User can\'t create action for this pipeline"
     return super().dispatch(request, *args, **kwargs)
Пример #3
0
 def __init__(self, *args, **kwargs):
     member = kwargs.pop('member')
     super().__init__(*args, **kwargs)
     qs = member.companies
     owner_in = []
     for company in qs:
         if company_member_role(company.contract_address,
                                member.contract_address) == 'owner':
             owner_in.append(company.id)
     self.fields['company'].queryset = member.companies.filter(
         id__in=owner_in)
     self.fields['office'].queryset = Office.objects.filter(
         company__in=self.fields['company'].queryset)
Пример #4
0
def change_member_role(company_address, member_id, sender_id, role):
    try:
        sender = Member.objects.get(pk=sender_id)
        member = Member.objects.get(pk=member_id)
    except Member.DoesNotExist:
        logger.warning('Member not found and will not be added to company.')
    else:
        mi = MemberInterface(sender.contract_address)
        c_role = company_member_role(company_address, member.contract_address)
        if role == c_role:
            logger.info('Member already {} in company {}'.format(
                role, company_address))
            return False

        if c_role == 'owner':
            try:
                mi.del_owner_member(company_address, member.contract_address)
            except Exception as e:
                logger.warning('Cant delete owner member role: {} {}'.format(
                    member_id, e))
        elif c_role == 'collaborator':
            try:
                mi.del_collaborator_member(company_address,
                                           member.contract_address)
            except Exception as e:
                logger.warning(
                    'Cant delete collaborator member role: {} {}'.format(
                        member_id, e))

        method = getattr(mi, 'new_company_{}'.format(role))
        try:
            txn_hash = method(company_address, member.contract_address)
        except Exception as e:
            logger.warning('Cant add {} member role: {} {}'.format(
                role, member_id, e))
        else:
            save_txn.delay(txn_hash.hex(), 'ChangeCompanyMember', sender_id,
                           member_id)
            save_txn_to_history.delay(
                sender_id, txn_hash.hex(),
                'Change {} as company {}'.format(member.full_name, role))
            return True
Пример #5
0
def member_company_role(member, company):
    if not member.contract_address:
        return None
    return company_member_role(company.contract_address,
                               member.contract_address)
Пример #6
0
 def collaborators(self):
     members = self.members
     return members.filter(pk__in=[member.id for member in members if
                                   company_member_role(self.contract_address, member.contract_address) != 'member'])
Пример #7
0
 def owners(self):
     collaborators = self.collaborators
     return collaborators.filter(pk__in=[member.id for member in collaborators if
                                         company_member_role(self.contract_address,
                                                             member.contract_address) == 'owner'])