Esempio n. 1
0
        fields = {
            'action' : self.action,
            'message_text' : self.message_text,
            'email' : self.email,
            'task_date' : self.task_date,
            'subject' : self.subject,
            'is_sent' : self.is_sent,
            'message_html' : self.message_html,
            'send_date' : self.send_date,
            'attaches' : self.attaches
        }

        return fields

    def save(self):
        if not self.is_valid():
            raise Exception("Failed to save notification. Notification data is invalid.")

        return super(Notification, self).save()

    def is_valid(self):
        data = self._fields()
        for field_name in Notification.required_fields:
            if field_name not in data:
                return False
        if not validateEmail(data['email']):
            return False
        return True

Notification.objects = ObjectManager(Notification, 'deferred_notifications', [('action', 1),
                                     ('task_date', -1), ('send_date', -1)])
Esempio n. 2
0
    def save (self):
        if not self._id:
            result = self.objects.collection.insert({
                'name' : self.name,
                'alias' : self.alias,
                'preview' : self.preview,
                'content' : self.content,
                'enabled' : self.enabled
            })

            if isinstance(result, bson.ObjectId):
                self._id = result
                return result
            else:
                raise Exception('Can not add static page')
        self.objects.collection.update({'_id' : self._id}, {
                'name' : self.name,
                'alias' : self.alias,
                'preview' : self.preview,
                'content' : self.content,
                'enabled' : self.enabled
            })
        return self._id

    def delete(self):
        if not self._id:
            return
        self.objects.collection.remove({'_id' : self._id})

StaticPage.objects = ObjectManager(StaticPage, 'static_pages', indexes = [('alias', 1)])
Esempio n. 3
0
    def save(self):
        self.timestamp = get_cts()
        return super(Operation, self).save()

    def _fields(self):
        fields = {
            'operation_type' : self.operation_type,
            'data' : self.data,
            'timestamp' : self.timestamp,
            'listeners' : self.listeners,
            'owner' : self.owner,
            'is_service' : self.is_service
        }
        return fields

Operation.objects = ObjectManager(Operation, 'operation', [('timestamp', 1)])

class OperationNotifier(object):
    sessions = {}
    connections = {}
    employee_dlg_connections = {} # employee -> employee list

    @classmethod
    def notify(cls, operation, cur_ts):
        operation_type = operation.operation_type

        for listener in operation.listeners:
            connection_list = cls.connections.get(listener, [])

            for connection in connection_list:
                if connection:
Esempio n. 4
0
class Contractor(SimpleModel):
    def __init__(self, kwargs):
        kwargs = kwargs or {}
        self._id = kwargs.get('_id')
        self.company_1 = kwargs.get('company_1')
        self.company_2 = kwargs.get('company_2')
        self.company_1_data = kwargs.get('company_1_data', {})
        self.company_2_data = kwargs.get('company_2_data', {})
        self.status = kwargs.get('status', ContractorStatusEnum.RECEIVED)
        self.viewed = kwargs.get('viewed', False)

    def _fields(self):
        fields = {
            'company_1' : self.company_1,
            'company_2' : self.company_2,
            'viewed' : self.viewed,
            'status' : self.status,
            'company_1_data' : self.company_1_data,
            'company_2_data' : self.company_2_data
        }

        return fields

    @classmethod
    def set_indexes(cls):
        cls.objects.collection.ensure_index([('company_1', 1), ('company_2', 1)], unique=True)

Contractor.objects = ObjectManager(Contractor, 'contractors')
Contractor.set_indexes()
Esempio n. 5
0
    def _fields(self):
        return {
            'requester': self.requester,
            'recipient': self.recipient,
            'status': self.status,
            'send_date': self.send_date,
            'message': self.message,
            'viewed': self.viewed,
            'requester_email': self.requester_email
        }


RecommendationRequest.objects = ObjectManager(RecommendationRequest,
                                              'recommendation_requests',
                                              [('requester', 1),
                                               ('recipient', 1),
                                               ('send_date', -1)])


class Invite(SimpleModel):
    def __init__(self, kwargs=None):
        kwargs = kwargs or {}

        self._id = kwargs.get('_id')
        self.message = kwargs.get('message')
        self.email = kwargs.get('email')
        self.cookie_code = kwargs.get('cookie_code', unicode(ObjectId()))
        self.created = kwargs.get('created', timezone.now())
        self.sender = kwargs.get('sender')
        self.rec_request = kwargs.get('rec_request')
Esempio n. 6
0
        if timezone.now() >= self.expires_date or timezone.now() < self.start_date:
            return False
        return True
    active = property(_is_active)

    def _fields(self):
        return {
            'creation_date' : self.creation_date,
            'start_date' : self.start_date,
            'expires_date' : self.expires_date,
            'state' : self.state,
            'comment' : self.comment,
            'type' : self.type
        }

Promotion.objects = ObjectManager(Promotion, 'promotions', [('expires_date', -1)])

class RegistrationPromoCode(SimpleModel):
    INVALID_CODE_VALUE = 0
    MIN_CODE_VALUE = 11111111
    MAX_CODE_VALUE = 99999999

    def __init__(self, kwargs):
        kwargs = kwargs or {}

        self._id = kwargs.get('_id')
        self.code = kwargs.get('code', self.INVALID_CODE_VALUE)
        self.promotion_id = kwargs.get('promotion_id')
        self.company_id = kwargs.get('company_id')
        self.used_date = kwargs.get('used_date')
        self.price = kwargs.get('price', Currency.russian_roubles(0))
