Esempio n. 1
0
class Enventure(MPTTModel):
    name = models.CharField(max_length=50)
    parent = TreeForeignKey('self',
                            blank=True,
                            null=True,
                            related_name='children')
    code = models.CharField(max_length=8, blank=True, null=True)
    location = LocationField(based_fields=['place'],
                             zoom=7,
                             default=Point(1.0, 1.0))
    place = models.CharField(max_length=100, null=True, blank=True)
    phoneNumber = models.CharField(max_length=200, null=True, blank=True)
    email = models.EmailField(max_length=200, blank=True)
    age = models.IntegerField(default=0, blank=True, null=True)
    district = models.CharField(max_length=200, blank=True, null=True)
    is_active = models.NullBooleanField()
    dashboardAccess = models.NullBooleanField()
    account_type = models.CharField(max_length=200, blank=True, null=True)
    address = models.CharField(max_length=200, blank=True, null=True)
    gender = models.CharField(max_length=200, blank=True, null=True)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    def accounts(self):
        #sorting?
        return self.account_objects.all()

    def get_account(self, name):
        return self.account_objects.get(name=name)
Esempio n. 2
0
class Petition(gis_models.Model):
    title = models.CharField(max_length=100)
    description = models.TextField()
    address_to = models.CharField(default='Pulchowk campus', max_length=20)
    img = models.FileField(default='gallery/construction.jpeg',
                           upload_to='gallery/',
                           null=True,
                           blank=True)
    city = models.CharField(max_length=20, default='kathmandu')
    date_posted = models.DateTimeField(default=timezone.now)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    location = LocationField(based_fields=['pulchowk campus'],
                             zoom=7,
                             default=Point(85.3178166, 27.6828417))

    class Meta:
        ordering = ['-date_posted']

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('petition-home')

    def total_upvotes(self):
        return self.upvotes.count()
Esempio n. 3
0
class Event(models.Model):
    name = models.CharField(max_length=255)
    description = models.TextField()
    location = models.CharField(max_length=255)
    start_time = models.DateTimeField(db_index=True)
    end_time = models.DateTimeField()
    url = models.URLField(blank=True)
    lat_lng = LocationField(based_fields=['location'], zoom=7)
    # lat = models.FloatField(null=True)
    # lng = models.FloatField(null=True)
    country_code = models.CharField(max_length=2, blank=True)
    continent_code = models.CharField(max_length=2, null=True)
    place = models.ForeignKey('place.Place', blank=True, null=True)
    slug = models.SlugField()
    image = models.FileField(upload_to="events/photos",
                             null=False,
                             blank=False)
    investors = models.ManyToManyField(Investor, blank=True)
    startups = models.ManyToManyField(Startup, blank=True)
    objects = EventManager()

    class Meta:
        ordering = ('start_time', )

    def __str__(self):
        return self.name

    @property
    def day_of_month(self):
        return self.start_time.strftime('%d')

    @property
    def month_abbr(self):
        """Return the abbreviated month name with the abbr html tag."""
        # for l10n, the abbreviated month strings include the tag
        return u'<abbr>{0:%b}</abbr>'.format(self.start_time)

    def get_absolute_url(self):
        return reverse('events:event', kwargs={
            'event': self.slug,
        })

    def get_main_photo(self):
        return self.image.url

    def get_title(self):
        return self.name

    def indexing(self):
        from .search_indexes import EventIndex
        from config.es_client import es_client
        # EventIndex.init(using=es_client)
        obj = EventIndex(
            meta={'id': self.id},
            name=self.name,
            start_time=self.start_time,
            description=self.description,
        )
        obj.save(using=es_client)
        return obj.to_dict(include_meta=True)
Esempio n. 4
0
class ProfileForm(forms.ModelForm):
    city= forms.CharField(widget= forms.TextInput
                           (attrs={'id':'city'}))
    location = LocationField(based_fields=['city'], zoom=7, default=Point(1.0, 1.0))
    class Meta:
        model = Profile
        fields = ['forename','city','location','claim','phonenumber','app_usage','sex','sexuality','birthday','figure','height','bust_size','languages','app_language','intrests','best_food','drinks','occupation','dress_style','upfront_booking','minimum_booking','custom_travel_from_price','price','scent','rating','upfront_booking_for_travels','minimum_booking_for_travels','meetup_location','booking_notes','travel_types','adult','profile_pic']
Esempio n. 5
0
class Location(geo_models.Model):
    city = models.CharField(max_length=255)
    location = LocationField()
    org = models.ForeignKey(Organisation, null=True)

    def __str__(self):
        return self.city
Esempio n. 6
0
class Facility(FacilityBaseModel):
    name = models.CharField(max_length=1000, blank=False, null=False)
    is_active = models.BooleanField(default=True)
    verified = models.BooleanField(default=False)
    district = models.IntegerField(choices=DISTRICT_CHOICES, blank=False)
    new_district = models.ForeignKey(District,
                                     on_delete=models.PROTECT,
                                     null=True,
                                     blank=True)
    local_body = models.ForeignKey(LocalBody,
                                   on_delete=models.PROTECT,
                                   null=True,
                                   blank=True)
    facility_type = models.IntegerField(choices=FACILITY_TYPES)
    address = models.TextField()
    location = LocationField(based_fields=["address"],
                             zoom=7,
                             blank=True,
                             null=True)
    oxygen_capacity = models.IntegerField(default=0)
    phone_number = models.CharField(max_length=14,
                                    blank=True,
                                    validators=[phone_number_regex])
    corona_testing = models.BooleanField(default=False)
    created_by = models.ForeignKey(User,
                                   on_delete=models.SET_NULL,
                                   null=True,
                                   blank=True)

    def __str__(self):
        return f"{self.name}, {DISTRICT_CHOICES[self.district - 1][1]}"

    class Meta:
        verbose_name_plural = "Facilities"
