class AlertTemp(models.Model): host = models.IPAddressField(primary_key=True) snmp_status = models.CharField(max_length=20) snmp_data = models.CharField(max_length=200)
class Comment(BaseCommentAbstractModel): """ A user comment about some object. """ # Who posted this comment? If ``user`` is set then it was an authenticated # user; otherwise at least user_name should have been set and the comment # was posted by a non-authenticated user. user = models.ForeignKey(User, verbose_name=_('user'), blank=True, null=True, related_name="%(class)s_comments") user_name = models.CharField(_("user's name"), max_length=50, blank=True) user_email = models.EmailField(_("user's email address"), blank=True) user_url = models.URLField(_("user's URL"), blank=True) comment = models.TextField(_('comment'), max_length=COMMENT_MAX_LENGTH) # Metadata about the comment submit_date = models.DateTimeField(_('date/time submitted'), default=None) ip_address = models.IPAddressField(_('IP address'), blank=True, null=True) is_public = models.BooleanField(_('is public'), default=True, help_text=_('Uncheck this box to make the comment effectively ' \ 'disappear from the site.')) is_removed = models.BooleanField(_('is removed'), default=False, help_text=_('Check this box if the comment is inappropriate. ' \ 'A "This comment has been removed" message will ' \ 'be displayed instead.')) # Manager objects = CommentManager() class Meta: db_table = "django_comments" ordering = ('submit_date',) permissions = [("can_moderate", "Can moderate comments")] verbose_name = _('comment') verbose_name_plural = _('comments') def __unicode__(self): return "%s: %s..." % (self.name, self.comment[:50]) def save(self, *args, **kwargs): if self.submit_date is None: self.submit_date = datetime.datetime.now() super(Comment, self).save(*args, **kwargs) def _get_userinfo(self): """ Get a dictionary that pulls together information about the poster safely for both authenticated and non-authenticated comments. This dict will have ``name``, ``email``, and ``url`` fields. """ if not hasattr(self, "_userinfo"): self._userinfo = { "name" : self.user_name, "email" : self.user_email, "url" : self.user_url } if self.user_id: u = self.user if u.email: self._userinfo["email"] = u.email # If the user has a full name, use that for the user name. # However, a given user_name overrides the raw user.username, # so only use that if this comment has no associated name. if u.get_full_name(): self._userinfo["name"] = self.user.get_full_name() elif not self.user_name: self._userinfo["name"] = u.username return self._userinfo userinfo = property(_get_userinfo, doc=_get_userinfo.__doc__) def _get_name(self): return self.userinfo["name"] def _set_name(self, val): if self.user_id: raise AttributeError(_("This comment was posted by an authenticated "\ "user and thus the name is read-only.")) self.user_name = val name = property(_get_name, _set_name, doc="The name of the user who posted this comment") def _get_email(self): return self.userinfo["email"] def _set_email(self, val): if self.user_id: raise AttributeError(_("This comment was posted by an authenticated "\ "user and thus the email is read-only.")) self.user_email = val email = property(_get_email, _set_email, doc="The email of the user who posted this comment") def _get_url(self): return self.userinfo["url"] def _set_url(self, val): self.user_url = val url = property(_get_url, _set_url, doc="The URL given by the user who posted this comment") def get_absolute_url(self, anchor_pattern="#c%(id)s"): return self.get_content_object_url() + (anchor_pattern % self.__dict__) def get_as_text(self): """ Return this comment as plain text. Useful for emails. """ d = { 'user': self.user or self.name, 'date': self.submit_date, 'comment': self.comment, 'domain': self.site.domain, 'url': self.get_absolute_url() } return _('Posted by %(user)s at %(date)s\n\n%(comment)s\n\nhttp://%(domain)s%(url)s') % d
class PayPalNVP(Model): """Record of a NVP interaction with PayPal.""" TIMESTAMP_FORMAT = "%Y-%m-%dT%H:%M:%SZ" # 2009-02-03T17:47:41Z RESTRICTED_FIELDS = L("expdate cvv2 acct") ADMIN_FIELDS = L( "id user flag flag_code flag_info query response created_at updated_at " ) ITEM_FIELDS = L("amt custom invnum") DIRECT_FIELDS = L("firstname lastname street city state countrycode zip") # Response fields method = models.CharField(max_length=64, blank=True) ack = models.CharField(max_length=32, blank=True) profilestatus = models.CharField(max_length=32, blank=True) timestamp = models.DateTimeField(blank=True, null=True) profileid = models.CharField(max_length=32, blank=True) # I-E596DFUSD882 profilereference = models.CharField(max_length=128, blank=True) # PROFILEREFERENCE correlationid = models.CharField(max_length=32, blank=True) # 25b380cda7a21 token = models.CharField(max_length=64, blank=True) payerid = models.CharField(max_length=64, blank=True) # Transaction Fields firstname = models.CharField("First Name", max_length=255, blank=True) lastname = models.CharField("Last Name", max_length=255, blank=True) street = models.CharField("Street Address", max_length=255, blank=True) city = models.CharField("City", max_length=255, blank=True) state = models.CharField("State", max_length=255, blank=True) countrycode = models.CharField("Country", max_length=2, blank=True) zip = models.CharField("Postal / Zip Code", max_length=32, blank=True) # Custom fields invnum = models.CharField(max_length=255, blank=True) custom = models.CharField(max_length=255, blank=True) # Admin fields user = models.ForeignKey(getattr(settings, 'AUTH_USER_MODEL', 'auth.User'), blank=True, null=True) flag = models.BooleanField(default=False, blank=True) flag_code = models.CharField(max_length=32, blank=True) flag_info = models.TextField(blank=True) ipaddress = models.IPAddressField(blank=True) query = models.TextField(blank=True) response = models.TextField(blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: db_table = "paypal_nvp" verbose_name = "PayPal NVP" def init(self, request, paypal_request, paypal_response): """Initialize a PayPalNVP instance from a HttpRequest.""" self.ipaddress = request.META.get('REMOTE_ADDR', '').split(':')[0] if hasattr(request, "user") and request.user.is_authenticated(): self.user = request.user # No storing credit card info. query_data = dict((k, v) for k, v in paypal_request.iteritems() if k not in self.RESTRICTED_FIELDS) self.query = urlencode(query_data) self.response = urlencode(paypal_response) # Was there a flag on the play? ack = paypal_response.get('ack', False) if ack != "Success": if ack == "SuccessWithWarning": self.flag_info = paypal_response.get('l_longmessage0', '') else: self.set_flag(paypal_response.get('l_longmessage0', ''), paypal_response.get('l_errorcode', '')) def set_flag(self, info, code=None): """Flag this instance for investigation.""" self.flag = True self.flag_info += info if code is not None: self.flag_code = code def process(self, request, item): """Do a direct payment.""" from paypal.pro.helpers import PayPalWPP wpp = PayPalWPP(request) # Change the model information into a dict that PayPal can understand. params = model_to_dict(self, exclude=self.ADMIN_FIELDS) params['acct'] = self.acct params['creditcardtype'] = self.creditcardtype params['expdate'] = self.expdate params['cvv2'] = self.cvv2 params.update(item) # Create recurring payment: if 'billingperiod' in params: return wpp.createRecurringPaymentsProfile(params, direct=True) # Create single payment: else: return wpp.doDirectPayment(params)
class UserProfile(models.Model): # The corresponding auth user """ The model is a basic model for any user who will come into Fest. It handles the basic """ is_active = models.BooleanField(default=True) user = models.OneToOneField( User, related_name='profile' ) # uses name and email from here. username = email # Basic information gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='F') dob = models.DateField(null=True, blank=True) mobile_number = models.CharField( max_length=15, blank=True, null=True, help_text='Please enter your current mobile number') # College info branch = models.CharField(max_length=50, choices=BRANCH_CHOICES, help_text='Your branch of study') college = models.ForeignKey(College, null=True, blank=True) college_roll = models.CharField(max_length=40, null=True) school_student = models.BooleanField(default=False) # Fest related info want_accomodation = models.BooleanField( default=False, help_text="Doesn't assure accommodation.") # Internal flags and keys activation_key = models.CharField(max_length=40, null=True) key_expires = models.DateTimeField(default=timezone.now() + datetime.timedelta(2)) # Fest organizational info # is_core = models.BooleanField(default=False) # is_hospi = models.BooleanField(default=False) # Analytics information date_created = models.DateTimeField(auto_now_add=True) last_activity_ip = models.IPAddressField(default="0.0.0.0") last_activity_date = models.DateTimeField( default=datetime.datetime(1950, 1, 1)) send_mails = models.BooleanField(default=True) objects = CheckActiveManager() @property def fest_id(self): return settings.FEST_NAME[:2].upper + str(self.user.id).zfill(6) def last_seen(self): return cache.get('seen_%s' % self.user.username) def online(self): if self.last_seen(): now = datetime.datetime.now() if now > self.last_seen() + datetime.timedelta( seconds=settings.USER_ONLINE_TIMEOUT): return False else: return True else: return False def save(self, *args, **kwargs): #self.user.save() super(UserProfile, self).save(*args, **kwargs) def delete(self, *args, **kwargs): self.user.delete() super(UserProfile, self).delete(*args, **kwargs) def set_iitm_user(self, *args, **kwagrs): try: self.college = College.objects.get(name__iexact="IIT MADRAS", state__iexact="Tamil Nadu") self.save() except: pass def get_absolute_url(self): return reverse('apps.users.views.profile', args=(self.user.pk, )) def get_pic(self, s=75): url = "graph.facebook.com" + self.fbid + "/picture" return url @property def fbid(self): fb_accts = UserSocialAuth.objects.filter(provider="facebook", user=self.user) if len(fb_accts): return fb_accts[0].uid return "" def incomplete(self): self_user = self.user return self_user.get_full_name() and self.mobile_number and \ self_user.email def create_unsubscribe_link(self): username, token = self.make_token().split(":", 1) return reverse('apps.users.views.unsubscribe', kwargs={ 'username': username, 'token': token, }) def make_token(self): return TimestampSigner().sign(self.user.username) def check_token(self, token): try: key = '%s:%s' % (self.user.username, token) TimestampSigner().unsign(key, max_age=60 * 60 * 48) # Valid for 2 days except BadSignature, SignatureExpired: return False return True
class Threadlocals(models.Model): threadlocals_id = models.CharField('threadlocals id', max_length=255) ip_address = models.IPAddressField('ip address') created_at = models.DateTimeField('date created', auto_now_add=True)
class NetworkSetting(models.Model): ip = models.IPAddressField() mask = SubnetMaskField()
class InboundPingback(models.Model): PROCESS_QUEUE = 'humfrey:pingback:inbound:process-queue' ACCEPTED_QUEUE = 'humfrey:pingback:inbound:accepted-queue' slug = models.CharField(max_length=40, primary_key=True) source = models.URLField() target = models.URLField() store = models.ForeignKey(Store) user_agent = models.TextField(blank=True) remote_addr = models.IPAddressField() user = models.ForeignKey(User, null=True, blank=True) created = models.DateTimeField(auto_now_add=True) updated = models.DateTimeField(auto_now=True) # Serialized as Turtle data = models.TextField(blank=True) state = models.CharField(max_length=10, choices=STATE_CHOICES, default='new') invalid_reason = models.TextField(blank=True, choices=INVALID_REASON_CHOICES) @property def graph_name(self): return rdflib.URIRef(settings.GRAPH_BASE + 'pingback/' + self.slug) @staticmethod def get_slug(source, target): hash = lambda x: hashlib.sha1(x).hexdigest() return hash(hash(source) + hash(target)) def queue(self): self.state, self.invalid_reason = 'queued', '' self.save() send_task('humfrey.pingback.process_new_pingback', kwargs={'pingback': self}) def accept(self): self.state, self.invalid_reason = 'accepted', '' self.save() send_task('humfrey.pingback.accept_pingback', kwargs={'pingback': self}) def reject(self, save=True): self.state, self.invalid_reason = 'rejected', '' if save: self.save() def mark_invalid(self, reason, save=True): self.state, self.invalid_reason = 'invalid', reason self.data = '' if save: self.save() def mark_pending(self, save=True): self.state, self.invalid_reason = 'pending', '' if save: self.save() def mark_published(self, save=True): self.state, self.invalid_reason = 'published', '' if save: self.save() def save(self, *args, **kwargs): self.slug = self.get_slug(self.source, self.target) return super(InboundPingback, self).save(*args, **kwargs)
class Post(RenderableItem): topic = models.ForeignKey(Topic, related_name='posts', verbose_name=_('Topic')) user = models.ForeignKey(User, related_name='posts', verbose_name=_('User')) created = models.DateTimeField(_('Created'), blank=True) updated = models.DateTimeField(_('Updated'), blank=True, null=True) user_ip = models.IPAddressField(_('User IP'), blank=True, default='0.0.0.0') on_moderation = models.BooleanField(_('On moderation'), default=False) class Meta(object): ordering = ['created'] verbose_name = _('Post') verbose_name_plural = _('Posts') def summary(self): LIMIT = 50 tail = len(self.body) > LIMIT and '...' or '' return self.body[:LIMIT] + tail __unicode__ = summary def save(self, *args, **kwargs): now = datetime.now() if self.created is None: self.created = now self.render() new = self.pk is None super(Post, self).save(*args, **kwargs) if new: self.topic.updated = now self.topic.forum.updated = now # If post is topic head and moderated, moderate topic too if self.topic.head == self and self.on_moderation == False and self.topic.on_moderation == True: self.topic.on_moderation = False self.topic.update_counters() self.topic.forum.update_counters() def get_absolute_url(self): return reverse('pybb:post', kwargs={'pk': self.id}) def delete(self, *args, **kwargs): self_id = self.id head_post_id = self.topic.posts.order_by('created')[0].id if self_id == head_post_id: self.topic.delete() else: super(Post, self).delete(*args, **kwargs) self.topic.update_counters() self.topic.forum.update_counters() def get_parents(self): """ Used in templates for breadcrumb building """ return self.topic.forum.category, self.topic.forum, self.topic,
class UserIP(models.Model): user = models.ForeignKey(User, blank=True, null=True) ip = models.IPAddressField(unique=True) def __unicode__(self): return "%s [%s]" % (self.user.username, self.ip)
class Migration(migrations.Migration): dependencies = [ ('user_profile', '0001_initial'), ('service', '0001_initial'), ('organization', '0001_initial'), ('device', '0001_initial'), ] operations = [ migrations.CreateModel( name='Antenna', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Antenna Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Antenna Alias')), ('antenna_type', models.CharField(max_length=100, null=True, verbose_name=b'Antenna Type', blank=True)), ('height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Antenna Height', blank=True)), ('polarization', models.CharField(max_length=50, null=True, verbose_name=b'Polarization', blank=True)), ('tilt', models.FloatField(help_text=b'Enter a number.', null=True, verbose_name=b'Tilt', blank=True)), ('gain', models.FloatField(help_text=b'(dBi) Enter a number.', null=True, verbose_name=b'Gain', blank=True)), ('mount_type', models.CharField(max_length=100, null=True, verbose_name=b'Mount Type', blank=True)), ('beam_width', models.FloatField(help_text=b'Enter a number.', null=True, verbose_name=b'Beam Width', blank=True)), ('azimuth_angle', models.FloatField(help_text=b'Enter a number.', null=True, verbose_name=b'Azimuth Angle', blank=True)), ('reflector', models.CharField(max_length=100, null=True, verbose_name=b'Lens/Reflector', blank=True)), ('splitter_installed', models.CharField(max_length=4, null=True, verbose_name=b'Splitter Installed', blank=True)), ('sync_splitter_used', models.CharField(max_length=4, null=True, verbose_name=b'Sync Splitter User', blank=True)), ('make_of_antenna', models.CharField(max_length=40, null=True, verbose_name=b'Make Of Antenna', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')), ], ), migrations.CreateModel( name='Backhaul', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Backhaul Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Backhaul Alias')), ('bh_port_name', models.CharField(max_length=40, null=True, verbose_name=b' BH Port Name', blank=True)), ('bh_port', models.IntegerField(null=True, verbose_name=b'BH Port', blank=True)), ('bh_type', models.CharField(max_length=250, null=True, verbose_name=b'BH Type', blank=True)), ('switch_port_name', models.CharField(max_length=40, null=True, verbose_name=b'Switch Port Name', blank=True)), ('switch_port', models.IntegerField(null=True, verbose_name=b'Switch Port', blank=True)), ('pop_port_name', models.CharField(max_length=40, null=True, verbose_name=b'POP Port Name', blank=True)), ('pop_port', models.IntegerField(null=True, verbose_name=b'POP Port', blank=True)), ('aggregator_port_name', models.CharField(max_length=40, null=True, verbose_name=b'Aggregator Port Name', blank=True)), ('aggregator_port', models.IntegerField(null=True, verbose_name=b'Aggregator Port', blank=True)), ('pe_hostname', models.CharField(max_length=250, null=True, verbose_name=b'PE Hostname', blank=True)), ('pe_ip', models.IPAddressField(null=True, verbose_name=b'PE IP Address', blank=True)), ('bh_connectivity', models.CharField(max_length=40, null=True, verbose_name=b'BH Connectivity', blank=True)), ('bh_circuit_id', models.CharField(max_length=250, null=True, verbose_name=b'BH Circuit ID', blank=True)), ('bh_capacity', models.IntegerField(help_text=b'Enter a number.', null=True, verbose_name=b'BH Capacity', blank=True)), ('ttsl_circuit_id', models.CharField(max_length=250, null=True, verbose_name=b'TTSL Circuit ID', blank=True)), ('dr_site', models.CharField(max_length=150, null=True, verbose_name=b'DR Site', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('aggregator', models.ForeignKey(related_name='backhaul_aggregator', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)), ('bh_configured_on', models.ForeignKey(related_name='backhaul', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)), ('bh_switch', models.ForeignKey(related_name='backhaul_switch', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)), ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')), ('pop', models.ForeignKey(related_name='backhaul_pop', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='device.Device', null=True)), ], ), migrations.CreateModel( name='BaseStation', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('bs_site_id', models.CharField(max_length=250, null=True, verbose_name=b'BS Site ID', blank=True)), ('bs_site_type', models.CharField(max_length=100, null=True, verbose_name=b'BS Site Type', blank=True)), ('bh_port_name', models.CharField(max_length=40, null=True, verbose_name=b' BH Port Name', blank=True)), ('bh_port', models.IntegerField(null=True, verbose_name=b'BH Port', blank=True)), ('bh_capacity', models.IntegerField(help_text=b'Enter a number.', null=True, verbose_name=b'BH Capacity', blank=True)), ('bs_type', models.CharField(max_length=40, null=True, verbose_name=b'BS Type', blank=True)), ('bh_bso', models.CharField(max_length=40, null=True, verbose_name=b'BH BSO', blank=True)), ('hssu_used', models.CharField(max_length=40, null=True, verbose_name=b'HSSU Used', blank=True)), ('hssu_port', models.CharField(max_length=40, null=True, verbose_name=b'HSSU Port', blank=True)), ('latitude', models.FloatField(null=True, verbose_name=b'Latitude', blank=True)), ('longitude', models.FloatField(null=True, verbose_name=b'Longitude', blank=True)), ('infra_provider', models.CharField(max_length=100, null=True, verbose_name=b'Infra Provider', blank=True)), ('gps_type', models.CharField(max_length=100, null=True, verbose_name=b'GPS Type', blank=True)), ('building_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Building Height', blank=True)), ('tower_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Tower Height', blank=True)), ('address', models.TextField(null=True, verbose_name=b'Address', blank=True)), ('maintenance_status', models.CharField(max_length=250, null=True, verbose_name=b'Maintenance Status', blank=True)), ('provisioning_status', models.CharField(max_length=250, null=True, verbose_name=b'Provisioning Status', blank=True)), ('tag1', models.CharField(max_length=60, null=True, verbose_name=b'Tag 1', blank=True)), ('tag2', models.CharField(max_length=60, null=True, verbose_name=b'Tag 2', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('backhaul', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, default=None, blank=True, to='inventory.Backhaul', null=True)), ('bs_switch', models.ForeignKey(related_name='bs_switch', blank=True, to='device.Device', null=True)), ('city', models.ForeignKey(blank=True, to='device.City', null=True)), ('country', models.ForeignKey(blank=True, to='device.Country', null=True)), ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')), ('state', models.ForeignKey(blank=True, to='device.State', null=True)), ], options={ 'ordering': ['city', 'state'], }, ), migrations.CreateModel( name='Circuit', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('circuit_type', models.CharField(max_length=250, null=True, verbose_name=b'Type', blank=True)), ('circuit_id', models.CharField(max_length=250, null=True, verbose_name=b'Circuit ID', blank=True)), ('qos_bandwidth', models.FloatField(help_text=b'(kbps) Enter a number.', null=True, verbose_name=b'QOS(BW)', blank=True)), ('dl_rssi_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'RSSI During Acceptance', blank=True)), ('dl_cinr_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'CINR During Acceptance', blank=True)), ('jitter_value_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'Jitter Value During Acceptance', blank=True)), ('throughput_during_acceptance', models.CharField(max_length=100, null=True, verbose_name=b'Throughput During Acceptance', blank=True)), ('date_of_acceptance', models.DateField(null=True, verbose_name=b'Date of Acceptance', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ], ), migrations.CreateModel( name='CircuitL2Report', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('file_name', models.FileField(max_length=512, upload_to=inventory.models.uploaded_report_name)), ('added_on', models.DateTimeField(auto_now_add=True, verbose_name=b'Added On', null=True)), ('type_id', models.IntegerField(verbose_name=b'Type ID')), ('is_public', models.BooleanField(default=True, verbose_name=b'Is Public')), ('report_type', models.CharField(max_length=15, verbose_name=b'Type')), ('user_id', models.ForeignKey(to='user_profile.UserProfile')), ], ), migrations.CreateModel( name='Customer', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('address', models.TextField(null=True, verbose_name=b'Address', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')), ], ), migrations.CreateModel( name='GISExcelDownload', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('file_path', models.CharField(max_length=250, null=True, verbose_name=b'Inventory File', blank=True)), ('status', models.IntegerField(null=True, verbose_name=b'Status', blank=True)), ('base_stations', models.CharField(max_length=250, null=True, verbose_name=b'Base Stations', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('downloaded_by', models.CharField(max_length=100, null=True, verbose_name=b'Downloaded By', blank=True)), ('added_on', models.DateTimeField(null=True, verbose_name=b'Added On', blank=True)), ('modified_on', models.DateTimeField(null=True, verbose_name=b'Modified On', blank=True)), ], ), migrations.CreateModel( name='GISInventoryBulkImport', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('original_filename', models.CharField(max_length=250, null=True, verbose_name=b'Inventory', blank=True)), ('valid_filename', models.CharField(max_length=250, null=True, verbose_name=b'Valid', blank=True)), ('invalid_filename', models.CharField(max_length=250, null=True, verbose_name=b'Invalid', blank=True)), ('status', models.IntegerField(null=True, verbose_name=b'Status', blank=True)), ('sheet_name', models.CharField(max_length=100, null=True, verbose_name=b'Sheet Name', blank=True)), ('technology', models.CharField(max_length=40, null=True, verbose_name=b'Technology', blank=True)), ('upload_status', models.IntegerField(null=True, verbose_name=b'Upload Status', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('uploaded_by', models.CharField(max_length=100, null=True, verbose_name=b'Uploaded By', blank=True)), ('added_on', models.DateTimeField(null=True, verbose_name=b'Added On', blank=True)), ('modified_on', models.DateTimeField(null=True, verbose_name=b'Modified On', blank=True)), ], ), migrations.CreateModel( name='IconSettings', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('upload_image', models.ImageField(upload_to=inventory.models.uploaded_file_name)), ], ), migrations.CreateModel( name='LivePollingSettings', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('data_source', models.ForeignKey(to='service.ServiceDataSource')), ('service', models.ForeignKey(to='service.Service')), ('technology', models.ForeignKey(to='device.DeviceTechnology')), ], ), migrations.CreateModel( name='PingThematicSettings', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('service', models.CharField(max_length=250, verbose_name=b'Service')), ('data_source', models.CharField(max_length=250, verbose_name=b'Data Source')), ('range1_start', models.CharField(max_length=20, null=True, verbose_name=b'Range1 Start', blank=True)), ('range1_end', models.CharField(max_length=20, null=True, verbose_name=b'Range1 End', blank=True)), ('range2_start', models.CharField(max_length=20, null=True, verbose_name=b'Range2 Start', blank=True)), ('range2_end', models.CharField(max_length=20, null=True, verbose_name=b'Range2 End', blank=True)), ('range3_start', models.CharField(max_length=20, null=True, verbose_name=b'Range3 Start', blank=True)), ('range3_end', models.CharField(max_length=20, null=True, verbose_name=b'Range3 End', blank=True)), ('range4_start', models.CharField(max_length=20, null=True, verbose_name=b'Range4 Start', blank=True)), ('range4_end', models.CharField(max_length=20, null=True, verbose_name=b'Range4 End', blank=True)), ('range5_start', models.CharField(max_length=20, null=True, verbose_name=b'Range5 Start', blank=True)), ('range5_end', models.CharField(max_length=20, null=True, verbose_name=b'Range5 End', blank=True)), ('range6_start', models.CharField(max_length=20, null=True, verbose_name=b'Range6 Start', blank=True)), ('range6_end', models.CharField(max_length=20, null=True, verbose_name=b'Range6 End', blank=True)), ('range7_start', models.CharField(max_length=20, null=True, verbose_name=b'Range7 Start', blank=True)), ('range7_end', models.CharField(max_length=20, null=True, verbose_name=b'Range7 End', blank=True)), ('range8_start', models.CharField(max_length=20, null=True, verbose_name=b'Range8 Start', blank=True)), ('range8_end', models.CharField(max_length=20, null=True, verbose_name=b'Range8 End', blank=True)), ('range9_start', models.CharField(max_length=20, null=True, verbose_name=b'Range9 Start', blank=True)), ('range9_end', models.CharField(max_length=20, null=True, verbose_name=b'Range9 End', blank=True)), ('range10_start', models.CharField(max_length=20, null=True, verbose_name=b'Range10 Start', blank=True)), ('range10_end', models.CharField(max_length=20, null=True, verbose_name=b'Range10 End', blank=True)), ('icon_settings', models.TextField(default=b'NULL')), ('is_global', models.BooleanField(default=False, verbose_name=b'Global Setting')), ('technology', models.ForeignKey(to='device.DeviceTechnology')), ], ), migrations.CreateModel( name='Sector', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('sector_id', models.CharField(max_length=250, null=True, verbose_name=b'Sector ID', blank=True)), ('dr_site', models.CharField(max_length=150, null=True, verbose_name=b'DR Site', blank=True)), ('mrc', models.CharField(max_length=4, null=True, verbose_name=b'MRC', blank=True)), ('tx_power', models.FloatField(help_text=b'(dB) Enter a number.', null=True, verbose_name=b'TX Power', blank=True)), ('rx_power', models.FloatField(help_text=b'(dB) Enter a number.', null=True, verbose_name=b'RX Power', blank=True)), ('rf_bandwidth', models.FloatField(help_text=b'(kbps) Enter a number.', max_length=250, null=True, verbose_name=b'RF Bandwidth', blank=True)), ('frame_length', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Frame Length', blank=True)), ('cell_radius', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Cell Radius', blank=True)), ('planned_frequency', models.CharField(max_length=250, null=True, verbose_name=b'Planned Frequency', blank=True)), ('modulation', models.CharField(max_length=250, null=True, verbose_name=b'Modulation', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('antenna', models.ForeignKey(related_name='antenna', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Antenna', null=True)), ('base_station', models.ForeignKey(related_name='sector', on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.BaseStation', null=True)), ('bs_technology', models.ForeignKey(blank=True, to='device.DeviceTechnology', null=True)), ('dr_configured_on', models.ForeignKey(related_name='dr_configured_on', blank=True, to='device.Device', max_length=250, null=True)), ('frequency', models.ForeignKey(blank=True, to='device.DeviceFrequency', null=True)), ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')), ('sector_configured_on', models.ForeignKey(related_name='sector_configured_on', on_delete=django.db.models.deletion.SET_NULL, to='device.Device', max_length=250, null=True)), ('sector_configured_on_port', models.ForeignKey(blank=True, to='device.DevicePort', null=True)), ], ), migrations.CreateModel( name='SubStation', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('version', models.CharField(max_length=40, null=True, verbose_name=b'Version', blank=True)), ('serial_no', models.CharField(max_length=250, null=True, verbose_name=b'Serial No.', blank=True)), ('building_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Building Height', blank=True)), ('tower_height', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Tower Height', blank=True)), ('ethernet_extender', models.CharField(max_length=250, null=True, verbose_name=b'Ethernet Extender', blank=True)), ('cable_length', models.FloatField(help_text=b'(mtr) Enter a number.', null=True, verbose_name=b'Cable Length', blank=True)), ('latitude', models.FloatField(null=True, verbose_name=b'Latitude', blank=True)), ('longitude', models.FloatField(null=True, verbose_name=b'Longitude', blank=True)), ('mac_address', models.CharField(max_length=100, null=True, verbose_name=b'MAC Address', blank=True)), ('address', models.TextField(null=True, verbose_name=b'Address', blank=True)), ('description', models.TextField(null=True, verbose_name=b'Description', blank=True)), ('antenna', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Antenna', null=True)), ('city', models.ForeignKey(blank=True, to='device.City', null=True)), ('country', models.ForeignKey(blank=True, to='device.Country', null=True)), ('device', models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, to='device.Device', null=True)), ('organization', models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization')), ('state', models.ForeignKey(blank=True, to='device.State', null=True)), ], ), migrations.CreateModel( name='ThematicSettings', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('icon_settings', models.TextField(default=b'NULL')), ('is_global', models.BooleanField(default=False, verbose_name=b'Global Setting')), ], ), migrations.CreateModel( name='ThresholdConfiguration', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(unique=True, max_length=250, verbose_name=b'Name')), ('alias', models.CharField(max_length=250, verbose_name=b'Alias')), ('service_type', models.CharField(default=b'INT', max_length=3, verbose_name=b'Service Type', choices=[(b'INT', b'Numeric'), (b'STR', b'String')])), ('range1_start', models.CharField(max_length=20, null=True, verbose_name=b'Range1 Start', blank=True)), ('range1_end', models.CharField(max_length=20, null=True, verbose_name=b'Range1 End', blank=True)), ('range2_start', models.CharField(max_length=20, null=True, verbose_name=b'Range2 Start', blank=True)), ('range2_end', models.CharField(max_length=20, null=True, verbose_name=b'Range2 End', blank=True)), ('range3_start', models.CharField(max_length=20, null=True, verbose_name=b'Range3 Start', blank=True)), ('range3_end', models.CharField(max_length=20, null=True, verbose_name=b'Range3 End', blank=True)), ('range4_start', models.CharField(max_length=20, null=True, verbose_name=b'Range4 Start', blank=True)), ('range4_end', models.CharField(max_length=20, null=True, verbose_name=b'Range4 End', blank=True)), ('range5_start', models.CharField(max_length=20, null=True, verbose_name=b'Range5 Start', blank=True)), ('range5_end', models.CharField(max_length=20, null=True, verbose_name=b'Range5 End', blank=True)), ('range6_start', models.CharField(max_length=20, null=True, verbose_name=b'Range6 Start', blank=True)), ('range6_end', models.CharField(max_length=20, null=True, verbose_name=b'Range6 End', blank=True)), ('range7_start', models.CharField(max_length=20, null=True, verbose_name=b'Range7 Start', blank=True)), ('range7_end', models.CharField(max_length=20, null=True, verbose_name=b'Range7 End', blank=True)), ('range8_start', models.CharField(max_length=20, null=True, verbose_name=b'Range8 Start', blank=True)), ('range8_end', models.CharField(max_length=20, null=True, verbose_name=b'Range8 End', blank=True)), ('range9_start', models.CharField(max_length=20, null=True, verbose_name=b'Range9 Start', blank=True)), ('range9_end', models.CharField(max_length=20, null=True, verbose_name=b'Range9 End', blank=True)), ('range10_start', models.CharField(max_length=20, null=True, verbose_name=b'Range10 Start', blank=True)), ('range10_end', models.CharField(max_length=20, null=True, verbose_name=b'Range10 End', blank=True)), ('live_polling_template', models.ForeignKey(to='inventory.LivePollingSettings')), ], ), migrations.CreateModel( name='UserPingThematicSettings', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('thematic_technology', models.ForeignKey(to='device.DeviceTechnology', null=True)), ('thematic_template', models.ForeignKey(to='inventory.PingThematicSettings')), ('user_profile', models.ForeignKey(to='user_profile.UserProfile')), ], ), migrations.CreateModel( name='UserThematicSettings', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('thematic_technology', models.ForeignKey(to='device.DeviceTechnology', null=True)), ('thematic_template', models.ForeignKey(to='inventory.ThematicSettings')), ('user_profile', models.ForeignKey(to='user_profile.UserProfile')), ], ), migrations.AddField( model_name='thematicsettings', name='threshold_template', field=models.ForeignKey(to='inventory.ThresholdConfiguration'), ), migrations.AddField( model_name='thematicsettings', name='user_profile', field=models.ManyToManyField(to='user_profile.UserProfile', through='inventory.UserThematicSettings'), ), migrations.AddField( model_name='pingthematicsettings', name='user_profile', field=models.ManyToManyField(to='user_profile.UserProfile', through='inventory.UserPingThematicSettings'), ), migrations.AddField( model_name='circuit', name='customer', field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Customer', null=True), ), migrations.AddField( model_name='circuit', name='organization', field=models.ForeignKey(default=inventory.models.get_default_org, to='organization.Organization'), ), migrations.AddField( model_name='circuit', name='sector', field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.Sector', null=True), ), migrations.AddField( model_name='circuit', name='sub_station', field=models.ForeignKey(on_delete=django.db.models.deletion.SET_NULL, blank=True, to='inventory.SubStation', null=True), ), ]
class Request(models.Model): # Response infomation response = models.SmallIntegerField(_('response'), choices=HTTP_STATUS_CODES, default=200) # Request infomation method = models.CharField(_('method'), default='GET', max_length=7) path = models.CharField(_('path'), max_length=255) time = models.DateTimeField(_('time'), auto_now_add=True) is_secure = models.BooleanField(_('is secure'), default=False) is_ajax = models.BooleanField( _('is ajax'), default=False, help_text=_('Wheather this request was used via javascript.')) # User infomation ip = models.IPAddressField(_('ip address')) user = models.ForeignKey(AUTH_USER_MODEL, blank=True, null=True, verbose_name=_('user')) referer = models.URLField(_('referer'), max_length=255, blank=True, null=True) user_agent = models.CharField(_('user agent'), max_length=255, blank=True, null=True) language = models.CharField(_('language'), max_length=255, blank=True, null=True) objects = RequestManager() class Meta: verbose_name = _('request') verbose_name_plural = _('requests') ordering = ('-time', ) def __unicode__(self): return u'[%s] %s %s %s' % (self.time, self.method, self.path, self.response) def get_user(self): return get_user_model().objects.get(pk=self.user_id) def from_http_request(self, request, response=None, commit=True): # Request infomation self.method = request.method self.path = request.path[:255] self.is_secure = request.is_secure() self.is_ajax = request.is_ajax() # User infomation self.ip = request.META.get('REMOTE_ADDR', '') self.referer = request.META.get('HTTP_REFERER', '')[:255] self.user_agent = request.META.get('HTTP_USER_AGENT', '')[:255] self.language = request.META.get('HTTP_ACCEPT_LANGUAGE', '')[:255] if getattr(request, 'user', False): if request.user.is_authenticated(): self.user = request.user if response: self.response = response.status_code if (response.status_code == 301) or (response.status_code == 302): self.redirect = response['Location'] if commit: self.save() #@property def browser(self): if not self.user_agent: return if not hasattr(self, '_browser'): self._browser = browsers.resolve(self.user_agent) return self._browser[0] browser = property(browser) #@property def keywords(self): if not self.referer: return if not hasattr(self, '_keywords'): self._keywords = engines.resolve(self.referer) if self._keywords: return ' '.join(self._keywords[1]['keywords'].split('+')) keywords = property(keywords) #@property def hostname(self): try: return gethostbyaddr(self.ip)[0] except Exception: # socket.gaierror, socket.herror, etc return self.ip hostname = property(hostname) def save(self, *args, **kwargs): if not request_settings.REQUEST_LOG_IP: self.ip = request_settings.REQUEST_IP_DUMMY elif request_settings.REQUEST_ANONYMOUS_IP: parts = self.ip.split('.')[0:-1] parts.append('1') self.ip = '.'.join(parts) if not request_settings.REQUEST_LOG_USER: self.user = None super(Request, self).save(*args, **kwargs)
class Transaction(models.Model): ip_address = models.IPAddressField() sent_address = models.CharField(max_length=50) tx_time = models.DateTimeField()
class Log_Page_Visite(models.Model): Ip = models.IPAddressField() Page = models.OneToOneField('Engine.Page') Date = models.DateField()
class Migration(migrations.Migration): dependencies = [] operations = [ migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('catname', models.CharField(unique=True, max_length=128)), ('port', models.IntegerField()), ], options={}, bases=(models.Model, ), ), migrations.CreateModel( name='Group', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('gname', models.CharField(unique=True, max_length=128)), ('description', models.TextField(max_length=1024, blank=True)), ], options={}, bases=(models.Model, ), ), migrations.CreateModel( name='Host', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('ipaddr', models.IPAddressField(unique=True)), ('hostname', models.CharField(max_length=128, null=True, blank=True)), ('user', models.CharField(default=b'root', max_length=128)), ('password', models.CharField(max_length=256)), ('is_sudo', models.BooleanField(default=False)), ('cpuinfo', models.CharField(max_length=256, null=True, blank=True)), ('meminfo', models.IntegerField(max_length=32, null=True, blank=True)), ('device', models.CharField(max_length=256, null=True, blank=True)), ('wip', models.IPAddressField(null=True, blank=True)), ('category', models.ManyToManyField(to='Hosts.Category', null=True)), ('group', models.ForeignKey(to='Hosts.Group')), ], options={}, bases=(models.Model, ), ), ]
class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Attachment', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('size', models.IntegerField(verbose_name='Size')), ('file', models.FileField( upload_to=tendenci.apps.forums.util.FilePathGenerator( to='pybb_upload/attachments'), verbose_name='File')), ], options={ 'verbose_name': 'Attachment', 'verbose_name_plural': 'Attachments', }, bases=(models.Model, ), ), migrations.CreateModel( name='Category', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=80, verbose_name='Name')), ('position', models.IntegerField(default=0, verbose_name='Position', blank=True)), ('hidden', models.BooleanField( default=False, help_text= 'If checked, this category will be visible only for staff', verbose_name='Hidden')), ], options={ 'ordering': ['position'], 'verbose_name': 'Category', 'verbose_name_plural': 'Categories', }, bases=(models.Model, ), ), migrations.CreateModel( name='Forum', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=80, verbose_name='Name')), ('position', models.IntegerField(default=0, verbose_name='Position', blank=True)), ('description', models.TextField(verbose_name='Description', blank=True)), ('updated', models.DateTimeField(null=True, verbose_name='Updated', blank=True)), ('post_count', models.IntegerField(default=0, verbose_name='Post count', blank=True)), ('topic_count', models.IntegerField(default=0, verbose_name='Topic count', blank=True)), ('hidden', models.BooleanField(default=False, verbose_name='Hidden')), ('headline', models.TextField(null=True, verbose_name='Headline', blank=True)), ('category', models.ForeignKey( related_name='forums', verbose_name='Category', to='forums.Category', on_delete=django.db.models.deletion.CASCADE)), ('moderators', models.ManyToManyField(to=settings.AUTH_USER_MODEL, null=True, verbose_name='Moderators', blank=True)), ('parent', models.ForeignKey( related_name='child_forums', verbose_name='Parent forum', blank=True, to='forums.Forum', null=True, on_delete=django.db.models.deletion.CASCADE)), ], options={ 'ordering': ['position'], 'verbose_name': 'Forum', 'verbose_name_plural': 'Forums', }, bases=(models.Model, ), ), migrations.CreateModel( name='ForumReadTracker', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('time_stamp', models.DateTimeField(auto_now=True)), ('forum', models.ForeignKey( blank=True, to='forums.Forum', null=True, on_delete=django.db.models.deletion.CASCADE)), ('user', models.ForeignKey( to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.CASCADE)), ], options={ 'verbose_name': 'Forum read tracker', 'verbose_name_plural': 'Forum read trackers', }, bases=(models.Model, ), ), migrations.CreateModel( name='PollAnswer', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('text', models.CharField(max_length=255, verbose_name='Text')), ], options={ 'verbose_name': 'Poll answer', 'verbose_name_plural': 'Polls answers', }, bases=(models.Model, ), ), migrations.CreateModel( name='PollAnswerUser', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('poll_answer', models.ForeignKey( related_name='users', verbose_name='Poll answer', to='forums.PollAnswer', on_delete=django.db.models.deletion.CASCADE)), ('user', models.ForeignKey( related_name='poll_answers', verbose_name='User', to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.CASCADE)), ], options={ 'verbose_name': 'Poll answer user', 'verbose_name_plural': 'Polls answers users', }, bases=(models.Model, ), ), migrations.CreateModel( name='Post', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('body', models.TextField(verbose_name='Message')), ('body_html', models.TextField(verbose_name='HTML version')), ('body_text', models.TextField(verbose_name='Text version')), ('created', models.DateTimeField(db_index=True, verbose_name='Created', blank=True)), ('updated', models.DateTimeField(null=True, verbose_name='Updated', blank=True)), ('user_ip', models.IPAddressField(default='0.0.0.0', verbose_name='User IP', blank=True)), ('on_moderation', models.BooleanField(default=False, verbose_name='On moderation')), ], options={ 'ordering': ['created'], 'verbose_name': 'Post', 'verbose_name_plural': 'Posts', }, bases=(models.Model, ), ), migrations.CreateModel( name='Profile', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('signature', models.TextField(max_length=1024, verbose_name='Signature', blank=True)), ('signature_html', models.TextField(max_length=1054, verbose_name='Signature HTML Version', blank=True)), ('time_zone', models.FloatField(default=3.0, verbose_name='Time zone', choices=[ (-12.0, '-12'), (-11.0, '-11'), (-10.0, '-10'), (-9.5, '-09.5'), (-9.0, '-09'), (-8.5, '-08.5'), (-8.0, '-08 PST'), (-7.0, '-07 MST'), (-6.0, '-06 CST'), (-5.0, '-05 EST'), (-4.0, '-04 AST'), (-3.5, '-03.5'), (-3.0, '-03 ADT'), (-2.0, '-02'), (-1.0, '-01'), (0.0, '00 GMT'), (1.0, '+01 CET'), (2.0, '+02'), (3.0, '+03'), (3.5, '+03.5'), (4.0, '+04'), (4.5, '+04.5'), (5.0, '+05'), (5.5, '+05.5'), (6.0, '+06'), (6.5, '+06.5'), (7.0, '+07'), (8.0, '+08'), (9.0, '+09'), (9.5, '+09.5'), (10.0, '+10'), (10.5, '+10.5'), (11.0, '+11'), (11.5, '+11.5'), (12.0, '+12'), (13.0, '+13'), (14.0, '+14') ])), ('language', models.CharField( default='en-us', max_length=10, verbose_name='Language', blank=True, choices=[('af', 'Afrikaans'), ('ar', 'Arabic'), ('ast', 'Asturian'), ('az', 'Azerbaijani'), ('bg', 'Bulgarian'), ('be', 'Belarusian'), ('bn', 'Bengali'), ('br', 'Breton'), ('bs', 'Bosnian'), ('ca', 'Catalan'), ('cs', 'Czech'), ('cy', 'Welsh'), ('da', 'Danish'), ('de', 'German'), ('el', 'Greek'), ('en', 'English'), ('en-au', 'Australian English'), ('en-gb', 'British English'), ('eo', 'Esperanto'), ('es', 'Spanish'), ('es-ar', 'Argentinian Spanish'), ('es-mx', 'Mexican Spanish'), ('es-ni', 'Nicaraguan Spanish'), ('es-ve', 'Venezuelan Spanish'), ('et', 'Estonian'), ('eu', 'Basque'), ('fa', 'Persian'), ('fi', 'Finnish'), ('fr', 'French'), ('fy', 'Frisian'), ('ga', 'Irish'), ('gl', 'Galician'), ('he', 'Hebrew'), ('hi', 'Hindi'), ('hr', 'Croatian'), ('hu', 'Hungarian'), ('ia', 'Interlingua'), ('id', 'Indonesian'), ('io', 'Ido'), ('is', 'Icelandic'), ('it', 'Italian'), ('ja', 'Japanese'), ('ka', 'Georgian'), ('kk', 'Kazakh'), ('km', 'Khmer'), ('kn', 'Kannada'), ('ko', 'Korean'), ('lb', 'Luxembourgish'), ('lt', 'Lithuanian'), ('lv', 'Latvian'), ('mk', 'Macedonian'), ('ml', 'Malayalam'), ('mn', 'Mongolian'), ('mr', 'Marathi'), ('my', 'Burmese'), ('nb', 'Norwegian Bokmal'), ('ne', 'Nepali'), ('nl', 'Dutch'), ('nn', 'Norwegian Nynorsk'), ('os', 'Ossetic'), ('pa', 'Punjabi'), ('pl', 'Polish'), ('pt', 'Portuguese'), ('pt-br', 'Brazilian Portuguese'), ('ro', 'Romanian'), ('ru', 'Russian'), ('sk', 'Slovak'), ('sl', 'Slovenian'), ('sq', 'Albanian'), ('sr', 'Serbian'), ('sr-latn', 'Serbian Latin'), ('sv', 'Swedish'), ('sw', 'Swahili'), ('ta', 'Tamil'), ('te', 'Telugu'), ('th', 'Thai'), ('tr', 'Turkish'), ('tt', 'Tatar'), ('udm', 'Udmurt'), ('uk', 'Ukrainian'), ('ur', 'Urdu'), ('vi', 'Vietnamese'), ('zh-cn', 'Simplified Chinese'), ('zh-hans', 'Simplified Chinese'), ('zh-hant', 'Traditional Chinese'), ('zh-tw', 'Traditional Chinese')])), ('show_signatures', models.BooleanField(default=True, verbose_name='Show signatures')), ('post_count', models.IntegerField(default=0, verbose_name='Post count', blank=True)), ('avatar', get_image_field_class()( upload_to=tendenci.apps.forums.util.FilePathGenerator( to='pybb/avatar'), null=True, verbose_name='Avatar', blank=True)), ('autosubscribe', models.BooleanField( default=True, help_text= 'Automatically subscribe to topics that you answer', verbose_name='Automatically subscribe')), ('user', annoying.fields.AutoOneToOneField(related_name='pybb_profile', verbose_name='User', to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)), ], options={ 'verbose_name': 'Profile', 'verbose_name_plural': 'Profiles', }, bases=(models.Model, ), ), migrations.CreateModel( name='Topic', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('name', models.CharField(max_length=255, verbose_name='Subject')), ('created', models.DateTimeField(null=True, verbose_name='Created')), ('updated', models.DateTimeField(null=True, verbose_name='Updated')), ('views', models.IntegerField(default=0, verbose_name='Views count', blank=True)), ('sticky', models.BooleanField(default=False, verbose_name='Sticky')), ('closed', models.BooleanField(default=False, verbose_name='Closed')), ('post_count', models.IntegerField(default=0, verbose_name='Post count', blank=True)), ('on_moderation', models.BooleanField(default=False, verbose_name='On moderation')), ('poll_type', models.IntegerField(default=0, verbose_name='Poll type', choices=[(0, 'None'), (1, 'Single answer'), (2, 'Multiple answers')])), ('poll_question', models.TextField(null=True, verbose_name='Poll question', blank=True)), ('forum', models.ForeignKey( related_name='topics', verbose_name='Forum', to='forums.Forum', on_delete=django.db.models.deletion.CASCADE)), ], options={ 'ordering': ['-created'], 'verbose_name': 'Topic', 'verbose_name_plural': 'Topics', }, bases=(models.Model, ), ), migrations.CreateModel( name='TopicReadTracker', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('time_stamp', models.DateTimeField(auto_now=True)), ('topic', models.ForeignKey( blank=True, to='forums.Topic', null=True, on_delete=django.db.models.deletion.CASCADE)), ('user', models.ForeignKey( to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.CASCADE)), ], options={ 'verbose_name': 'Topic read tracker', 'verbose_name_plural': 'Topic read trackers', }, bases=(models.Model, ), ), migrations.AlterUniqueTogether( name='topicreadtracker', unique_together=set([('user', 'topic')]), ), migrations.AddField( model_name='topic', name='readed_by', field=models.ManyToManyField(related_name='readed_topics', through='forums.TopicReadTracker', to=settings.AUTH_USER_MODEL), preserve_default=True, ), migrations.AddField( model_name='topic', name='subscribers', field=models.ManyToManyField(related_name='subscriptions', verbose_name='Subscribers', to=settings.AUTH_USER_MODEL, blank=True), preserve_default=True, ), migrations.AddField( model_name='topic', name='user', field=models.ForeignKey( verbose_name='User', to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.CASCADE), preserve_default=True, ), migrations.AddField( model_name='post', name='topic', field=models.ForeignKey( related_name='posts', verbose_name='Topic', to='forums.Topic', on_delete=django.db.models.deletion.CASCADE), preserve_default=True, ), migrations.AddField( model_name='post', name='user', field=models.ForeignKey( related_name='posts', verbose_name='User', to=settings.AUTH_USER_MODEL, on_delete=django.db.models.deletion.CASCADE), preserve_default=True, ), migrations.AlterUniqueTogether( name='pollansweruser', unique_together=set([('poll_answer', 'user')]), ), migrations.AddField( model_name='pollanswer', name='topic', field=models.ForeignKey( related_name='poll_answers', verbose_name='Topic', to='forums.Topic', on_delete=django.db.models.deletion.CASCADE), preserve_default=True, ), migrations.AlterUniqueTogether( name='forumreadtracker', unique_together=set([('user', 'forum')]), ), migrations.AddField( model_name='forum', name='readed_by', field=models.ManyToManyField(related_name='readed_forums', through='forums.ForumReadTracker', to=settings.AUTH_USER_MODEL), preserve_default=True, ), migrations.AddField( model_name='attachment', name='post', field=models.ForeignKey( related_name='attachments', verbose_name='Post', to='forums.Post', on_delete=django.db.models.deletion.CASCADE), preserve_default=True, ), ]
def forwards(self, orm): # Adding model 'PayPalPDT' db.create_table('paypal_pdt', ( ('id', models.AutoField(primary_key=True)), ('business', models.CharField(max_length=127, blank=True)), ('charset', models.CharField(max_length=32, blank=True)), ('custom', models.CharField(max_length=255, blank=True)), ('notify_version', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('parent_txn_id', models.CharField("Parent Transaction ID", max_length=19, blank=True)), ('receiver_email', models.EmailField(max_length=127, blank=True)), ('receiver_id', models.CharField(max_length=127, blank=True)), ('residence_country', models.CharField(max_length=2, blank=True)), ('test_ipn', models.BooleanField(default=False, blank=True)), ('txn_id', models.CharField("Transaction ID", max_length=19, blank=True)), ('txn_type', models.CharField("Transaction Type", max_length=128, blank=True)), ('verify_sign', models.CharField(max_length=255, blank=True)), ('address_country', models.CharField(max_length=64, blank=True)), ('address_city', models.CharField(max_length=40, blank=True)), ('address_country_code', models.CharField(max_length=64, blank=True)), ('address_name', models.CharField(max_length=128, blank=True)), ('address_state', models.CharField(max_length=40, blank=True)), ('address_status', models.CharField(max_length=11, blank=True)), ('address_street', models.CharField(max_length=200, blank=True)), ('address_zip', models.CharField(max_length=20, blank=True)), ('contact_phone', models.CharField(max_length=20, blank=True)), ('first_name', models.CharField(max_length=64, blank=True)), ('last_name', models.CharField(max_length=64, blank=True)), ('payer_business_name', models.CharField(max_length=127, blank=True)), ('payer_email', models.CharField(max_length=127, blank=True)), ('payer_id', models.CharField(max_length=13, blank=True)), ('auth_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('auth_exp', models.CharField(max_length=28, blank=True)), ('auth_id', models.CharField(max_length=19, blank=True)), ('auth_status', models.CharField(max_length=9, blank=True)), ('exchange_rate', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=16, blank=True)), ('invoice', models.CharField(max_length=127, blank=True)), ('item_name', models.CharField(max_length=127, blank=True)), ('item_number', models.CharField(max_length=127, blank=True)), ('mc_currency', models.CharField(default='USD', max_length=32, blank=True)), ('mc_fee', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('mc_gross', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('mc_handling', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('mc_shipping', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('memo', models.CharField(max_length=255, blank=True)), ('num_cart_items', models.IntegerField(default=0, null=True, blank=True)), ('option_name1', models.CharField(max_length=64, blank=True)), ('option_name2', models.CharField(max_length=64, blank=True)), ('payer_status', models.CharField(max_length=10, blank=True)), ('payment_date', models.DateTimeField(null=True, blank=True)), ('payment_gross', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('payment_status', models.CharField(max_length=9, blank=True)), ('payment_type', models.CharField(max_length=7, blank=True)), ('pending_reason', models.CharField(max_length=14, blank=True)), ('protection_eligibility', models.CharField(max_length=32, blank=True)), ('quantity', models.IntegerField(default=1, null=True, blank=True)), ('reason_code', models.CharField(max_length=15, blank=True)), ('remaining_settle', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('settle_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('settle_currency', models.CharField(max_length=32, blank=True)), ('shipping', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('shipping_method', models.CharField(max_length=255, blank=True)), ('tax', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('transaction_entity', models.CharField(max_length=7, blank=True)), ('auction_buyer_id', models.CharField(max_length=64, blank=True)), ('auction_closing_date', models.DateTimeField(null=True, blank=True)), ('auction_multi_item', models.IntegerField(default=0, null=True, blank=True)), ('for_auction', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('amount_per_cycle', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('initial_payment_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('next_payment_date', models.DateTimeField(null=True, blank=True)), ('outstanding_balance', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('payment_cycle', models.CharField(max_length=32, blank=True)), ('period_type', models.CharField(max_length=32, blank=True)), ('product_name', models.CharField(max_length=128, blank=True)), ('product_type', models.CharField(max_length=128, blank=True)), ('profile_status', models.CharField(max_length=32, blank=True)), ('recurring_payment_id', models.CharField(max_length=128, blank=True)), ('rp_invoice_id', models.CharField(max_length=127, blank=True)), ('time_created', models.DateTimeField(null=True, blank=True)), ('amount1', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('amount2', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('amount3', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('mc_amount1', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('mc_amount2', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('mc_amount3', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('password', models.CharField(max_length=24, blank=True)), ('period1', models.CharField(max_length=32, blank=True)), ('period2', models.CharField(max_length=32, blank=True)), ('period3', models.CharField(max_length=32, blank=True)), ('reattempt', models.CharField(max_length=1, blank=True)), ('recur_times', models.IntegerField(default=0, null=True, blank=True)), ('recurring', models.CharField(max_length=1, blank=True)), ('retry_at', models.DateTimeField(null=True, blank=True)), ('subscr_date', models.DateTimeField(null=True, blank=True)), ('subscr_effective', models.DateTimeField(null=True, blank=True)), ('subscr_id', models.CharField(max_length=19, blank=True)), ('username', models.CharField(max_length=64, blank=True)), ('case_creation_date', models.DateTimeField(null=True, blank=True)), ('case_id', models.CharField(max_length=14, blank=True)), ('case_type', models.CharField(max_length=24, blank=True)), ('receipt_id', models.CharField(max_length=64, blank=True)), ('currency_code', models.CharField(default='USD', max_length=32, blank=True)), ('handling_amount', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('transaction_subject', models.CharField(max_length=255, blank=True)), ('ipaddress', models.IPAddressField(blank=True)), ('flag', models.BooleanField(default=False, blank=True)), ('flag_code', models.CharField(max_length=16, blank=True)), ('flag_info', models.TextField(blank=True)), ('query', models.TextField(blank=True)), ('response', models.TextField(blank=True)), ('created_at', models.DateTimeField(auto_now_add=True)), ('updated_at', models.DateTimeField(auto_now=True)), ('from_view', models.CharField(max_length=6, null=True, blank=True)), ('amt', models.DecimalField(default=0, null=True, max_digits=64, decimal_places=2, blank=True)), ('cm', models.CharField(max_length=255, blank=True)), ('sig', models.CharField(max_length=255, blank=True)), ('tx', models.CharField(max_length=255, blank=True)), ('st', models.CharField(max_length=32, blank=True)), )) db.send_create_signal('pdt', ['PayPalPDT'])
class CustomUser(BaseUser): AUTOPLAY_ON_BROWSER = 1 AUTOPLAY_ON_LANGUAGES = 2 DONT_AUTOPLAY = 3 AUTOPLAY_CHOICES = ( (AUTOPLAY_ON_BROWSER, 'Autoplay subtitles based on browser preferred languages'), (AUTOPLAY_ON_LANGUAGES, 'Autoplay subtitles in languages I know'), (DONT_AUTOPLAY, 'Don\'t autoplay subtitles') ) homepage = models.URLField(verify_exists=False, blank=True) preferred_language = models.CharField( max_length=16, choices=ALL_LANGUAGES, blank=True) picture = S3EnabledImageField(blank=True, upload_to='pictures/') valid_email = models.BooleanField(default=False) changes_notification = models.BooleanField(default=True) follow_new_video = models.BooleanField(default=True) biography = models.TextField('Tell us about yourself', blank=True) autoplay_preferences = models.IntegerField( choices=AUTOPLAY_CHOICES, default=AUTOPLAY_ON_BROWSER) award_points = models.IntegerField(default=0) last_ip = models.IPAddressField(blank=True, null=True) #videos witch are related to user. this is for quicker queries videos = models.ManyToManyField('videos.Video', blank=True) objects = UserManager() class Meta: verbose_name = 'User' def __unicode__(self): if not self.is_active: return ugettext('Retired user') if self.first_name: if self.last_name: return self.get_full_name() else: return self.first_name return self.username def save(self, *args, **kwargs): send_confirmation = False if not self.email: self.valid_email = False elif self.pk: try: before_save = self.__class__._default_manager.get(pk=self.pk) send_confirmation = before_save.email != self.email except models.ObjectDoesNotExist: send_confirmation = True elif self.email: send_confirmation = True if send_confirmation: self.valid_email = False super(CustomUser, self).save(*args, **kwargs) if send_confirmation: EmailConfirmation.objects.send_confirmation(self) def unread_messages(self, hidden_meassage_id=None): from messages.models import Message qs = Message.objects.for_user(self).filter(read=False) try: if hidden_meassage_id: qs = qs.filter(pk__gt=hidden_meassage_id) except (ValueError, TypeError): pass return qs @classmethod def video_followers_change_handler(cls, sender, instance, action, reverse, model, pk_set, **kwargs): from videos.models import SubtitleLanguage if reverse and action == 'post_add': #instance is User for video_pk in pk_set: cls.videos.through.objects.get_or_create(video__pk=video_pk, customuser=instance, defaults={'video_id': video_pk}) elif reverse and action == 'post_remove': #instance is User for video_pk in pk_set: if not SubtitleLanguage.objects.filter(followers=instance, video__pk=video_pk).exists(): instance.videos.remove(video_pk) elif not reverse and action == 'post_add': #instance is Video for user_pk in pk_set: cls.videos.through.objects.get_or_create(video=instance, customuser__pk=user_pk, defaults={'customuser_id': user_pk}) elif not reverse and action == 'post_remove': #instance is Video for user_pk in pk_set: if not SubtitleLanguage.objects.filter(followers__pk=user_pk, video=instance).exists(): instance.customuser_set.remove(user_pk) elif reverse and action == 'post_clear': #instance is User cls.videos.through.objects.filter(customuser=instance) \ .exclude(video__subtitlelanguage__followers=instance).delete() elif not reverse and action == 'post_clear': #instance is Video cls.videos.through.objects.filter(video=instance) \ .exclude(customuser__followed_languages__video=instance).delete() @classmethod def sl_followers_change_handler(cls, sender, instance, action, reverse, model, pk_set, **kwargs): from videos.models import Video, SubtitleLanguage if reverse and action == 'post_add': #instance is User for sl_pk in pk_set: sl = SubtitleLanguage.objects.get(pk=sl_pk) cls.videos.through.objects.get_or_create(video=sl.video, customuser=instance) elif reverse and action == 'post_remove': #instance is User for sl_pk in pk_set: if not Video.objects.filter(followers=instance, subtitlelanguage__pk=sl_pk).exists(): sl = SubtitleLanguage.objects.get(pk=sl_pk) instance.videos.remove(sl.video) elif not reverse and action == 'post_add': #instance is SubtitleLanguage for user_pk in pk_set: cls.videos.through.objects.get_or_create(video=instance.video, customuser__pk=user_pk, defaults={'customuser_id': user_pk}) elif not reverse and action == 'post_remove': #instance is SubtitleLanguage for user_pk in pk_set: if not Video.objects.filter(followers__pk=user_pk, subtitlelanguage=instance).exists(): instance.video.customuser_set.remove(user_pk) elif reverse and action == 'post_clear': #instance is User cls.videos.through.objects.filter(customuser=instance) \ .exclude(video__subtitlelanguage__followers=instance).delete() elif not reverse and action == 'post_clear': #instance is SubtitleLanguage cls.videos.through.objects.filter(video=instance) \ .exclude(customuser__followed_languages__video=instance.video).delete() def get_languages(self): """ Just to control this query """ languages = cache.get('user_languages_%s' % self.pk) if languages is None: languages = self.userlanguage_set.all() cache.set('user_languages_%s' % self.pk, languages, 60*24*7) return languages def speaks_language(self, language_code): return language_code in [l.language for l in self.get_languages()] def managed_teams(self): from apps.teams.models import TeamMember return self.teams.filter(members__role=TeamMember.ROLE_MANAGER) def _get_gravatar(self, size): url = "http://www.gravatar.com/avatar/" + hashlib.md5(self.email.lower()).hexdigest() + "?" url += urllib.urlencode({'d': 'mm', 's':str(size)}) return url def _get_avatar_by_size(self, size): if self.picture: return self.picture.thumb_url(size, size) else: return self._get_gravatar(size) def avatar(self): return self._get_avatar_by_size(100) def small_avatar(self): return self._get_avatar_by_size(50) @models.permalink def get_absolute_url(self): return ('profiles:profile', [urlquote_plus(self.username)]) @property def language(self): return self.get_preferred_language_display() @models.permalink def profile_url(self): return ('profiles:profile', [self.pk]) def hash_for_video(self, video_id): return hashlib.sha224(settings.SECRET_KEY+str(self.pk)+video_id).hexdigest() @classmethod def get_anonymous(cls): return cls.objects.get(pk=settings.ANONYMOUS_USER_ID)
class Article(models.Model): topic = models.ForeignKey(Topic) text = models.TextField(u'Текст') filter = models.CharField(u'Фильтр', max_length=50, choices=[(k, k) for k in filters.keys()]) created = models.DateTimeField(default=datetime.now, db_index=True) updated = models.DateTimeField(auto_now=True, db_index=True) author = models.ForeignKey(Profile) guest_name = models.CharField(max_length=255, blank=True) deleted = models.DateTimeField(null=True, db_index=True, blank=True) spawned_to = models.OneToOneField(Topic, null=True, blank=True, related_name='spawned_from_article') spam_status = models.CharField(max_length=20, default='clean') ip = models.IPAddressField(default='127.0.0.1') votes_up = models.PositiveIntegerField(default=0, editable=False) votes_down = models.PositiveIntegerField(default=0, editable=False) voters = models.ManyToManyField(Profile, through='Vote', related_name='voted_articles') objects = ArticleManager() deleted_objects = DeletedArticleManager() class Meta: ordering = ['created'] def __unicode__(self): return u'(%s, %s, %s)' % (self.topic, self.author, self.created.replace(microsecond=0)) def delete(self): topic = self.topic super(Article, self).delete() if topic.article_set.count() == 0: topic.delete() def update_vote_counts(self): self.votes_up = self.vote_set.filter(value='up').count() self.votes_down = self.vote_set.filter(value='down').count() def html(self): ''' Возвращает HTML-текст статьи, полученный фильтрацией содержимого через указанный фильтр. ''' if self.filter in filters: result = filters[self.filter](self.text) else: result = linebreaks(escape(self.text)) return mark_safe(usertext.usertext(result)) def from_guest(self): ''' Была ли написана статья от имени гостя. Используется, в основном, в шаблонах. ''' return self.author.user.username == 'cicero_guest' def spawned(self): ''' Перенесена ли статья в новый топик. ''' return self.spawned_to_id is not None def ping_external_urls(self): ''' Пингование внешних ссылок через Pingback (http://www.hixie.ch/specs/pingback/pingback) ''' index_url = utils.absolute_url(reverse('cicero_index')) source_url = utils.absolute_url( reverse('cicero.views.topic', args=(self.topic.forum.slug, self.topic.id))) pingdjack.ping_external_urls(source_url, self.html(), index_url) def set_spam_status(self, spam_status): ''' Проставляет статус спамности, поправляя, если надо, аналогичный статус топика. Сохраняет результат в базу. ''' if self.spam_status == spam_status: return self.spam_status = spam_status self.save() if self.topic.spam_status != spam_status and self.topic.article_set.count( ) == 1: self.topic.spam_status = spam_status self.topic.save()
class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Submission', fields=[ ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), ('submission_id', models.CharField(max_length=64, default=angkot.route.utils.generate_id)), ('ip_address', models.IPAddressField(null=True, blank=True, default=None)), ('user_agent', models.CharField(null=True, blank=True, max_length=1024, default=None)), ('data_version', models.IntegerField(default=1)), ('raw_geojson', models.TextField()), ('raw_source', models.TextField(null=True, default=None, blank=True)), ('province', models.CharField(null=True, blank=True, max_length=5, choices=[('ID-AC', 'Aceh'), ('ID-SU', 'Sumatera Utara'), ('ID-SB', 'Sumatera Barat'), ('ID-RI', 'Riau'), ('ID-JA', 'Jambi'), ('ID-SS', 'Sumatera Selatan'), ('ID-BE', 'Bengkulu'), ('ID-LA', 'Lampung'), ('ID-BB', 'Kepulauan Bangka Belitung'), ('ID-KR', 'Kepulauan Riau'), ('ID-JK', 'Jakarta'), ('ID-JB', 'Jawa Barat'), ('ID-JT', 'Jawa Tengah'), ('ID-YO', 'Yogyakarta'), ('ID-JI', 'Jawa Timur'), ('ID-BT', 'Banten'), ('ID-BA', 'Bali'), ('ID-NB', 'Nusa Tenggara Barat'), ('ID-NT', 'Nusa Tenggara Timur'), ('ID-KB', 'Kalimantan Barat'), ('ID-KT', 'Kalimantan Tengah'), ('ID-KS', 'Kalimantan Selatan'), ('ID-KI', 'Kalimantan Timur'), ('ID-KU', 'Kalimantan Utara'), ('ID-SA', 'Sulawesi Utara'), ('ID-ST', 'Sulawesi Tengah'), ('ID-SN', 'Sulawesi Selatan'), ('ID-SG', 'Sulawesi Tenggara'), ('ID-GO', 'Gorontalo'), ('ID-SR', 'Sulawesi Barat'), ('ID-MA', 'Maluku'), ('ID-MU', 'Maluku Utara'), ('ID-PA', 'Papua'), ('ID-PB', 'Papua Barat')], default=None)), ('city', models.CharField(null=True, blank=True, max_length=256, default=None)), ('company', models.CharField(null=True, blank=True, max_length=256, default=None)), ('number', models.CharField(null=True, blank=True, max_length=64, default=None)), ('origin', models.CharField(null=True, blank=True, max_length=256, default=None)), ('destination', models.CharField(null=True, blank=True, max_length=256, default=None)), ('route', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326, null=True, default=None, blank=True)), ('parsed_ok', models.NullBooleanField(default=None)), ('parsed_date', models.DateTimeField(null=True, default=None, blank=True)), ('parsed_error', models.CharField(null=True, blank=True, max_length=1024, default=None)), ('source', models.CharField(null=True, blank=True, max_length=100, default=None)), ('active', models.BooleanField(default=True)), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('parent', models.ForeignKey(blank=True, null=True, to='route.Submission', default=None)), ], options={ 'ordering': ('-updated',), }, bases=(models.Model,), ), migrations.CreateModel( name='Transportation', fields=[ ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), ('province', models.CharField(max_length=5, choices=[('ID-AC', 'Aceh'), ('ID-SU', 'Sumatera Utara'), ('ID-SB', 'Sumatera Barat'), ('ID-RI', 'Riau'), ('ID-JA', 'Jambi'), ('ID-SS', 'Sumatera Selatan'), ('ID-BE', 'Bengkulu'), ('ID-LA', 'Lampung'), ('ID-BB', 'Kepulauan Bangka Belitung'), ('ID-KR', 'Kepulauan Riau'), ('ID-JK', 'Jakarta'), ('ID-JB', 'Jawa Barat'), ('ID-JT', 'Jawa Tengah'), ('ID-YO', 'Yogyakarta'), ('ID-JI', 'Jawa Timur'), ('ID-BT', 'Banten'), ('ID-BA', 'Bali'), ('ID-NB', 'Nusa Tenggara Barat'), ('ID-NT', 'Nusa Tenggara Timur'), ('ID-KB', 'Kalimantan Barat'), ('ID-KT', 'Kalimantan Tengah'), ('ID-KS', 'Kalimantan Selatan'), ('ID-KI', 'Kalimantan Timur'), ('ID-KU', 'Kalimantan Utara'), ('ID-SA', 'Sulawesi Utara'), ('ID-ST', 'Sulawesi Tengah'), ('ID-SN', 'Sulawesi Selatan'), ('ID-SG', 'Sulawesi Tenggara'), ('ID-GO', 'Gorontalo'), ('ID-SR', 'Sulawesi Barat'), ('ID-MA', 'Maluku'), ('ID-MU', 'Maluku Utara'), ('ID-PA', 'Papua'), ('ID-PB', 'Papua Barat')])), ('city', models.CharField(max_length=256)), ('company', models.CharField(null=True, blank=True, max_length=256, default=None)), ('number', models.CharField(max_length=64)), ('origin', models.CharField(null=True, blank=True, max_length=256, default=None)), ('destination', models.CharField(null=True, blank=True, max_length=256, default=None)), ('route', django.contrib.gis.db.models.fields.MultiLineStringField(srid=4326, null=True, default=None, blank=True)), ('active', models.BooleanField(default=True)), ('created', models.DateTimeField(auto_now_add=True)), ('updated', models.DateTimeField(auto_now=True)), ('submission', models.ForeignKey(blank=True, null=True, related_name='used_submission', to='route.Submission', default=None)), ], options={ }, bases=(models.Model,), ), migrations.AddField( model_name='submission', name='transportation', field=models.ForeignKey(blank=True, null=True, related_name='history', to='route.Transportation', default=None), preserve_default=True, ), migrations.AddField( model_name='submission', name='user', field=models.ForeignKey(blank=True, null=True, related_name='submitted_route', to=settings.AUTH_USER_MODEL, default=None), preserve_default=True, ), ]
class Migration(migrations.Migration): dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='BannedIP', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('ip_address', models.IPAddressField( help_text='The IP address that should be banned', verbose_name=b'IP Address')), ], options={ 'ordering': ('ip_address', ), 'verbose_name': 'Banned IP', 'verbose_name_plural': 'Banned IPs', }, bases=(models.Model, ), ), migrations.CreateModel( name='UntrackedUserAgent', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('keyword', models.CharField( help_text= 'Part or all of a user-agent string. For example, "Googlebot" here will be found in "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" and that visitor will not be tracked.', max_length=100, verbose_name='keyword')), ], options={ 'ordering': ('keyword', ), 'verbose_name': 'Untracked User-Agent', 'verbose_name_plural': 'Untracked User-Agents', }, bases=(models.Model, ), ), migrations.CreateModel( name='Visitor', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('session_key', models.CharField(max_length=40)), ('ip_address', models.CharField(max_length=20)), ('user_agent', models.CharField(max_length=255)), ('referrer', models.CharField(max_length=255)), ('url', models.CharField(max_length=255)), ('page_views', models.PositiveIntegerField(default=0)), ('session_start', models.DateTimeField()), ('last_update', models.DateTimeField()), ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True)), ], options={ 'ordering': ('-last_update', ), }, bases=(models.Model, ), ), migrations.AlterUniqueTogether( name='visitor', unique_together=set([('session_key', 'ip_address')]), ), ]
def test_random_ipaddress(self): f = models.IPAddressField() ip = random_ipaddress_maker(f)().next() ip = ip.split('.') self.assertEquals(len(ip), 4)
class Jails(Model): objects = JailsManager() jail_host = models.CharField( max_length=120, verbose_name=_("Jail Name"), ) jail_type = models.CharField( max_length=120, verbose_name=_("Type") ) jail_ipv4 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv4 address") ) jail_ipv4_netmask = models.CharField( max_length=3, choices=choices.v4NetmaskBitList, blank=True, default='', verbose_name=_("IPv4 netmask"), ) jail_alias_ipv4 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv4 aliases") ) jail_bridge_ipv4 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv4 bridge address") ) jail_bridge_ipv4_netmask = models.CharField( max_length=3, choices=choices.v4NetmaskBitList, blank=True, default='', verbose_name=_("IPv4 bridge netmask"), ) jail_alias_bridge_ipv4 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv4 bridge aliases") ) jail_defaultrouter_ipv4 = models.IPAddressField( max_length=120, blank=True, null=True, verbose_name=_("IPv4 default gateway") ) jail_ipv6 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv6 address") ) jail_ipv6_prefix = models.CharField( max_length=4, choices=choices.v6NetmaskBitList, blank=True, default='', verbose_name=_("IPv6 prefix length") ) jail_alias_ipv6 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv6 aliases") ) jail_bridge_ipv6 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv6 bridge address") ) jail_bridge_ipv6_prefix = models.CharField( max_length=4, choices=choices.v6NetmaskBitList, blank=True, default='', verbose_name=_("IPv6 bridge prefix length") ) jail_alias_bridge_ipv6 = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("IPv6 bridge aliases") ) jail_defaultrouter_ipv6 = models.GenericIPAddressField( max_length=120, blank=True, null=True, protocol='IPv6', verbose_name=_("IPv6 default gateway") ) jail_mac = models.CharField( max_length=120, blank=True, null=True, verbose_name=_("MAC") ) jail_flags = models.TextField( verbose_name=_("Sysctls"), blank=True, help_text=_("Comma delimited list of sysctl's") ) jail_autostart = models.BooleanField( max_length=120, default=True, verbose_name=_("Autostart") ) jail_status = models.CharField( max_length=120, verbose_name=_("Status") ) jail_vnet = models.BooleanField( max_length=120, default=True, verbose_name=_("VIMAGE") ) jail_nat = models.BooleanField( default=False, verbose_name=_("NAT") ) @property def jail_path(self): if self.__jail_path: return self.__jail_path else: try: jc = JailsConfiguration.objects.order_by("-id")[0] self.__jail_path = "%s/%s" % (jc.jc_path, self.jail_host) except: pass return self.__jail_path @property def jail_meta_path(self): if self.__jail_meta_path: return self.__jail_meta_path else: try: jc = JailsConfiguration.objects.order_by("-id")[0] self.__jail_meta_path = "%s/.%s.meta" % (jc.jc_path, self.jail_host) except: pass return self.__jail_meta_path def __str__(self): return str(self.jail_host) def __unicode__(self): return unicode(self.jail_host) def __init__(self, *args, **kwargs): super(Jails, self).__init__(*args, **kwargs) self.__jail_path = None self.__jail_meta_path = None if self.jail_autostart == WARDEN_AUTOSTART_ENABLED: self.jail_autostart = True elif self.jail_autostart == WARDEN_AUTOSTART_DISABLED: self.jail_autostart = False if self.jail_vnet == WARDEN_VNET_ENABLED: self.jail_vnet = True elif self.jail_vnet == WARDEN_VNET_DISABLED: self.jail_vnet = False if self.jail_nat == WARDEN_NAT_ENABLED: self.jail_nat = True elif self.jail_nat == WARDEN_NAT_DISABLED: self.jail_nat = False # # XXX # # This should probably be done in forms.py.. but for some reason, # probably related to how this model fakes out django and doesn't # use a database table (just a guess), when changing the form instance # variable, it does not reflect in the GUI. Will return to this # particular issue some other time. For now, hacky hack hacks! # # Also note, the mask/prefix is stripped here for display in the GUI, # and appended back on in the form save() method. # # XXX # if self.jail_ipv4: parts = self.jail_ipv4.split('/') self.jail_ipv4 = parts[0] if len(parts) > 1: self.jail_ipv4_netmask = parts[1] if self.jail_bridge_ipv4: parts = self.jail_bridge_ipv4.split('/') self.jail_bridge_ipv4 = parts[0] if len(parts) > 1: self.jail_bridge_ipv4_netmask = parts[1] if self.jail_ipv6: parts = self.jail_ipv6.split('/') self.jail_ipv6 = parts[0] if len(parts) > 1: self.jail_ipv6_prefix = parts[1] if self.jail_bridge_ipv6: parts = self.jail_bridge_ipv6.split('/') self.jail_bridge_ipv6 = parts[0] if len(parts) > 1: self.jail_bridge_ipv6_prefix = parts[1] def delete(self, force=False): #FIXME: Cyclic dependency from freenasUI.plugins.models import Plugins if not force: qs = Plugins.objects.filter(plugin_jail=self.jail_host) if qs.exists(): raise MiddlewareError( _("This jail is required by %d plugin(s)") % qs.count() ) Warden().delete(jail=self.jail_host, flags=WARDEN_DELETE_FLAGS_CONFIRM) def is_linux_jail(self): is_linux = False sysctl_path = "%s/sbin/sysctl" % (self.jail_path) p = pipeopen("file %s" % sysctl_path, important=False) out = p.communicate() if p.returncode != 0: return is_linux try: out = out[0] parts = out.split(',') line = parts[4] parts = line.split() line = parts[1] if re.match('(.+)?linux(.+)?', line, flags=re.I): is_linux = True except: is_linux = False return is_linux class Meta: verbose_name = _("Jails") verbose_name_plural = _("Jails")
class Migration(migrations.Migration): dependencies = [ ('contenttypes', '0001_initial'), ('auth', '0001_initial'), ] operations = [ migrations.CreateModel( name='User', fields=[ ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), ('password', models.CharField(max_length=128, verbose_name='password')), ('last_login', models.DateTimeField(default=django.utils.timezone.now, verbose_name='last login')), ('is_superuser', models.BooleanField( help_text= 'Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status', default=False)), ('username', models.CharField( help_text= 'Required. 30 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=30, validators=[ django.core.validators.RegexValidator( '^[\\w.@+-]+$', 'Enter a valid username.', 'invalid') ], unique=True, verbose_name='username')), ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=30, verbose_name='last name')), ('email', models.EmailField(blank=True, max_length=75, verbose_name='email address')), ('is_staff', models.BooleanField( help_text= 'Designates whether the user can log into this admin site.', verbose_name='staff status', default=False)), ('is_active', models.BooleanField( help_text= 'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active', default=True)), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('groups', models.ManyToManyField( blank=True, help_text= 'The groups this user belongs to. A user will get all permissions granted to each of his/her group.', related_name='user_set', related_query_name='user', to='auth.Group', verbose_name='groups')), ('user_permissions', models.ManyToManyField( blank=True, help_text='Specific permissions for this user.', related_name='user_set', related_query_name='user', to='auth.Permission', verbose_name='user permissions')), ], options={ 'verbose_name': 'user', 'verbose_name_plural': 'users', 'abstract': False, }, bases=(models.Model, ), ), migrations.CreateModel( name='Album', fields=[ ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), ('uuid', models.CharField(blank=True, default=uuid.uuid4, max_length=64, editable=False)), ('slug', autoslug.fields.AutoSlugField(editable=False)), ('name', models.CharField(blank=True, max_length=80, null=True)), ('fiat_price', models.DecimalField( help_text= 'Will be automatically converted to the Bitcoin on the moment of purchase', default=Decimal('0'), decimal_places=2, verbose_name='Price in your local currency', max_digits=16, validators=[ django.core.validators.MinValueValidator( Decimal('0.01')) ])), ('visible', models.BooleanField( help_text= 'Uncheck this to make the item disappear from your store. The site still retains the copy of this item for a while before it is permanently deleted.', verbose_name='Visible / deleted', default=True)), ('description', models.TextField(blank=True, null=True)), ('cover', easy_thumbnails.fields.ThumbnailerImageField( blank=True, help_text='Cover art as JPEG file', null=True, upload_to=tatianastore.models.filename_gen('covers/'), verbose_name='Cover art')), ('download_zip', models.FileField( blank=True, help_text= 'A ZIP file which the user can download after he/she has paid for the full album', null=True, upload_to=tatianastore.models.filename_gen('songs/'), verbose_name='Album download ZIP')), ], options={ 'abstract': False, }, bases=(models.Model, ), ), migrations.CreateModel( name='DownloadTransaction', fields=[ ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), ('customer_email', models.CharField(blank=True, max_length=64, null=True)), ('session_id', models.CharField(blank=True, max_length=64, null=True)), ('description', models.CharField(blank=True, default='', max_length=256, editable=False)), ('uuid', models.CharField(blank=True, default=uuid.uuid4, max_length=64, editable=False)), ('created_at', models.DateTimeField(auto_now_add=True)), ('currency', models.CharField(blank=True, max_length=5, null=True)), ('user_currency', models.CharField(blank=True, max_length=5, null=True)), ('btc_address', models.CharField(blank=True, max_length=50, null=True)), ('btc_amount', models.DecimalField(default=Decimal('0'), max_digits=16, decimal_places=8)), ('fiat_amount', models.DecimalField(default=Decimal('0'), max_digits=16, decimal_places=2)), ('payment_source', models.CharField(max_length=32)), ('btc_received_at', models.DateTimeField(blank=True, null=True)), ('manually_confirmed_received_at', models.DateTimeField(blank=True, null=True)), ('received_transaction_hash', models.CharField(blank=True, max_length=256, null=True)), ('cancelled_at', models.DateTimeField(blank=True, null=True)), ('expires_at', models.DateTimeField(blank=True, null=True)), ('expired_at', models.DateTimeField(blank=True, null=True)), ('ip', models.IPAddressField(blank=True, null=True)), ('credited_at', models.DateTimeField(blank=True, null=True)), ('credit_transaction_hash', models.CharField(blank=True, max_length=256, null=True)), ], options={}, bases=(models.Model, ), ), migrations.CreateModel( name='DownloadTransactionItem', fields=[ ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), ('object_id', models.PositiveIntegerField()), ('content_type', models.ForeignKey(to='contenttypes.ContentType')), ('transaction', models.ForeignKey(to='tatianastore.DownloadTransaction')), ], options={}, bases=(models.Model, ), ), migrations.CreateModel( name='Song', fields=[ ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), ('uuid', models.CharField(blank=True, default=uuid.uuid4, max_length=64, editable=False)), ('slug', autoslug.fields.AutoSlugField(editable=False)), ('name', models.CharField(blank=True, max_length=80, null=True)), ('fiat_price', models.DecimalField( help_text= 'Will be automatically converted to the Bitcoin on the moment of purchase', default=Decimal('0'), decimal_places=2, verbose_name='Price in your local currency', max_digits=16, validators=[ django.core.validators.MinValueValidator( Decimal('0.01')) ])), ('visible', models.BooleanField( help_text= 'Uncheck this to make the item disappear from your store. The site still retains the copy of this item for a while before it is permanently deleted.', verbose_name='Visible / deleted', default=True)), ('download_mp3', models.FileField( blank=True, help_text= 'The downloaded content how the user gets it after paying for it.', null=True, upload_to=tatianastore.models.filename_gen('songs/'), verbose_name='MP3 file')), ('prelisten_mp3', models.FileField( blank=True, help_text= 'For Safari and IE browsers. Leave empty: This will be automatically generated from uploaded song.', null=True, upload_to=tatianastore.models.filename_gen('prelisten/'), verbose_name='Prelisten clip MP3 file')), ('prelisten_vorbis', models.FileField( blank=True, help_text= 'For Chrome and Firefox browsers. Leave empty: This will be automatically generated from uploaded song.', null=True, upload_to=tatianastore.models.filename_gen('prelisten/'), verbose_name='Prelisten clip Ogg Vorbis file')), ('duration', models.FloatField(blank=True, null=True)), ('order', models.IntegerField(blank=True, null=True)), ('album', models.ForeignKey( blank=True, help_text= 'On which album this song belongs to. Leave empty for an albumless song. (You can reorder the songs when you edit the album after uploading the songs.)', to='tatianastore.Album', null=True, verbose_name='Album')), ], options={ 'ordering': ('order', '-id'), }, bases=(models.Model, ), ), migrations.CreateModel( name='Store', fields=[ ('id', models.AutoField(serialize=False, primary_key=True, auto_created=True, verbose_name='ID')), ('slug', autoslug.fields.AutoSlugField(editable=False)), ('name', models.CharField(blank=True, max_length=80, null=True)), ('currency', models.CharField( help_text= 'Currency code for your local currency which you user to price your albums and songs', max_length=5, verbose_name='Currency', default='USD')), ('store_url', models.URLField( help_text='Link to home page or Facebook page', verbose_name='Homepage')), ('btc_address', models.CharField( blank=True, help_text= 'Receiving address where the purchases will be credited. If you do not have Bitcoin wallet yet you can leave this empty - the site will keep your coins until you get your own wallet.', max_length=50, default=None, null=True, verbose_name='Bitcoin address')), ('extra_html', models.TextField( blank=True, help_text= 'Style your shop with extra HTML code placed for the site embed <iframe>. Please ask your webmaster for the details. This can include CSS <style> tag for the formatting purposes.', null=True, verbose_name='Store styles code', default='')), ('extra_facebook_html', models.TextField( blank=True, help_text= 'Style your shop with extra HTML code placed on the shop when it is on a Facebook page.', null=True, verbose_name='Facebook styles code', default='')), ('facebook_data', jsonfield.fields.JSONField( default={}, verbose_name='Facebook page info')), ('operators', models.ManyToManyField(to=settings.AUTH_USER_MODEL, related_name='operated_stores')), ], options={}, bases=(models.Model, ), ), migrations.AddField( model_name='song', name='store', field=models.ForeignKey(to='tatianastore.Store'), preserve_default=True, ), migrations.AddField( model_name='downloadtransaction', name='store', field=models.ForeignKey(to='tatianastore.Store', null=True), preserve_default=True, ), migrations.AddField( model_name='album', name='store', field=models.ForeignKey(to='tatianastore.Store'), preserve_default=True, ), ]
class DhcpdSettings(models.Model): class Meta: verbose_name = 'DHCP daemon settings' enabled = models.BooleanField(default=False) authoritative = models.BooleanField(default=False) dns = models.CharField( _("Domain name server (domain-name-servers)"), max_length=100, blank=True, null=True, ) domain_name = models.CharField( _("Domain name (domain-name)"), max_length=100, blank=True, null=True, ) subnet = models.CharField( _("Subnet"), max_length=100, blank=True, null=True, ) netmask = models.CharField( _("Netmask"), max_length=100, blank=True, null=True, ) routers = models.CharField( _("Routers (routers)"), max_length=100, blank=True, null=True, ) broadcast_address = models.CharField( _("Broadcast address (broadcast-address)"), max_length=100, blank=True, null=True, ) broadcast_address = models.CharField( _("Broadcast address (broadcast-address)"), max_length=100, blank=True, null=True, ) range_min = models.IPAddressField(blank=True, null=True) range_max = models.IPAddressField(blank=True, null=True) default_lease_time = models.IntegerField( _("Default lease time (default-lease-time)"), blank=True, null=True, ) max_lease_time = models.IntegerField( _("Max lease time (max-lease-time)"), blank=True, null=True, ) def save(self, *args, **kwargs): get_status().mark_as_changed() super(DhcpdSettings, self).save(*args, **kwargs)
class Comment(models.Model): authenticated = models.BooleanField() author = models.ForeignKey(UserProfile, blank=True, null=True) text = models.TextField() status = models.IntegerField(choices=COMMENT_STATUS, default=4) nickname = models.CharField(max_length=128, blank=True, null=True) email = models.EmailField(blank=True, null=True) ip = models.IPAddressField(default='127.0.1.2') url = models.URLField(blank=True, null=True) referenced = models.ForeignKey("self", related_name="referencing", blank=True, null=True, verbose_name="Bezug auf") post = models.ForeignKey(Post, related_name='comments') date = models.DateTimeField('geschrieben am') template = loader.get_template('blog/comment.html') # filter what states (__gte) should be displayed public display_states_above = 6 class Meta: db_table = 'blog_comment' get_latest_by = 'date' ordering = ['date'] verbose_name = 'Kommentar' verbose_name_plural = 'Kommentare' #some kind of poor-mans spamfilter #maybe someday i will be bored enough to compile a list of bad words def autodecide_status(self): #Filter based on previous comments with same text blocked = Comment.objects.filter(text=self.text, status__in=[1, 0, 2]).count() if blocked >= 1: self.status = 1 else: #Filter based on previous comments, allready moderated by admin blocked = Comment.objects.filter(email=self.email, status=0).count() blocked = blocked + Comment.objects.filter(url=self.url, status=0).count() allowed = Comment.objects.filter(email=self.email, status=7).count() #pessimistic aproach: noone is allowed to post, except he is NOT categorized as spam #yeah.. this was optimistic before.. who might have guessed if (blocked >= allowed): self.status = 1 else: self.status = 6 return self.status fh = codecs.open(SPAMFILTER_URLS, encoding='utf-8') for line in fh.readlines(): if (line[:-1] in self.url): raise PermissionDenied() # referer = request.META.get('HTTP_REFERER', '') # if (referer == u"-"): # raise PermissionDenied() fh = codecs.open(SPAMFILTER_WORDS, encoding='utf-8') text_count = 0 name_count = 0 for line in fh.readlines(): if (line[:-1] in self.text): text_count += 1 if (line[:-1] in self.nickname): name_count += 1 if (name_count >= SPAMFILTER_WORDS_NAME_MAX or text_count >= SPAMFILTER_WORDS_TEXT_MAX): raise PermissionDenied() c = Counter(re.findall(r"href=", self.text.lower())) if c['href='] >= 6: raise PermissionDenied() if len(re.findall(r"https?://", self.text.lower())) > 10: raise PermissionDenied() return self.status #we need to fill a comment from an user-object... maybe via User->UserProfile def fill_from_user(self, user): if (user.is_authenticated()): self.authenticated = True try: profile = UserProfile.objects.get(user=user) self.author = profile except: self.nickname = user.username self.url = reverse('webchao.blog.views.byAuthor', args=[user.username]) self.email = user.email self.status = 6 else: self.authenticated = False self.autodecide_status() self.date = datetime.datetime.now() def get_author_nickname(self): if (self.authenticated and not self.nickname): if (self.author.nickname): return self.author.nickname else: return self.author.user.username else: return self.nickname def __unicode__(self): return '#%s von %s' % (self.id, self.get_author_nickname()) def render(self): c = Context({ 'comment': self, 'nickname': self.get_author_nickname(), 'references': self.referencing.filter(status__gte=self.display_states_above), }) return self.template.render(c) def get_absolute_url(self, byId=True): return "%s#comment_%s" % (self.post.get_absolute_url(byId), self.id)
class Migration(migrations.Migration): dependencies = [] operations = [ migrations.CreateModel( name='Group', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('enabled', models.BooleanField(default=True)), ('name', models.CharField(max_length=200)), ('temp_dir', models.CharField(max_length=200)), ('nginx_dir', models.CharField(max_length=200)), ('ldirectord_conf', models.CharField(max_length=200)), ('graph_dir', models.CharField(max_length=200)), ('varnish_dir', models.CharField(max_length=200)), ('admin_port', models.IntegerField(default=8000, null=True, blank=True)), ('app_path', models.CharField(default=b'/usr/local/src/lbmanager', max_length=200)), ('enable_transfer', models.BooleanField(default=True)), ('enable_reload', models.BooleanField(default=True)), ('last_update', models.DateTimeField(null=True, blank=True)), ('last_apply', models.DateTimeField(null=True, blank=True)), ('version', models.IntegerField(default=0)), ], options={ 'verbose_name': 'Group', }, bases=(models.Model, ), ), migrations.CreateModel( name='Server', fields=[ ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)), ('enabled', models.BooleanField(default=True)), ('name', models.CharField(max_length=200)), ('address', models.IPAddressField()), ('ssh_user', models.CharField(max_length=200, null=True, blank=True)), ('ssh_password', models.CharField(max_length=200, null=True, blank=True)), ('ssh_port', models.IntegerField(default=22, null=True, blank=True)), ('role_cluster', models.BooleanField(default=False)), ('role_backend', models.BooleanField(default=False)), ('role_frontend', models.BooleanField(default=False)), ], options={ 'verbose_name': 'Server', }, bases=(models.Model, ), ), migrations.AddField( model_name='group', name='cluster_servers', field=models.ManyToManyField(to='config.Server', null=True, blank=True), preserve_default=True, ), # migrations.RunPython(loadfixture), ]
class PeeringPoint(models.Model): class Meta: verbose_name = "Peering Point" verbose_name_plural = "Peering Points" db_table = "peer_peeringpoint" app_label = "peer" # @todo: Replace with managed object hostname = models.CharField("FQDN", max_length=64, unique=True) location = models.CharField("Location", max_length=64, blank=True, null=True) local_as = models.ForeignKey(AS, verbose_name="Local AS") router_id = models.IPAddressField("Router-ID", unique=True) # @todo: Replace with managed object profile = DocumentReferenceField(Profile, null=False, blank=False) communities = models.CharField("Import Communities", max_length=128, blank=True, null=True) enable_prefix_list_provisioning = models.BooleanField( "Enable Prefix-List Provisioning", default=False) prefix_list_notification_group = models.ForeignKey( NotificationGroup, verbose_name="Prefix List Notification Group", null=True, blank=True) def __unicode__(self): if self.location: return u" %s (%s)" % (self.hostname, self.location) else: return self.hostname def sync_cm_prefix_list(self): from noc.cm.models.prefixlist import PrefixList peers_pl = set() peers_pl.update([ p.import_filter_name for p in self.peer_set.filter(import_filter_name__isnull=False) if p.import_filter_name.strip() ]) peers_pl.update([ p.export_filter_name for p in self.peer_set.filter(export_filter_name__isnull=False) if p.export_filter_name.strip() ]) h = self.hostname + "/" l_h = len(h) for p in PrefixList.objects.filter(repo_path__startswith=h): pl = p.path[l_h:] if pl not in peers_pl: p.delete() else: del peers_pl[pl] for pl in peers_pl: PrefixList(repo_path=h + pl).save() @property def generated_prefix_lists(self): """ Returns a list of (prefix-list-name, rpsl-filter) """ pls = {} for pr in self.peer_set.all(): if pr.import_filter_name: pls[pr.import_filter_name] = pr.import_filter if pr.export_filter_name: pls[pr.export_filter_name] = pr.export_filter return pls.items() @property def rpsl(self): ifaddrs = set() peers = {} for p in self.peer_set.all(): ifaddrs.add(p.local_ip) peers[p.remote_ip, p.remote_asn] = None if p.local_backup_ip and p.remote_backup_ip: ifaddrs.add(p.local_backup_ip) peers[p.remote_backup_ip, p.remote_asn] = None s = [] s += ["inet-rtr: %s" % self.hostname] s += ["local-as: AS%d" % self.local_as.asn] for ip in sorted(ifaddrs): if "/" in ip: ip, masklen = ip.split("/") else: masklen = "30" s += ["ifaddr: %s masklen %s" % (ip, masklen)] for remote_ip, remote_as in sorted(peers.keys(), key=lambda x: x[0]): if "/" in remote_ip: remote_ip, masklen = remote_ip.split("/") s += ["peer: BGP4 %s asno(%s)" % (remote_ip, remote_as)] return rpsl_format("\n".join(s))
class FieldsType(models.Model): #一个IntegerField 根据实际ID自动增长 auto_field = models.AutoField(primary_key=True) # unique identifiers. a good alternative to autoField for primary_key. # the database will not generate the uuid for , so it is recommended to use default # When used on PostgreSQL, this stores in a uuid datatype, otherwise in a char(32) import uuid uuid_field = models.UUIDField(default=uuid.uuid4, editable=False) # 这是一个用来存储原始二进制码的Field. 只支持bytes 声明 binarg_field = models.BinaryField() # class CharField(max_length=None[, **options])¶ # 必填参数中max_length. from widget:TextInput char_field = models.CharField(max_length=512) # a large text field. form widget:Textarea text_field = models.TextField() # 一个 true/false 字段。 # 此字段的默认表单挂件是一个CheckboxInput. boolean_field = models.BooleanField() # Like a BooleanField, but allows NULL as one of the options. # 如果Field.default没有指定的话, BooleanField 的默认值是 None # Use this instead of a BooleanField with null=True. null_boolean_field = models.NullBooleanField() # A floating-point number represented in Python by a float instance. float_field = models.FloatField() # Values from -32768 to 32767 small_integer_field = models.SmallIntegerField() # values from -2147483648 to 2147483647 are safe in all databases。 integer_field = models.IntegerField() # 64位整数 values from -9223372036854775808 to 9223372036854775807之间. # default form widget:TextInput. big_integer_field = models.BigIntegerField() # Values from 0 to 2147483647 are safe in all databases supported by Django. positive_integer_field = models.PositiveIntegerField() # Values from 0 to 32767 are safe in all databases supported by Django. positive_small_integer_field = models.PositiveSmallIntegerField() # class CommaSeparatedIntegerField(max_length=None[, **options])¶ # A field of integers separated by commas. 一个逗号分隔的整数字段。像 CharField一样, 需要一个max_length 参数 comma_separated_integer_field = models.CommaSeparatedIntegerField( max_length=512) # class DateField([auto_now=False, auto_now_add=False, **options])¶ # represented in python by a datetime.time instance # auto_now. Automatically set the field to now every time the object is saved. # auto_now_add. Automatically set the field to now when the object is first created. # from widget:TextInput # 在目前的实现中,设置auto_now或者auto_now_add为True将为让这个字段同时得到editable=False和blank=True这两个设置. import datetime date_field = models.DateField(auto_now=datetime.datetime.now) #class TimeField([auto_now=False, auto_now_add=False, **options]) time_field = models.TimeField(auto_now=datetime.datetime.now) # class DateTimeField([auto_now=False, auto_now_add=False, **options])¶ # A date and time, represented in Python by a datetime.datetime instance. # form widget:TextInput date_time_field = models.DateTimeField(auto_now_add=datetime.datetime.now) # A field for storing periods of time - modeled in Python by timedelta. # When used on PostgreSQL, the data type used is an interval and # on Oracle the data type is INTERVAL DAY(9) TO SECOND(6). # Otherwise a bigint of microseconds is used. duration_field = models.DurationField() # class DecimalField(max_digits=None, decimal_places=None[, **options])¶ # A fixed-precision decimal number, represented in Python by a Decimal instance. # max_digits. The maximum number of digits allowed in the number. this number must be >= decimal_places. # decimal_places. The number of decimal places to store with the number. decimal_field = models.DecimalField(max_digits=9, decimal_places=2) # class EmailField([max_length=254, **options]) # A CharField that checks that the value is a valid email address. # It uses EmailValidator to validate the input. # The default max_length was increased from 75 to 254 in order to be compliant with RFC3696/5321. email_field = models.EmailField() # if you don't specify max_length , a default of 200 is used # the default form widget for this field is a TextInput url_field = models.URLField( ) # class URLField([max_length=200, **options])¶ # class FileField([upload_to=None, max_length=100, **options])¶. # upload_to may contain strftime() formatting, which will be replaced by the date/time of the file upload. # When you access a FileField on a model, # you are given an instance of FieldFile as a proxy for accessing the underlying file. # In addition to the functionality inherited from django.core.files.File, # this class has several attributes and methods that can be used to interact with file data: # FieldFile.url, FieldFile.open(mode='rb'), FieldFile.close(), # FieldFile.save(name, content, save=True), FieldFile.delete(save=True) # default form wedget:ClearableFileInput. file_field = models.FileField(upload_to='files/%Y/%m/%d') # class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])¶ # In addition to the special attributes that are available for FileField, # an ImageField also has height and width attributes. image_field = models.ImageField(upload_to='/upload_to/images', height_field=100, width_field=100) # class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])¶ # FilePathField instances are created in database as varchar columns # recursive. specifies whether all subdirectories of path should be included # allow_files. specifies whether files in the specified location should be included. default True # allow_folders. specifies whether folders in the specified location should be included. default False # Either this or allow_folders must be True. file_path_field = models.FilePathField(path='/upload_to/images', match='.*.jpg', recursive=True) # Deprecated since version 1.7. so use GenericIPAddressField instead of it. # form widget:TextInput. ip_address_field = models.IPAddressField() # class GenericIPAddressField([protocol=both, unpack_ipv4=False, **options])¶ # An IPv4 or IPv6 address, in string format (e.g. 192.0.2.30 or 2a02:42fe::4). # form widget:TextInput. genericl_ip_address_field = models.GenericIPAddressField() slug_field = models.SlugField( ) # class SlugField([max_length=50, **options])¶ class Meta: db_table = 'fields_learning'
class Tracker(models.Model): user = models.ForeignKey(User) submitted_date = models.DateTimeField('date submitted', default=timezone.now) tracker_date = models.DateTimeField('date tracked', default=timezone.now) ip = models.IPAddressField() agent = models.TextField(blank=True) digest = models.CharField(max_length=100) data = models.TextField(blank=True) course = models.ForeignKey(Course, null=True, blank=True, default=None) type = models.CharField(max_length=10, null=True, blank=True, default=None) completed = models.BooleanField(default=False) time_taken = models.IntegerField(default=0) activity_title = models.TextField(blank=True, null=True, default=None) section_title = models.TextField(blank=True, null=True, default=None) uuid = models.TextField(blank=True, null=True, default=None) lang = models.CharField(max_length=10, null=True, blank=True, default=None) class Meta: verbose_name = _('Tracker') verbose_name_plural = _('Trackers') def __unicode__(self): return self.agent def is_first_tracker_today(self): olddate = timezone.now() + datetime.timedelta(hours=-24) no_attempts_today = Tracker.objects.filter( user=self.user, digest=self.digest, completed=True, submitted_date__gte=olddate).count() if no_attempts_today == 1: return True else: return False def get_activity_type(self): activities = Activity.objects.filter(digest=self.digest) for a in activities: return a.type media = Media.objects.filter(digest=self.digest) for m in media: return "media" return None def get_media_title(self): media = Media.objects.filter(digest=self.digest) for m in media: return m.filename return None def get_activity_title(self, lang='en'): media = Media.objects.filter(digest=self.digest) for m in media: return m.filename try: titles = json.loads(self.activity_title) if lang in titles: return titles[lang] else: for l in titles: return titles[l] except: pass return self.activity_title def get_section_title(self, lang='en'): try: titles = json.loads(self.section_title) if lang in titles: return titles[lang] else: for l in titles: return titles[l] except: pass return self.section_title def activity_exists(self): activities = Activity.objects.filter(digest=self.digest).count() if activities >= 1: return True media = Media.objects.filter(digest=self.digest).count() if media >= 1: return True return False @staticmethod def has_completed_trackers(course, user): count = Tracker.objects.filter(user=user, course=course, completed=True).count() if count > 0: return True return False @staticmethod def to_xml_string(course, user): doc = Document() trackerXML = doc.createElement('trackers') doc.appendChild(trackerXML) trackers = Tracker.objects.filter( user=user, course=course, completed=True).values('digest').annotate( max_tracker=Max('submitted_date')) for t in trackers: track = doc.createElement('tracker') track.setAttribute('digest', t['digest']) track.setAttribute('submitteddate', t['max_tracker'].strftime('%Y-%m-%d %H:%M:%S')) trackerXML.appendChild(track) return doc.toxml() @staticmethod def activity_views(user, type, start_date=None, end_date=None, course=None): results = Tracker.objects.filter(user=user, type=type) if start_date: results = results.filter(submitted_date__gte=start_date) if end_date: results = results.filter(submitted_date__lte=end_date) if course: results = results.filter(course=course) return results.count() @staticmethod def activity_secs(user, type, start_date=None, end_date=None, course=None): results = Tracker.objects.filter(user=user, type=type) if start_date: results = results.filter(submitted_date__gte=start_date) if end_date: results = results.filter(submitted_date__lte=end_date) if course: results = results.filter(course=course) time = results.aggregate(total=Sum('time_taken')) if time['total'] is None: return 0 return time['total'] def get_lang(self): try: json_data = json.loads(self.data) except ValueError: return None if 'lang' in json_data: return json_data['lang']
class Host(models.Model): hostname = models.CharField(max_length=50) ip = models.IPAddressField()