class Place(models.Model): x = models.BigIntegerField(null=False) y = models.BigIntegerField(null=False) created_at = models.DateTimeField(auto_now_add=True) created_at_turn = models.BigIntegerField(default=0) updated_at_turn = models.BigIntegerField(default=0) updated_at = models.DateTimeField(auto_now=True, null=False) is_frontier = models.BooleanField(default=False) description = models.TextField(null=False, default='', blank=True) data = models.TextField(null=False, default='{}') habit_honor_positive = models.FloatField(default=0) habit_honor_negative = models.FloatField(default=0) habit_peacefulness_positive = models.FloatField(default=0) habit_peacefulness_negative = models.FloatField(default=0) habit_honor = models.FloatField(default=0) habit_peacefulness = models.FloatField(default=0) modifier = RelationIntegerField( relation=modifiers.CITY_MODIFIERS, null=False, default=modifiers.CITY_MODIFIERS.NONE.value) race = RelationIntegerField(relation=RACE) persons_changed_at_turn = models.BigIntegerField(default=0) def __str__(self): return s11n.from_json(self.data)['name']['forms'][0]
class Person(models.Model): MAX_NAME_LENGTH = 100 created_at = models.DateTimeField(auto_now_add=True, null=False) created_at_turn = models.IntegerField(null=False, default=0) out_game_at = models.DateTimeField(null=False, default=datetime.datetime(2000, 1, 1)) place = models.ForeignKey('places.Place', related_name='persons', on_delete=models.PROTECT) state = RelationIntegerField(relation=relations.PERSON_STATE) gender = RelationIntegerField(relation=GENDER, relation_column='value') race = RelationIntegerField(relation=RACE, relation_column='value') type = RelationIntegerField(relation=relations.PERSON_TYPE, relation_column='value') friends_number = models.IntegerField(default=0) enemies_number = models.IntegerField(default=0) name = models.CharField(max_length=MAX_NAME_LENGTH, null=False, db_index=True) data = models.TextField(null=False, default=u'{}') def __unicode__(self): return u'%s from %s' % (self.name, self.place)
class Achievement(models.Model): CAPTION_MAX_LENGTH = 128 DESCRIPTION_MAX_LENGTH = 1024 created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) group = RelationIntegerField(relation=ACHIEVEMENT_GROUP, db_index=True) type = RelationIntegerField(relation=ACHIEVEMENT_TYPE, db_index=True) caption = models.CharField(max_length=CAPTION_MAX_LENGTH) description = models.CharField(max_length=DESCRIPTION_MAX_LENGTH) order = models.IntegerField() approved = models.BooleanField(default=False) barrier = models.IntegerField() points = models.IntegerField() item_1 = models.ForeignKey('collections.Item', null=True, default=None, related_name='+', on_delete=models.SET_NULL) item_2 = models.ForeignKey('collections.Item', null=True, default=None, related_name='+', on_delete=models.SET_NULL) item_3 = models.ForeignKey('collections.Item', null=True, default=None, related_name='+', on_delete=models.SET_NULL) class Meta: permissions = (('edit_achievement', u'Может создавать и редактировать достижения'),)
class Place(models.Model): MAX_NAME_LENGTH = 150 x = models.BigIntegerField(null=False) y = models.BigIntegerField(null=False) created_at = models.DateTimeField(auto_now_add=True) created_at_turn = models.BigIntegerField(default=0) updated_at_turn = models.BigIntegerField(default=0) updated_at = models.DateTimeField(auto_now=True, null=False) is_frontier = models.BooleanField(default=False) # TODO: remove name = models.CharField(max_length=MAX_NAME_LENGTH, null=False, db_index=True) description = models.TextField(null=False, default=u'', blank=True) size = models.IntegerField(null=False) expected_size = models.IntegerField(default=0) goods = models.IntegerField(default=0) keepers_goods = models.IntegerField(default=0) production = models.IntegerField(default=c.PLACE_GOODS_BONUS) safety = models.FloatField(default=1.0 - c.BATTLES_PER_TURN) freedom = models.FloatField(default=1.0) transport = models.FloatField(default=1.0) tax = models.FloatField(default=0.0) stability = models.FloatField(default=1.0) data = models.TextField(null=False, default=u'{}') heroes_number = models.IntegerField(default=0) habit_honor_positive = models.FloatField(default=0) habit_honor_negative = models.FloatField(default=0) habit_peacefulness_positive = models.FloatField(default=0) habit_peacefulness_negative = models.FloatField(default=0) habit_honor = models.FloatField(default=0) habit_peacefulness = models.FloatField(default=0) modifier = RelationIntegerField(relation=relations.CITY_MODIFIERS, null=True, default=None, blank=True) race = RelationIntegerField(relation=RACE) persons_changed_at_turn = models.BigIntegerField(default=0) class Meta: ordering = ('name', ) def __unicode__(self): return self.name
class Invoice(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False, db_index=True) updated_at = models.DateTimeField(auto_now=True, null=False, db_index=True) recipient_type = RelationIntegerField(relation=ENTITY_TYPE, relation_column='value', db_index=True) recipient_id = models.BigIntegerField(db_index=True) sender_type = RelationIntegerField(relation=ENTITY_TYPE, relation_column='value', db_index=True) sender_id = models.BigIntegerField(db_index=True) state = RelationIntegerField(relation=INVOICE_STATE, relation_column='value', db_index=True) currency = RelationIntegerField(relation=CURRENCY_TYPE, relation_column='value', db_index=True) amount = models.BigIntegerField() operation_uid = models.CharField(max_length=64, db_index=True) description_for_recipient = models.TextField() description_for_sender = models.TextField() class Meta: index_together = (('recipient_type', 'recipient_id', 'currency'), ('sender_type', 'sender_id', 'currency'))
class Post(models.Model): thread = models.ForeignKey(Thread, null=False, on_delete=models.PROTECT) created_at = models.DateTimeField(auto_now_add=True, null=False) created_at_turn = models.BigIntegerField(default=0) updated_at = models.DateTimeField(auto_now=True, null=True) updated_at_turn = models.BigIntegerField(default=0) author = models.ForeignKey('accounts.Account', null=True, related_name='forum_posts', on_delete=models.SET_NULL) text = models.TextField(null=False, blank=True, default='') markup_method = RelationIntegerField(relation=MARKUP_METHOD, relation_column='value') state = RelationIntegerField(relation=POST_STATE, relation_column='value', db_index=True) removed_by = RelationIntegerField(relation=POST_REMOVED_BY, relation_column='value', null=True, default=None) remove_initiator = models.ForeignKey('accounts.Account', null=True, blank=True, related_name='+', on_delete=models.SET_NULL) technical = models.BooleanField(default=False) class Meta: permissions = (("moderate_post", u"Может редактировать сообщения пользователей"), ) def __unicode__(self): return u'thread %d, post %d' % (self.thread_id, self.id)
class Template(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now_add=True, null=False) author = models.ForeignKey(project_settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL) parent = models.OneToOneField('linguistics.Template', null=True, blank=True, on_delete=models.SET_NULL) raw_template = models.TextField(db_index=True) data = models.TextField() state = RelationIntegerField(relation=relations.TEMPLATE_STATE, db_index=True) key = RelationIntegerField(relation=keys.LEXICON_KEY, db_index=True) errors_status = RelationIntegerField( relation=relations.TEMPLATE_ERRORS_STATUS, default=0, db_index=True) class Meta: permissions = ( ("moderate_template", u"Может модерировать шаблоны фраз"), ("edit_template", u"Может редактировать шаблоны фраз"), )
class Word(models.Model): MAX_FORM_LENGTH = 64 created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now_add=True, null=False) author = models.ForeignKey(project_settings.AUTH_USER_MODEL, null=True, blank=True, on_delete=models.SET_NULL) parent = models.OneToOneField('linguistics.Word', null=True, blank=True, on_delete=models.SET_NULL) normal_form = models.CharField(max_length=MAX_FORM_LENGTH) forms = models.TextField(db_index=True) state = RelationIntegerField(relation=relations.WORD_STATE, db_index=True) type = RelationIntegerField( relation=utg_relations.WORD_TYPE, db_index=True, choices=[(record, record.text) for record in utg_relations.WORD_TYPE.records]) used_in_ingame_templates = models.IntegerField(default=0) used_in_onreview_templates = models.IntegerField(default=0) used_in_status = RelationIntegerField( relation=relations.WORD_USED_IN_STATUS, default=2, db_index=True) class Meta: unique_together = (('normal_form', 'type', 'state'), ) permissions = (("moderate_word", u"Может модерировать слова"), )
class CompanionRecord(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) state = RelationIntegerField(relation=relations.STATE, db_index=True) dedication = RelationIntegerField(relation=relations.DEDICATION, db_index=True) archetype = RelationIntegerField(relation=game_relations.ARCHETYPE, blank=True) mode = RelationIntegerField(relation=relations.MODE, blank=True) type = RelationIntegerField(relation=game_relations.BEING_TYPE, db_index=True) communication_verbal = RelationIntegerField( relation=game_relations.COMMUNICATION_VERBAL, db_index=True) communication_gestures = RelationIntegerField( relation=game_relations.COMMUNICATION_GESTURES, db_index=True) communication_telepathic = RelationIntegerField( relation=game_relations.COMMUNICATION_TELEPATHIC, db_index=True) intellect_level = RelationIntegerField( relation=game_relations.INTELLECT_LEVEL, db_index=True) max_health = models.IntegerField(default=1) data = models.TextField(null=False, default='{}') class Meta: permissions = ( ("create_companionrecord", u"Может создавать спутников"), ("moderate_companionrecord", u"Может утверждать спутников"), )
class SocialConnection(models.Model): created_at = models.DateTimeField(auto_now_add=True) created_at_turn = models.BigIntegerField() out_game_at = models.DateTimeField(null=True, default=None) out_game_at_turn = models.BigIntegerField(null=True, default=None) person_1 = models.ForeignKey(Person, related_name='+', on_delete=models.CASCADE) person_2 = models.ForeignKey(Person, related_name='+', on_delete=models.CASCADE) connection = RelationIntegerField(relation=relations.SOCIAL_CONNECTION_TYPE) state = RelationIntegerField(relation=relations.SOCIAL_CONNECTION_STATE)
class Record(models.Model): date = models.DateTimeField(null=False) type = RelationIntegerField(relation=relations.RECORD_TYPE, db_index=True) value_int = models.BigIntegerField() value_float = models.FloatField()
class Post(models.Model): CAPTION_MIN_LENGTH = 10 CAPTION_MAX_LENGTH = 256 author = models.ForeignKey('accounts.Account', null=True, related_name='+', on_delete=models.SET_NULL) created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) created_at_turn = models.BigIntegerField() caption = models.CharField(max_length=CAPTION_MAX_LENGTH) text = models.TextField(null=False, blank=True, default='') state = RelationIntegerField(relation=POST_STATE, relation_column='value', db_index=True) moderator = models.ForeignKey('accounts.Account', null=True, blank=True, related_name='+', on_delete=models.SET_NULL) votes = models.IntegerField(default=0) # we should not remove post when ocasionally remove forum thread forum_thread = models.ForeignKey('forum.Thread', null=True, blank=True, related_name='+', on_delete=models.SET_NULL) class Meta: permissions = (("moderate_post", u"Может редактировать сообщения пользователей"), ) def __unicode__(self): return self.caption
class ChangeCredentialsTask(models.Model): created_at = models.DateTimeField(auto_now_add=True, db_index=True) updated_at = models.DateTimeField(auto_now=True, db_index=True) state = RelationIntegerField( relation=relations.CHANGE_CREDENTIALS_TASK_STATE, relation_column='value', db_index=True) comment = models.CharField(max_length=256, blank=True, null=True, default='') account = models.ForeignKey(Account, related_name='+', on_delete=models.CASCADE) old_email = models.EmailField(max_length=254, null=True) new_email = models.EmailField(max_length=254, null=True) new_password = models.TextField(default=None, null=True) # django password hash new_nick = models.CharField(default=None, null=True, max_length=Account.MAX_NICK_LENGTH) uuid = models.CharField(max_length=32, db_index=True) relogin_required = models.BooleanField(blank=True, default=False)
class Invoice(models.Model): XSOLLA_ID_MAX_LENGTH = 255 XSOLLA_V1_MAX_LENGTH = 255 XSOLLA_V2_MAX_LENGTH = 200 XSOLLA_V3_MAX_LENGTH = 100 COMMENT_MAX_LENGTH = 255 REQUEST_URL_LENGTH = 1024 created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) state = RelationIntegerField(null=True, relation=INVOICE_STATE, relation_column='value', db_index=True) bank_id = models.BigIntegerField() bank_amount = models.BigIntegerField() bank_invoice = models.OneToOneField( 'bank.Invoice', null=True, related_name='+', on_delete=models.SET_NULL ) # settuped when payments deposited to account xsolla_id = models.CharField(max_length=XSOLLA_ID_MAX_LENGTH, db_index=True) xsolla_v1 = models.CharField(max_length=XSOLLA_V1_MAX_LENGTH) xsolla_v2 = models.CharField(max_length=XSOLLA_V2_MAX_LENGTH, null=True) xsolla_v3 = models.CharField(max_length=XSOLLA_V3_MAX_LENGTH, null=True) comment = models.CharField(max_length=COMMENT_MAX_LENGTH, null=False, default=u'') pay_result = RelationIntegerField(null=True, relation=PAY_RESULT, relation_column='value', db_index=True) test = models.BooleanField(blank=True, default=False) date = models.DateTimeField(null=True) request_url = models.CharField(max_length=REQUEST_URL_LENGTH) class Meta: unique_together = (('xsolla_id', 'test'), )
class Account(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) entity_type = RelationIntegerField(relation=ENTITY_TYPE, relation_column='value', db_index=True) entity_id = models.BigIntegerField() currency = RelationIntegerField(relation=CURRENCY_TYPE, relation_column='value', db_index=True) amount = models.BigIntegerField(default=0) class Meta: unique_together = (('entity_id', 'entity_type', 'currency'), )
class RecordToActor(models.Model): role = RelationIntegerField(relation=ACTOR_ROLE, relation_column='value') record = models.ForeignKey(Record, on_delete=models.CASCADE) actor = models.ForeignKey(Actor, on_delete=models.PROTECT) def __str__(self): return '<%d, %d>' % (self.record_id, self.actor_id)
class Membership(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) clan = models.ForeignKey(Clan, on_delete=models.PROTECT) account = models.OneToOneField('accounts.Account', on_delete=models.PROTECT) role = RelationIntegerField(relation=MEMBER_ROLE, relation_column='value')
class Message(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) processed_at = models.DateTimeField(null=True, blank=True) state = RelationIntegerField(relation=MESSAGE_STATE, relation_column='value', db_index=True) handler = models.TextField(default='')
class Contribution(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False, db_index=True) account = models.ForeignKey(project_settings.AUTH_USER_MODEL, on_delete=models.CASCADE) state = RelationIntegerField(relation=relations.CONTRIBUTION_STATE, db_index=True) type = RelationIntegerField(relation=relations.CONTRIBUTION_TYPE, db_index=True) source = RelationIntegerField(relation=relations.CONTRIBUTION_SOURCE, db_index=True) # if entity_id < 0 it is id of old phrase_candidate entity entity_id = models.BigIntegerField(db_index=True) class Meta: unique_together = (('type', 'account', 'entity_id'), )
class MobRecord(models.Model): MAX_UUID_LENGTH = 32 MAX_NAME_LENGTH = 32 created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) editor = models.ForeignKey('accounts.Account', null=True, related_name='+', on_delete=models.SET_NULL) state = RelationIntegerField(relation=MOB_RECORD_STATE, db_index=True) type = RelationIntegerField(relation=MOB_TYPE, db_index=True) archetype = RelationIntegerField(relation=game_relations.ARCHETYPE, db_index=True) level = models.IntegerField(default=0) uuid = models.CharField(max_length=MAX_UUID_LENGTH, unique=True) name = models.CharField(max_length=MAX_NAME_LENGTH, unique=True, null=False, db_index=True) description = models.TextField(null=False, default=u'') abilities = models.TextField(null=False) terrains = models.TextField(null=False) data = models.TextField(null=False, default='{}') class Meta: permissions = ( ("create_mobrecord", u"Может предлагать мобов"), ("moderate_mobrecord", u"Может утверждать мобов"), )
class MobRecord(models.Model): MAX_UUID_LENGTH = 32 MAX_NAME_LENGTH = 32 created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) editor = models.ForeignKey('accounts.Account', null=True, related_name='+', on_delete=models.SET_NULL) state = RelationIntegerField(relation=relations.MOB_RECORD_STATE, db_index=True) type = RelationIntegerField(relation=game_relations.BEING_TYPE, db_index=True) is_mercenary = models.BooleanField(default=False) is_eatable = models.BooleanField(default=False) archetype = RelationIntegerField(relation=game_relations.ARCHETYPE, db_index=True) level = models.IntegerField(default=0) uuid = models.CharField(max_length=MAX_UUID_LENGTH, unique=True) name = models.CharField(max_length=MAX_NAME_LENGTH, unique=True, null=False, db_index=True) description = models.TextField(null=False, default='') abilities = models.TextField(null=False) terrains = models.TextField(null=False) data = models.TextField(null=False, default='{}') communication_verbal = RelationIntegerField( relation=game_relations.COMMUNICATION_VERBAL, db_index=True) communication_gestures = RelationIntegerField( relation=game_relations.COMMUNICATION_GESTURES, db_index=True) communication_telepathic = RelationIntegerField( relation=game_relations.COMMUNICATION_TELEPATHIC, db_index=True) intellect_level = RelationIntegerField( relation=game_relations.INTELLECT_LEVEL, db_index=True) class Meta: permissions = ( ("create_mobrecord", "Может предлагать мобов"), ("moderate_mobrecord", "Может утверждать мобов"), )
class CompanionRecord(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) state = RelationIntegerField(relation=relations.STATE, db_index=True) type = RelationIntegerField(relation=relations.TYPE, db_index=True) dedication = RelationIntegerField(relation=relations.DEDICATION, db_index=True) archetype = RelationIntegerField(relation=game_relations.ARCHETYPE, blank=True) mode = RelationIntegerField(relation=relations.MODE, blank=True) max_health = models.IntegerField(default=1) data = models.TextField(null=False, default='{}') class Meta: permissions = ( ("create_companionrecord", u"Может создавать спутников"), ("moderate_companionrecord", u"Может утверждать спутников"), )
class ArtifactRecord(models.Model): MAX_UUID_LENGTH = 32 MAX_NAME_LENGTH = 32 created_at = models.DateTimeField(auto_now_add=True, null=False) updated_at = models.DateTimeField(auto_now=True, null=False) editor = models.ForeignKey('accounts.Account', null=True, related_name='+', blank=True, on_delete=models.SET_NULL) type = RelationIntegerField(relation=relations.ARTIFACT_TYPE, relation_column='value') power_type = RelationIntegerField(relation=relations.ARTIFACT_POWER_TYPE, relation_column='value') state = RelationIntegerField(relation=relations.ARTIFACT_RECORD_STATE, relation_column='value') rare_effect = RelationIntegerField(relation=relations.ARTIFACT_EFFECT, relation_column='value') epic_effect = RelationIntegerField(relation=relations.ARTIFACT_EFFECT, relation_column='value') special_effect = RelationIntegerField(relation=relations.ARTIFACT_EFFECT, relation_column='value', default=relations.ARTIFACT_EFFECT.NO_EFFECT.value) level = models.IntegerField(default=0) uuid = models.CharField(max_length=MAX_UUID_LENGTH, unique=True) name = models.CharField(max_length=MAX_NAME_LENGTH, unique=True, null=False, db_index=True) description = models.TextField(null=False, default=u'', blank=True) mob = models.ForeignKey('mobs.MobRecord', null=True, related_name='+', blank=True, on_delete=models.SET_NULL) data = models.TextField(null=False, default='{}') class Meta: permissions = (("create_artifactrecord", u"Может предлагать артефакты"), ("moderate_artifactrecord", u"Может утверждать артефакты"),)
class Record(models.Model): type = RelationIntegerField(relation=RECORD_TYPE, relation_column='value', db_index=True) created_at = models.DateTimeField(auto_now_add=True, null=False) created_at_turn = models.IntegerField(null=False) text = models.TextField(null=False, blank=True) actors = models.ManyToManyField(Actor, through='RecordToActor') def __str__(self): return self.type.text
class ResourceExchange(models.Model): created_at = models.DateTimeField(auto_now_add=True) place_1 = models.ForeignKey(Place, related_name='+', null=True, on_delete=models.CASCADE) place_2 = models.ForeignKey(Place, related_name='+', null=True, on_delete=models.CASCADE) resource_1 = RelationIntegerField( relation=relations.RESOURCE_EXCHANGE_TYPE, relation_column='value') resource_2 = RelationIntegerField( relation=relations.RESOURCE_EXCHANGE_TYPE, relation_column='value') bill = models.ForeignKey('bills.Bill', blank=True, null=True, related_name='+', on_delete=models.SET_NULL)
class Building(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) created_at_turn = models.BigIntegerField(default=0) x = models.BigIntegerField(null=False) y = models.BigIntegerField(null=False) state = RelationIntegerField(relation=relations.BUILDING_STATE, relation_column='value', db_index=True) type = RelationIntegerField(relation=relations.BUILDING_TYPE, relation_column='value') integrity = models.FloatField(default=1.0, null=False) place = models.ForeignKey(Place, null=False, on_delete=models.CASCADE) person = models.OneToOneField('persons.Person', null=False, on_delete=models.CASCADE) data = models.TextField(null=False, default='{}')
class HeroPreferences(models.Model): hero = models.ForeignKey(Hero, on_delete=models.CASCADE) energy_regeneration_type = RelationIntegerField( null=False, relation=relations.ENERGY_REGENERATION) mob = models.ForeignKey('mobs.MobRecord', null=True, default=None, blank=True, on_delete=models.PROTECT) place = models.ForeignKey('places.Place', null=True, default=None, related_name='+', blank=True, on_delete=models.PROTECT) friend = models.ForeignKey('persons.Person', null=True, default=None, related_name='+', blank=True, on_delete=models.PROTECT) enemy = models.ForeignKey('persons.Person', null=True, default=None, related_name='+', blank=True, on_delete=models.PROTECT) equipment_slot = RelationIntegerField(relation=relations.EQUIPMENT_SLOT, null=True, default=None, blank=True) risk_level = RelationIntegerField(relation=relations.RISK_LEVEL) favorite_item = RelationIntegerField(relation=relations.EQUIPMENT_SLOT, null=True, default=None, blank=True) archetype = RelationIntegerField(relation=game_relations.ARCHETYPE, null=True, default=None, blank=True) companion_dedication = RelationIntegerField( relation=relations.COMPANION_DEDICATION, null=True, default=None, blank=True) companion_empathy = RelationIntegerField( relation=relations.COMPANION_EMPATHY, null=True, default=None, blank=True)
class Award(models.Model): account = models.ForeignKey(Account, related_name='+', null=False, on_delete=models.CASCADE) type = RelationIntegerField(relation=relations.AWARD_TYPE, relation_column='value', db_index=True) description = models.TextField(default='', blank=True) created_at = models.DateTimeField(auto_now_add=True, db_index=True) updated_at = models.DateTimeField(auto_now=True, db_index=True)
class Vote(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) owner = models.ForeignKey('accounts.Account', null=False, related_name='+', on_delete=models.CASCADE) bill = models.ForeignKey(Bill, null=False, on_delete=models.CASCADE) type = RelationIntegerField(relation=relations.VOTE_TYPE, db_index=True) class Meta: unique_together = (('owner', 'bill'), )
class Battle1x1Result(models.Model): created_at = models.DateTimeField(auto_now_add=True, null=False) participant_1 = models.ForeignKey('accounts.Account', null=False, related_name='+', on_delete=models.CASCADE) participant_2 = models.ForeignKey('accounts.Account', null=False, related_name='+', on_delete=models.CASCADE) result = RelationIntegerField(relation=BATTLE_1X1_RESULT, relation_column='value', db_index=True)