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)])
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)])
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:
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()
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')
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))
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,
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
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()
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', '')
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'