Esempio n. 7
0
class Facility(commons_models.TimeStampModel, commons_models.AddressModel):
    name = models.CharField(max_length=1000)
    facility_code = models.CharField(max_length=50)
    facility_type = models.ForeignKey(FacilityType, on_delete=models.CASCADE)
    owned_by = models.ForeignKey(commons_models.OwnershipType,
                                 on_delete=models.CASCADE)
    location = LocationField(based_fields=["address"],
                             zoom=7,
                             blank=True,
                             null=True)
    local_body = models.ForeignKey(
        accounts_models.LocalBody,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
    )
    phone_number = models.CharField(
        max_length=14,
        blank=True,
        validators=[commons_validators.phone_number_regex])
    corona_testing = models.BooleanField(default=False)
    created_by = models.ForeignKey(User,
                                   on_delete=models.CASCADE,
                                   null=True,
                                   blank=True)
    total_patient = models.PositiveIntegerField(default=0)
    positive_patient = models.PositiveIntegerField(default=0)
    negative_patient = models.PositiveIntegerField(default=0)

    users = models.ManyToManyField(
        User,
        through="FacilityUser",
        related_name="facilities",
        through_fields=("facility", "user"),
    )

    class Meta:
        verbose_name_plural = "Facilities"

    def __str__(self):
        return f"{self.name}"

    def save(self, *args, **kwargs) -> None:
        """
        While saving, if the local body is not null, then district will be local body's district
        Overriding save will help in a collision where the local body's district and district fields are different.
        """
        if self.local_body is not None:
            self.district = self.local_body.district
        if self.district is not None:
            self.state = self.district.state

        is_create = self.pk is None
        super().save(*args, **kwargs)

        if is_create:
            FacilityUser.objects.create(facility=self,
                                        user=self.created_by,
                                        created_by=self.created_by)
Esempio n. 8
0
class Facility(FacilityBaseModel, FacilityPermissionMixin):
    name = models.CharField(max_length=1000, blank=False, null=False)
    is_active = models.BooleanField(default=True)
    verified = models.BooleanField(default=False)
    facility_type = models.IntegerField(choices=FACILITY_TYPES)

    location = LocationField(based_fields=["address"], zoom=7, blank=True, null=True)
    pincode = models.IntegerField(default=None, null=True)
    address = models.TextField()
    local_body = models.ForeignKey(LocalBody, on_delete=models.SET_NULL, null=True, blank=True)
    district = models.ForeignKey(District, on_delete=models.SET_NULL, null=True, blank=True)
    state = models.ForeignKey(State, on_delete=models.SET_NULL, null=True, blank=True)

    oxygen_capacity = models.IntegerField(default=0)
    phone_number = models.CharField(max_length=14, blank=True, validators=[phone_number_regex])
    corona_testing = models.BooleanField(default=False)
    created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)

    users = models.ManyToManyField(
        User, through="FacilityUser", related_name="facilities", through_fields=("facility", "user"),
    )

    class Meta:
        verbose_name_plural = "Facilities"

    def __str__(self):
        return f"{self.name}"

    def has_object_destroy_permission(self, request):
        return request.user.is_superuser

    def save(self, *args, **kwargs) -> None:
        """
        While saving, if the local body is not null, then district will be local body's district
        Overriding save will help in a collision where the local body's district and district fields are different.
        """
        if self.local_body is not None:
            self.district = self.local_body.district
        if self.district is not None:
            self.state = self.district.state

        is_create = self.pk is None
        super().save(*args, **kwargs)

        if is_create:
            FacilityUser.objects.create(facility=self, user=self.created_by, created_by=self.created_by)

    CSV_MAPPING = {
        "name": "Facility Name",
        "facility_type": "Facility Type",
        "address": "Address",
        "local_body__name": "Local Body",
        "district__name": "District",
        "state__name": "State",
        "oxygen_capacity": "Oxygen Capacity",
        "phone_number": "Phone Number",
    }

    CSV_MAKE_PRETTY = {"facility_type": (lambda x: REVERSE_FACILITY_TYPES[x])}
Esempio n. 9
0
class Branch(models.Model):
    name = models.CharField(max_length=100)
    image = models.ImageField(blank=True, null=True)
    location = LocationField(
        default=Point(51.60431839178197, 46.115950578823686))

    def __str__(self):
        return self.name
Esempio n. 10
0
class Place(models.Model):
    parent_place = models.ForeignKey('self', null=True, blank=True)
    city = models.CharField(max_length=255)
    location = LocationField(based_fields=['city'],
                             zoom=13,
                             default=Point(1.0, 1.0))
    objects = models.GeoManager()

    def __str__(self):
        return self.city
Esempio n. 11
0
class Point(DescriptionedModel):
    location = LocationField(based_fields=['name'],
                             default='POINT(0.0 0.0)',
                             verbose_name=_('location'))
    phone = PhoneNumberField(_('phone'), max_length=12)

    objects = models.GeoManager()

    class Meta:
        ordering = ('routepointm2m__point_number', )