Esempio n. 7
0
    def _fields(self):
        fields = {
            'creator': self.creator,
            'parties': self.parties,
            'not_viewed_by_parties': self.not_viewed_by_parties,
            'hidden_by_parties': self.hidden_by_parties,
            'last_message_date': self.last_message_date,
            'last_message_text': self.last_message_text,
            'last_message_party': self.last_message_party,
            'last_message_id': self.last_message_id
        }
        return fields


ChatDialog.objects = ObjectManager(ChatDialog, 'chat_dialog',
                                   [('creator', 1), ('parties', 1),
                                    ('last_message_date', -1)])


class DialogMessage(SimpleModel):
    def __init__(self, kwargs=None):
        kwargs = kwargs or {}
        self._id = kwargs.get('_id')
        self.dialog = kwargs.get('dialog')
        self.text = kwargs.get('text', '')
        self.date = kwargs.get('date', timezone.now())
        self.creator = kwargs.get('creator')

    def _fields(self):
        fields = {
            'dialog': self.dialog,
Esempio n. 8
0
            if user.check_password(password):
                return user
        return None

    def get_user(self, user_id):
        return User.get({'_id': user_id})


class UserActivationLinks(SimpleModel):
    def __init__(self, kwargs=None):
        kwargs = kwargs or {}
        self._id = kwargs.get('_id')
        self.user = kwargs.get('user')
        self.created = kwargs.get('created', timezone.now())

    def _fields(self):
        return {'user': self.user, 'created': self.created}


UserActivationLinks.objects = ObjectManager(UserActivationLinks,
                                            'user_activation_links',
                                            [('user', 1), ('created', -1)])


def get_password_error(password):
    if len(password) < 6:
        return u'Некорректный пароль. Минимальная длина 6 символов.'
    if not re.match(r"^[a-zA-Z0-9-&*!@#%^()_]+$", password):
        return u'Некорректный пароль. Недопустимый символ.'
    return None
Esempio n. 9
0
        items_cursor = self.objects.collection.find()
        for item in items_cursor:
            cache.set(item['name'], item['value'])

    def get_property(self, name):
        value = cache.get(name)
        if not value:
            object = self.objects.collection.find_one({'name' : name})
            if object:
                cache.set(name, object['value'])
            return object['value']
        return value

    def set_property(self, name, value):
        self.objects.collection.update({'name' : name}, {'$set' : {'value' : value}})
        cache.set(name, value)

    def inc_and_return_property(self, name, inc_value = 1):
        new_property_val = self.objects.collection.find_and_modify({'name' : name}, {'$inc' : {'value' : inc_value}})
        value = new_property_val['value']
        try:
            mem_val = cache.incr(name, inc_value)
            if mem_val != value:
                raise ValueError('Data divergence')
        except ValueError:
            cache.set(name, value)
        return value

RekSettings.objects = ObjectManager(RekSettings, 'rek_settings', [], [('name', 1)])
SettingsManager = RekSettings()
Esempio n. 10
0
        data = {
            'id': new_contractor._id,
            'logo': contractor_company.get_some_logo_url(),
            'brand_name': contractor_company.brand_name,
            'rek_id': contractor_company.rek_id
        }
        self.objects.collection.update({'_id': self._id},
                                       {'$push': {
                                           'contractors': data
                                       }})
        self.contractors.append(data)


Company.objects = ObjectManager(Company, 'companies', [('date_creation', -1),
                                                       ('short_name', 1),
                                                       ('full_name', 1),
                                                       ('brand_name', 1),
                                                       ('kpp', 1), ('inn', 1)],
                                [('rek_id', 1)])


@make_fsm(initial='new', field_name='profile_status')
class CompanyEmployee(SimpleModel):
    def __init__(self, kwargs=None):
        kwargs = kwargs or {}
        self._id = kwargs.get('_id')
        self.user_id = kwargs.get('user_id')  # index
        self.company_id = kwargs.get('company_id')  # index
        self.first_name = kwargs.get('first_name', '')
        self.second_name = kwargs.get('second_name', '')  # index
        self.middle_name = kwargs.get('middle_name', '')
        self.title = kwargs.get('title', '')
Esempio n. 11
0
        valid &= self.duration_days is not None and self.duration_days > 0 and self.duration_days < 365 * 10
        if not self.duration_days:
            return False
        valid &= self.price and self.price > 0 and self.price < 1000000000000
        valid &= self.comment is not None
        return valid

    def save(self):
        if not self.is_valid():
            raise Exception('Incorrect bill (%s). Can not save to db.' %
                            simplejson.dumps(self.show_fields()))
        return super(Invoice, self).save()


Invoice.objects = ObjectManager(Invoice, 'bill_items', [('payer', 1),
                                                        ('number', 1),
                                                        ('expire_date', -1)])


class MaxCurrencyException(Exception):
    pass


class Currency(object):
    CODE_RUSSIAN_RUBLE = 'RUB'
    CODE_US_DOLLAR = 'USD'
    CODE_EURO = 'EUR'
    CODE_HRYVNIA = 'UAH'
    CODE_BELORUSSIAN_RUBLE = 'BYR'
    CODE_POUND_STERLING = 'GBP'
    CODE_NEW_ISRAELI_SHEQEL = 'ILS'