Esempio n. 12
0
class Entity(models.Model):
    name = models.CharField(max_length=255)
    location = LocationField(based_fields=['address'],
                             zoom=7,
                             default=Point(0, 0))
    manager = models.ManyToManyField(User)
    address = models.CharField(max_length=255, null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.name
Esempio n. 13
0
class Facility(FacilityBaseModel):
    name = models.CharField(max_length=1000, blank=False, null=False)
    is_active = models.BooleanField(default=True)
    verified = models.BooleanField(default=False)
    facility_type = models.IntegerField(choices=FACILITY_TYPES)

    location = LocationField(based_fields=["address"],
                             zoom=7,
                             blank=True,
                             null=True)
    address = models.TextField()
    local_body = models.ForeignKey(LocalBody,
                                   on_delete=models.SET_NULL,
                                   null=True,
                                   blank=True)
    district = models.ForeignKey(District,
                                 on_delete=models.SET_NULL,
                                 null=True,
                                 blank=True)
    state = models.ForeignKey(State,
                              on_delete=models.SET_NULL,
                              null=True,
                              blank=True)

    oxygen_capacity = models.IntegerField(default=0)
    phone_number = models.CharField(max_length=14,
                                    blank=True,
                                    validators=[phone_number_regex])
    corona_testing = models.BooleanField(default=False)
    created_by = models.ForeignKey(User,
                                   on_delete=models.SET_NULL,
                                   null=True,
                                   blank=True)

    class Meta:
        verbose_name_plural = "Facilities"

    def __str__(self):
        return f"{self.name}"

    def save(self, *args, **kwargs) -> None:
        """
        While saving, if the local body is not null, then district will be local body's district
        Overriding save will help in a collision where the local body's district and district fields are different.
        """
        if self.local_body is not None:
            self.district = self.local_body.district
        if self.district is not None:
            self.state = self.district.state
        super().save(*args, **kwargs)
Esempio n. 14
0
class BaseLocation(models.Model):
    address = models.CharField(max_length=250)
    lat_lng = LocationField(based_fields=['address'], zoom=7)

    class Meta:
        abstract = True

    @cached_property
    def lat(self):
        return self.lat_lng.y

    @cached_property
    def lng(self):
        return self.lat_lng.x
Esempio n. 15
0
class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.DO_NOTHING,
                             related_name='orders')
    number_of_cups = models.IntegerField()
    location = LocationField(based_fields=['city'],
                             zoom=7,
                             default=Point(1.0, 1.0))
    objects = models.GeoManager()
    order_status = models.BooleanField(default=1)
    order_time = models.DateTimeField(auto_now_add=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.user.username
Esempio n. 16
0
class Company(models.Model):
    name = models.CharField(
        max_length=50, unique=True)
    hq_location = LocationField(
        blank=True, null=True)
    country = CountryField(
        blank=True, null=True)
    notes = models.TextField(
        blank=True, null=True)

    class Meta:
        verbose_name_plural = 'Companies'

    def __str__(self):
       return self.name

    @property
    def latitude(self):
        if self.hq_location:
            return self.hq_location.x
        return ''

    @property
    def longitude(self):
        if self.hq_location:
            return self.hq_location.y
        return ''

    def distilleries(self):
        try:
            return Distillery.objects.filter(owner=self).order_by('name')
        except Exception as e:
            return []
    distilleries.short_description = 'Distilleries'

    def owned_properties(self):
        try:
            distilleries = Distillery.objects.filter(owner=self).order_by('name')
            distillery_list = [f'<a href="{reverse("admin:entities_distillery_change", args=[d.pk])}">{d.name}</a>' for d in distilleries]
            return format_html('<br/>'.join(distillery_list))
        except Exception as e:
            return ''
    owned_properties.short_description = 'Owned Distilleries'

    @property
    def flag(self):
        return format_html('<img src="' + self.country.flag + '"/>')
Esempio n. 17
0
class Place(models.Model):
    chain = models.ForeignKey(Chain, related_name='places')

    city = models.CharField(max_length=255)

    plain_location = PlainLocationField(based_fields=[city],
                                        zoom=7,
                                        default=Point(1, 1))

    geo_location = LocationField(based_fields=[city],
                                 zoom=7,
                                 default=Point(1, 1),
                                 srid=3857)

    def __str__(self):
        return self.city

    def get_distance_from(self, another_place):
        return self.geo_location.distance(another_place.geo_location)
Esempio n. 18
0
class Place(models.Model):
    parent_place = models.ForeignKey('self', null=True, blank=True)
    street_address = models.CharField(max_length=255, null=True, blank=True)
    street = models.CharField(max_length=255, null=True, blank=True)
    zipcode = models.CharField(max_length=7, null=True, blank=True)
    city = models.CharField(max_length=255, null=True)
    state = models.CharField(max_length=255, null=True, blank=True)
    country = CountryField(default='US')
    location = LocationField(based_fields=['city'],
                             zoom=7,
                             default='POINT(0.0 0.0)',
                             null=True,
                             blank=True)
    objects = models.GeoManager()
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    tags = TaggableManager(blank=True)
    STATUS = Choices('', 'published')

    @property
    def coordinates(self):
        return self.location.coords

    @property
    def latitude(self):
        return '%s' % self.location.x

    @property
    def longitude(self):
        return '%s' % self.location.y

    def __str__(self):  # __unicode__ on Python 2
        return '{2} {0}, {1}'.format(self.location.x, self.location.y,
                                     self.city)

    @property
    def address(self):
        return '{0} {1}, {2}, {3}, {4} {5}'.format(self.street_address,
                                                   self.street, self.city,
                                                   self.state, self.country,
                                                   self.zipcode)
Esempio n. 19
0
class Place(models.Model):
    city = models.CharField(max_length=255)
    location = LocationField(based_fields=['city'],
                             zoom=7,
                             default=Point(21.011524200439453,
                                           52.22995487277945))
Esempio n. 20
0
class Distillery(models.Model):
    name = models.CharField(
        max_length=50, unique=True)
    slug = models.SlugField(
        blank=True, null=True)
    location = models.CharField(
        max_length=40, blank=True, null=True)
    region = models.CharField(
        max_length=40, blank=True, null=True)
    owner_name = models.CharField(
        max_length=60, blank=True, null=True)
    year_established = models.IntegerField(
        blank=True, null=True)
    year_closed = models.IntegerField(
        blank=True, null=True)
    year_demolished = models.IntegerField(
        blank=True, null=True)
    geolocation = LocationField(based_fields=['name'],
        blank=True, null=True)
    image_url = models.CharField(
        max_length=200, blank=True, null=True)
    logo_url = models.CharField(
        max_length=200, blank=True, null=True)
    owner = models.ForeignKey('Company',
        on_delete=models.SET_NULL, blank=True, null=True)
    class Meta:
        verbose_name_plural = 'Distilleries'

    def __str__(self):
       return self.name

    @property
    def latitude(self):
        return self.geolocation.x

    @property
    def longitude(self):
        return self.geolocation.y

    @property
    def coordinates(self):
        if self.geolocation:
            return format_coordinates(self.geolocation.x, self.geolocation.y)
        return '--'
    
    @property
    def image(self):
        if self.image_url:
            return self.image_url
        for scotch in Scotch.objects.filter(distillery=self):
            if scotch.image_url:
                return scotch.image_url
        return settings.PLACEHOLDER_IMAGE

    def save(self, *args, **kwargs):
        if not self.slug:
            self.slug = slugify(self.name)
        # Get or create 
        if not self.owner and self.owner_name:
            company, _ = Company.objects.get_or_create(name=self.owner_name)
            self.owner = company
        return super().save(*args, **kwargs)
Esempio n. 21
0
class details(models.Model):
    #FIR DETAILS
    ACC_ID = models.CharField(max_length=15, primary_key=True,  verbose_name = 'Accident ID')
    CIRCLE = models.ForeignKey(circles, verbose_name = 'Circle')
    DIST =  models.CharField(max_length=5, verbose_name = 'District')
    RNG = models.CharField(max_length=5, verbose_name = 'Range')
    PS = ChainedForeignKey(policestation,
        chained_field = "CIRCLE",
        chained_model_field = "CIRCLE",
        show_all=False,
        auto_choose=True,
        sort=True,
        verbose_name = 'Police Station')

    FIRNO = models.PositiveIntegerField( verbose_name = 'FIR No.', validators=[MaxValueValidator(9999), MinValueValidator(1)])
    FIR_DATE = models.DateField('FIR Date')
    DATE_OCC = models.DateField('Accident Date')
    TIME_KNOWN =models.CharField(choices=TIME_KNOWN_CHOICES, max_length = 30, verbose_name = 'Time Known')
    TIME_OCC = models.CharField(max_length=4,default='',blank=True, verbose_name = 'Time')
    OF_SECTION = models.ForeignKey(sections, verbose_name = 'Section')
    MVA_NAME =models.ForeignKey(mva_act,blank=True, null=True,verbose_name = 'MVA Act')
    ACC_PHOTO = models.FileField(upload_to='documents/',blank=True,null=True,default='', verbose_name = 'Picture of Accident ')
    ACC_PHOTO1 = models.FileField(upload_to='documents/',blank=True,null=True,default='', verbose_name = 'Picture of Accident ')
    ACC_PHOTO2 = models.FileField(upload_to='documents/',blank=True,null=True,default='', verbose_name = 'Picture of Accident ')
    ACC_PHOTO3 = models.FileField(upload_to='documents/',blank=True,null=True,default='', verbose_name = 'Picture of Accident ')
    FIR_PHOTO = models.FileField(upload_to='documents/',blank=True,null=True,default='', verbose_name = 'Picture of FIR ')
    #END OF FIR DETAILS


    NAME_IO = models.CharField(max_length=140,blank=True, default='', verbose_name = 'Name Of IO')
    PIS_NUM = models.CharField(max_length=140,blank=True, default='', verbose_name = 'PIS No.')
    MOB_NUM = models.CharField(max_length=11,blank=True, default='', verbose_name = 'Mobile No.')

    #LOCATION

    PLACE_OCC = models.CharField(max_length=140,blank=True, default='', verbose_name = 'Place of Occurence')
    map_loc = LocationField(based_fields=['PLACE_OCC'], zoom=7, verbose_name = 'Lat/Long', default=Point(77.1025, 28.7041))
    AREA =models.CharField(choices=AREA_CHOICES, max_length = 30, verbose_name = 'Area')
    ACC_SKETCH_PHOTO = models.FileField(upload_to='documents/',blank=True,null=True,default='', verbose_name = 'Sketch of Accident')
    AREA_TYPE = models.ForeignKey(area_type, verbose_name = 'Area Type')
    AREA_TYPE_OTHER = models.CharField(max_length=50,blank=True, default='', null =  True, verbose_name = 'Other Area Type')
    '''AREA_TYPE2=models.ForeignKey(area_type2, verbose_name = 'Area Type 2')
    AREA_TYPE2_OTHER=models.ForeignKey(area_type2_oth,default='',blank=True, null =  True, verbose_name = 'Other Area Type 2')'''
    AREA_TYPE2 = models.ForeignKey(location, blank=True,verbose_name = 'Location', default=11)
    ROAD = ChainedForeignKey(
        roads,
        chained_field = "CIRCLE",
        chained_model_field = "CIRCLE",
        show_all=False,
        auto_choose=True,
        sort=True,
        verbose_name = 'Road')

    ROADNAME = models.CharField(max_length=150, verbose_name = 'Road Name')
    MINORROADNAME = models.CharField(max_length=150, default='',blank=True, verbose_name = 'Minor Road')
    ROAD_LEVEL = models.CharField(choices=ROAD_LEVEL_Choices,blank=True, max_length = 30, verbose_name = 'Road Level')
    GROUND_LEVEL=models.CharField(choices=GROUND_LEVEL_Choices,blank=True, max_length = 30, verbose_name = 'Ground Level')
    FLYOVER =models.CharField(choices=FLYOVER_CHOICES, max_length = 30,blank=True, verbose_name = 'Flyover')
    UNDERPASS =models.CharField(choices=UNDERP_CHOICES, max_length = 30,blank=True, verbose_name = 'Underpass')
    JUNCTION_CONTROL=models.CharField(choices=JUNC_CTRL_Choices,blank=True, max_length = 30, verbose_name = 'Junction')
    ROAD_TYPE=models.ForeignKey(road_type, verbose_name = 'Road Type')
    ROAD_TYPE1=models.CharField(choices=ROAD_TYPE1_Choices,blank=True, max_length = 30, verbose_name = 'Road Type 1')
    SEPERATION = models.ForeignKey(seperation, verbose_name = 'Separation')
    ROAD_CHARACTER = models.ForeignKey(road_character, verbose_name = 'Character of Road')
    ROAD_CHARACTER_REMARKS= models.CharField(max_length=50,blank=True, default='', verbose_name = 'Road Character-Remarks')
    SURFACE_TYPE = models.ForeignKey(surface_type, verbose_name = 'Surface Type')
    SURFACE_CONDITION = models.ForeignKey(surface_condition, verbose_name = 'Surface Condition')
    SURFACE_CONDITION_REMARKS = models.CharField(max_length=50,blank=True, default='', verbose_name = 'Surface Condition-Remarks')
    ROAD_CONDITION = models.ForeignKey(road_condition, verbose_name = 'Road Condition')
    ROAD_CONDITION_REMARKS = models.CharField(max_length=50,blank=True, default='', verbose_name = 'Road Condition- Remarks')
    APZ = models.CharField(max_length=50,blank=True, default='', verbose_name = 'Accident Prone Zone')
    APZ_TYPE = models.CharField(max_length=50,blank=True, default='', verbose_name = 'APZ Type')
    ILLUMINATION = models.CharField(max_length=50,blank=True, choices=YES_NO_CHOICES, verbose_name = 'Illumination')
    YES_ILLUMINATION = models.CharField(max_length=50,blank=True, choices=ILLUMINATION_CHOICES, verbose_name = 'Illumination Working')
    ROAD_MARKING = models.CharField(max_length=50,blank=True, choices=ROAD_MARKING_CHOICES, verbose_name = 'Road Markings')
    ROAD_SIGN = models.CharField(max_length=50,blank=True, choices=ROAD_SIGN_CHOICES, verbose_name = 'Road Signs')



    #END OF LOCATION


    #END OF REMARKS
    #DOUBTFUL
    '''SELF_TYPE = models.ForeignKey(self_type, default=0,blank=True)
Esempio n. 22
0
class Route(DescriptionedModel):
    points = models.ManyToManyField('Point',
                                    through='RoutePointM2M',
                                    verbose_name=_('points'))
    center = LocationField(verbose_name=_('center'),
                           based_fields=['name'],
                           default='POINT(0.0 0.0)')
    saved_by = models.ManyToManyField(Tourist,
                                      through='SavedRoutes',
                                      blank=True,
                                      related_name='saved_by',
                                      verbose_name=_('saved_by'))
    tourist = models.ForeignKey(Tourist,
                                on_delete=models.CASCADE,
                                verbose_name=_('tourist'))
    popularity = models.PositiveIntegerField(_('popularity'),
                                             blank=True,
                                             null=True)
    cost = models.PositiveIntegerField(_('cost'), blank=True, null=True)
    extremality = models.PositiveSmallIntegerField(_('extremality'),
                                                   blank=True,
                                                   null=True)

    objects = models.GeoManager()

    @cached_property
    def formatted_points(self):
        data = dict(points=[])
        for p in self.tourist_points:
            point = dict(location=p.location.get_coords())
            point['name'] = p.name
            point['description'] = p.description
            data['points'].append(point)
        return data

    @cached_property
    def length(self):
        # километры
        length = sum(
            a.location.distance(b.location)
            for (a, b) in self._pairwise(self.tourist_points)) * 100
        return round(length)

    @cached_property
    def pairwised_points(self):
        """route.points.all() -> (point0, points1), (point1, point2), (point2, point3), ..."""
        return self._pairwise(self.tourist_points)

    @staticmethod
    def _pairwise(iterable):
        """iterable -> (iterable[0], iterable[1]), (iterable[1], iterable[2]), ...)"""
        a, b = tee(iterable)
        next(b, None)
        return zip(a, b)

    @cached_property
    def tourist_points(self):
        return self.points.filter(companypoint__isnull=True,
                                  adminpoint__isnull=True)

    @cached_property
    def company_points(self):
        return self.points.filter(companypoint__isnull=False,
                                  adminpoint__isnull=True)

    @cached_property
    def admin_points(self):
        return self.points.filter(adminpoint__isnull=False,
                                  companypoint__isnull=True)

    def __str__(self):
        return self.name
Esempio n. 23
0
class SpatialPlace(models.Model):
    parent_place = models.ForeignKey('self', blank=True, null=True)
    city = models.CharField(max_length=255)
    location = LocationField(based_fields=['city'], zoom=7)
Esempio n. 24
0
class Place(models.Model):
    city = models.CharField(max_length=255)
    location = LocationField(based_fields=['city'],
                             zoom=7,
                             default=Point(1.0, 1.0))
    objects = GeoManager()
Esempio n. 25
0
class Ride(models.Model):
    def __init__(self, *args, **kwargs):
        super(Ride, self).__init__(*args, **kwargs)
        self.previous_state = self.state

    state_choices = (
        ('new', 'New'),
        ('selecting', 'Selecting'),
        ('requested', 'Requested'),
        ('accepted', 'Accepted'),
        ('driving', 'Driving'),
        ('dropoff', 'Dropping Off'),
        ('payment', 'Payment'),
        ('rating', 'Rating'),
        ('declined', 'Declined'),
        ('canceled', 'Canceled'),
        ('finalized', 'Finalized'),
    )

    payment_choices = (('cash', 'Cash'), ('mpesa', 'M-Pesa'))

    customer = models.ForeignKey('delivery_api.User',
                                 related_name='customer_ride',
                                 null=True)
    driver = models.ForeignKey('delivery_api.User',
                               null=True,
                               blank=True,
                               related_name='driver_ride')

    origin_text = models.CharField(max_length=500, null=True, blank=True)
    origin = LocationField(based_fields=['origin_text'],
                           zoom=7,
                           default=Point(1.0, 1.0))

    destination_text = models.CharField(max_length=500, null=True, blank=True)
    destination = LocationField(based_fields=['destination_text'],
                                zoom=7,
                                default=Point(1.0, 1.0))

    customer_start_location = models.PointField(null=True)
    driver_start_location = models.PointField(null=True)
    ride_start_location = models.PointField(null=True)
    ride_end_location = models.PointField(null=True)

    # payout = models.ForeignKey('payouts.Payout', null=True,
    #                            related_name='payout_rides',
    #                            on_delete=models.SET_NULL)

    @property
    def start(self):
        if self.ridelog_set.filter(state='driving').count():
            return self.ridelog_set.order_by('created').filter(
                state='driving')[0].created
        if self.state in ['accepted', 'requested']:
            return now()
        return self.created

    @property
    def end(self):
        if self.ridelog_set.filter(state='dropoff').count():
            return self.ridelog_set.order_by('created').filter(
                state='dropoff')[0].created
        if self.state in ['accepted', 'driving', 'dropoff']:
            return now()
        return self.updated

    @property
    def mpesa_payment(self):
        if self.payment_set.count():
            return self.payment_set.order_by('-created').all()[0]
        return None

    state = FSMField(default='new', choices=state_choices)
    payment_method = models.CharField(max_length=30,
                                      choices=payment_choices,
                                      blank=True,
                                      null=True,
                                      verbose_name='method')

    customer_rating = models.IntegerField(null=True,
                                          blank=True,
                                          verbose_name='rating cs')
    driver_rating = models.IntegerField(null=True,
                                        blank=True,
                                        verbose_name='rating rd')

    created = CreationDateTimeField()
    updated = ModificationDateTimeField()

    fare = MoneyField(decimal_places=2,
                      max_digits=20,
                      default_currency='KES',
                      null=True)

    live_fare = MoneyField(decimal_places=2,
                           max_digits=20,
                           default_currency='KES',
                           null=True)

    driver_distance = JSONField(null=True)
    distance = JSONField(null=True)
    live_distance = JSONField(null=True)

    @property
    def route(self):
        logs = self.route_points
        return [{'lat': log.coords[1], 'lng': log.coords[0]} for log in logs]

    @property
    def route_points(self):
        points = []
        try:
            until = self.end if self.end else now()
            ls = LocationLog.objects.filter(user=self.driver,
                                            created__gte=self.start,
                                            created__lte=until)
            for l in ls.all():
                points.append(l.location)
        except ValueError:
            pass
        return points

    @property
    def waypoints_distance(self):
        prev = None
        dist = 0
        for loc in self.route_points:
            if prev:
                dist += prev.distance(loc)
            prev = loc
        return "%.1f" % (dist * 100)

    def update_route(self):
        if self.driver and self.state in ['driving', 'dropoff']:
            self.destination = self.driver.position

        if not self.destination:
            self.destination = self.origin

        if self.state in ['requested', 'accepted'] and self.origin:
            self.driver_distance = calculate_distance(self.origin,
                                                      self.driver.position)

        if self.state in ['driving', 'dropoff'
                          ] and self.origin and self.destination:
            self.live_distance = calculate_distance(self.origin,
                                                    self.driver.position)

        if not self.destination:
            self.destination = self.origin

        if self.live_distance:
            self.live_fare = Money(
                calculate_fare(self.live_distance['meters']), 'KES')

        if self.driver and self.driver.position and self.customer.position and self.state in [
                'accepted'
        ]:
            self.driver_distance = calculate_distance(self.driver.position,
                                                      self.customer.position)

        # Fare on basis of Waypoints Distance
        if self.state in ['dropoff', 'payment', 'finalized']:
            self.distance = {
                'distance': '%s km' % self.waypoints_distance,
                'duration': '-',
                'distance_meters': 1000 * float(self.waypoints_distance)
            }
            self.fare = Money(
                calculate_fare(int(1000 * float(self.waypoints_distance))),
                'KES')

    @transition(field=state, source='new', target='requested')
    def request(self):
        self.driver.state = 'requested'
        self.driver.save()

    @transition(field=state, source='requested', target='accepted')
    def accept(self):
        self.driver.state = 'driving'
        self.driver.save()

    @transition(field=state, source='new', target='declined')
    def decline(self):
        self.driver.state = 'available'
        self.driver.save()

    @transition(field=state, source='*', target='canceled')
    def cancel(self):
        self.driver.state = 'not-responding'
        self.driver.save()

    @transition(field=state, source='accepted', target='dropoff')
    def dropoff(self):
        self.driver.state = 'driving'
        self.driver.save()

    @transition(field=state, source='*', target='payment')
    def payment(self):
        self.driver.state = 'driving'
        self.driver.save()

    @transition(field=state, source='*', target='rating')
    def rate(self):
        self.driver.state = 'driving'
        self.driver.save()

    @transition(field=state, source='*', target='finalized')
    def finalize(self):
        self.driver.state = 'available'
        self.driver.save()

    @property
    def meters(self):
        try:
            return self.distance['meters']
        except KeyError:
            return 0

    @property
    def orig(self):
        return "{},{}".format(self.origin[0], self.origin[1])

    @property
    def dest(self):
        return "{},{}".format(self.destination[0], self.destination[1])

    def __unicode__(self):
        return 'Ride {0}'.format(self.id)

    def save(self, *args, **kwargs):
        self.update_route()
        if self.driver and self.state == 'new':
            self.state = 'requested'

        # If payment method
        if self.payment_method == 'cash' and self.state == 'payment':
            self.state = 'rating'

        super(Ride, self).save(*args, **kwargs)
Esempio n. 26
0
class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    forename = models.CharField(max_length=100)
    city = models.CharField(max_length=255, verbose_name='city based in')
    location = LocationField(based_fields=['city'],
                             zoom=7,
                             default=Point(1.0, 1.0))
    latitude = models.DecimalField(max_digits=10,
                                   decimal_places=6,
                                   default=0.000001)
    longitude = models.DecimalField(max_digits=10,
                                    decimal_places=6,
                                    default=0.000001)
    claim = models.CharField(max_length=100)
    phonenumber = models.CharField(max_length=20)
    app_usage = models.BooleanField(
        default=False, verbose_name='would you love to use the app')
    sex = models.CharField(choices=SEX, max_length=100)
    sexuality = models.CharField(choices=SEXUALITY,
                                 max_length=100,
                                 verbose_name='your sexuality')
    birthday = models.DateField(blank=True, null=True)
    figure = models.CharField(choices=FIGURE, max_length=100)
    height = models.PositiveIntegerField(default=0)
    bust_size = models.CharField(choices=BUST_SIZE, max_length=100)
    languages = models.CharField(choices=LANGUAGES,
                                 max_length=100,
                                 verbose_name='spoken languages')
    app_language = models.CharField(choices=APP_LANGUAGES, max_length=100)
    intrests = models.CharField(max_length=100, verbose_name='your intrests')
    best_food = models.CharField(max_length=100)
    drinks = models.CharField(max_length=100)
    occupation = models.CharField(max_length=100)
    dress_style = models.CharField(max_length=100)
    upfront_booking = models.PositiveIntegerField(default=0)
    minimum_booking = models.PositiveIntegerField(default=0)
    custom_travel_from_price = models.PositiveIntegerField(default=0)
    price = models.IntegerField(default=0)
    scent = models.CharField(max_length=100)
    rating = models.IntegerField(default=0)
    upfront_booking_for_travels = models.PositiveIntegerField(default=0)
    minimum_booking_for_travels = models.PositiveIntegerField(default=0)
    meetup_location = MultiSelectField(choices=MEETUP_LOCATIONS,
                                       max_length=100)
    description = models.CharField(max_length=100,
                                   verbose_name='brief description')
    booking_notes = models.CharField(max_length=100)
    travel_types = MultiSelectField(choices=TRAVEL_TYPES, max_length=100)
    adult = models.BooleanField(default=False,
                                verbose_name='are you over 18years of age?')
    views = models.PositiveIntegerField(default=0,
                                        verbose_name='number of views')
    profile_pic = models.ImageField(default='default.jpg',
                                    upload_to='profile_pics')

    def save(self, *args, **kwargs):
        self.latitude = self.location.y
        self.longitude = self.location.x
        super(Profile, self).save(*args, **kwargs)

    class Meta:
        verbose_name = 'Profile'
        verbose_name_plural = 'Profiles'

    def get_absolute_url(self):
        return reverse('users:user_public_profile',
                       kwargs={'user_username': self.user.username})

    def __str__(self):
        return '{} profile location : {}'.format(self.user.username, self.city)
Esempio n. 27
0
class Community(models.Model):
    suburb = models.CharField(max_length=255)
    city = models.CharField(max_length=255)
    zipcode = models.CharField(max_length=255)
    location = LocationField(based_fields=['suburb', 'city', 'zipcode'])
Esempio n. 28
0
class Company(models.Model):
    user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
    name = models.CharField(max_length=100)
    name_en = models.CharField(max_length=100)
    description = models.CharField(max_length=3000, null=True)
    logo = models.CharField(max_length=200, null=True)
    cover = models.CharField(max_length=200, null=True)
    industry = models.ForeignKey(Industry, on_delete=models.CASCADE)
    founded = models.DateField(null=True, blank=True)
    company_slug = models.SlugField(max_length=255, unique=True, db_index=True)
    benefit = models.ManyToManyField(Benefit, blank=True)
    size = models.CharField(choices=settings.OFFICE_SIZE_CHOICES, max_length=2)
    is_deleted = models.BooleanField(default=False)
    has_legal_issue = models.BooleanField(default=False)
    created = models.DateTimeField(auto_now=True)
    approved = models.BooleanField(default=False)
    user_generated = models.BooleanField(default=False)
    city = models.ForeignKey(City, on_delete=models.CASCADE)
    tell = models.CharField(max_length=14, blank=True)
    site = models.CharField(max_length=100, blank=True)
    address = models.CharField(max_length=200, blank=True)
    location_point = LocationField(based_fields=['city'], zoom=7, default=Point(0, 0), null=True, blank=True)
    working_hours_start = models.TimeField(null=True)
    working_hours_stop = models.TimeField(null=True)
    work_life_balance = models.FloatField(default=0)
    salary_benefit = models.FloatField(default=0)
    security = models.FloatField(default=0)
    management = models.IntegerField( default=0)
    culture = models.FloatField(default=0)
    over_all_rate = models.FloatField(default=0)
    salary_avg = models.FloatField(default=0)
    salary_max = models.FloatField(default=0)
    salary_min = models.FloatField(default=0)
    recommend_to_friend = models.IntegerField(default=0)
    total_review = models.IntegerField(default=0)
    total_interview = models.IntegerField(default=0)
    view = models.ManyToManyField(User, related_name='company_views')
    total_view = models.IntegerField(default=0)
    is_cheater = models.BooleanField(default=False)  # for company that try to cheat and advertise, 1 point in best company
    is_famous = models.BooleanField(default=False)  # 2 points in best company
    has_panel_moderator = models.BooleanField(default=False)  # 1 point
    is_big_company = models.BooleanField(default=False)  # 1 point
    company_score = models.FloatField(default=0)  # company rate for best company

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        cache.delete(settings.BEST_COMPANY_LIST)
        cache.delete(settings.DISCUSSED_COMPANY_LIST)
        cache.delete(settings.TOTAL_COMPANY)
        self.is_big_company = False if self.size in ['VS', 'S'] else True
        self.handle_company_score()
        for review in self.companyreview_set.all():
            review.has_legal_issue = self.has_legal_issue
            review.save()
        for interview in self.interview_set.all():
            interview.has_legal_issue = self.has_legal_issue
            interview.save()
        super().save(*args, **kwargs)

    def handle_company_score(self):
        review_count = self.companyreview_set.filter(is_deleted=False, approved=True).count()
        interview_count = self.interview_set.filter(is_deleted=False, approved=True).count()
        review_point = (review_count + interview_count)
        review_point = 20 if review_point > 20 else review_point
        review_point /= 4  # max must be 5
        bool_point = (2*self.is_famous) + self.has_panel_moderator + self.is_big_company + (not self.is_cheater)
        over_all_rate = self.companyreview_set.filter(is_deleted=False, approved=True). \
            aggregate(models.Avg('over_all_rate'))
        over_all_rate = over_all_rate['over_all_rate__avg'] if over_all_rate['over_all_rate__avg'] else 0
        self.company_score = round((bool_point + review_point + over_all_rate)/3, 1)

    @property
    def get_media(self):
        return self.logo

    def get_absolute_url(self):
        return '/company/{}'.format(self.company_slug)

    def handle_company_review_statics(self):
        result_company_review = self.companyreview_set.filter(is_deleted=False, approved=True).exclude(salary=0). \
            aggregate(models.Avg('salary'), models.Max('salary'), models.Min('salary'),
                      models.Avg('work_life_balance'), models.Avg('salary_benefit'), models.Avg('security'),
                      models.Avg('management'), models.Avg('culture'), models.Avg('over_all_rate'))
        result_list = self.companyreview_set.filter(is_deleted=False, approved=True).values_list('recommend_to_friend')
        total_result_list = len(result_list)
        total_result_list_true = len(list(filter(lambda x: x[0], result_list)))
        temp_data = {
            'total_review': total_result_list,
            'salary_avg': result_company_review['salary__avg'],
            'salary_max': result_company_review['salary__max'],
            'salary_min': result_company_review['salary__min'],
            'work_life_balance': result_company_review['work_life_balance__avg'],
            'salary_benefit': result_company_review['salary_benefit__avg'],
            'security': result_company_review['security__avg'],
            'management': result_company_review['management__avg'],
            'culture': result_company_review['culture__avg'],
            'over_all_rate': result_company_review['over_all_rate__avg'],
            'recommend_to_friend': round(total_result_list_true / total_result_list) * 100 if total_result_list else 0,
        }
        self.total_review = temp_data['total_review']
        self.salary_avg = round(temp_data['salary_avg']/1000000, 1) if temp_data['salary_avg'] else 0
        self.salary_max = round(temp_data['salary_max']/1000000, 1) if temp_data['salary_max'] else 0
        self.salary_min = round(temp_data['salary_min']/1000000, 1) if temp_data['salary_min'] else 0
        self.work_life_balance = round(temp_data['work_life_balance'], 1) if temp_data['work_life_balance'] else 0
        self.salary_benefit = round(temp_data['salary_benefit'], 1) if temp_data['salary_benefit'] else 0
        self.security = round(temp_data['security'], 1) if temp_data['security'] else 0
        self.management = round(temp_data['management'], 1) if temp_data['management'] else 0
        self.culture = round(temp_data['culture'], 1) if temp_data['culture'] else 0
        self.over_all_rate = round(temp_data['over_all_rate'], 1) if temp_data['over_all_rate'] else 0
        self.recommend_to_friend = round(temp_data['recommend_to_friend'], 2) if temp_data['recommend_to_friend'] else 0
        self.handle_company_score()
        self.save()

    def handle_company_interview_statics(self):
        self.total_interview = self.interview_set.filter(is_deleted=False, approved=True).count()
        self.handle_company_score()
        self.save()